diff --git a/substrate/CONTRIBUTING.md b/substrate/CONTRIBUTING.md
index d6b64ac752fd406fdc7f0d00f9a889a3da4447c1..4f89f5d5391396f3252548f6e8f786a53c363bed 100644
--- a/substrate/CONTRIBUTING.md
+++ b/substrate/CONTRIBUTING.md
@@ -1,4 +1,4 @@
-## `Polkadot` projects is a **OPENISH Open Source Project**
+## `Substrate` projects is a **OPENISH Open Source Project**
 -----------------------------------------
 
 ## What?
diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock
index 1adf135f0e508152ce45f7352e276934868dde31..feca17eb64a937b03d5f2b46f51b407e1532c958 100644
--- a/substrate/Cargo.lock
+++ b/substrate/Cargo.lock
@@ -1,27 +1,3 @@
-[[package]]
-name = "adder"
-version = "0.1.0"
-dependencies = [
- "polkadot-parachain 0.1.0",
- "substrate-codec-derive 0.1.0",
- "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "adder-collator"
-version = "0.1.0"
-dependencies = [
- "adder 0.1.0",
- "ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)",
- "ed25519 0.1.0",
- "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-collator 0.1.0",
- "polkadot-parachain 0.1.0",
- "polkadot-primitives 0.1.0",
-]
-
 [[package]]
 name = "aho-corasick"
 version = "0.6.4"
@@ -184,11 +160,6 @@ dependencies = [
  "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
-[[package]]
-name = "bitflags"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
 [[package]]
 name = "bitflags"
 version = "0.9.1"
@@ -1807,269 +1778,6 @@ dependencies = [
  "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
-[[package]]
-name = "polkadot"
-version = "0.3.0"
-dependencies = [
- "ctrlc 1.1.1 (git+https://github.com/paritytech/rust-ctrlc.git)",
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-cli 0.3.0",
- "vergen 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "polkadot-api"
-version = "0.1.0"
-dependencies = [
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-executor 0.1.0",
- "polkadot-primitives 0.1.0",
- "polkadot-runtime 0.1.0",
- "substrate-client 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-executor 0.1.0",
- "substrate-keyring 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-executive 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-state-machine 0.1.0",
-]
-
-[[package]]
-name = "polkadot-availability-store"
-version = "0.1.0"
-dependencies = [
- "kvdb 0.1.0 (git+https://github.com/paritytech/parity.git)",
- "kvdb-memorydb 0.1.0 (git+https://github.com/paritytech/parity.git)",
- "kvdb-rocksdb 0.1.0 (git+https://github.com/paritytech/parity.git)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-primitives 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
-]
-
-[[package]]
-name = "polkadot-cli"
-version = "0.3.0"
-dependencies = [
- "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-primitives 0.1.0",
- "polkadot-runtime 0.1.0",
- "polkadot-service 0.3.0",
- "polkadot-transaction-pool 0.1.0",
- "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-cli 0.3.0",
- "substrate-client 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-extrinsic-pool 0.1.0",
- "substrate-network 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-rpc 0.1.0",
- "substrate-rpc-servers 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-service 0.3.0",
- "substrate-state-machine 0.1.0",
- "substrate-telemetry 0.3.0",
- "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "polkadot-collator"
-version = "0.1.0"
-dependencies = [
- "ed25519 0.1.0",
- "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-api 0.1.0",
- "polkadot-cli 0.3.0",
- "polkadot-primitives 0.1.0",
- "polkadot-runtime 0.1.0",
- "substrate-client 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
- "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "polkadot-consensus"
-version = "0.1.0"
-dependencies = [
- "ed25519 0.1.0",
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "exit-future 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-api 0.1.0",
- "polkadot-availability-store 0.1.0",
- "polkadot-parachain 0.1.0",
- "polkadot-primitives 0.1.0",
- "polkadot-runtime 0.1.0",
- "polkadot-statement-table 0.1.0",
- "polkadot-transaction-pool 0.1.0",
- "rhododendron 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-bft 0.1.0",
- "substrate-client 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-keyring 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-support 0.1.0",
- "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "polkadot-executor"
-version = "0.1.0"
-dependencies = [
- "polkadot-runtime 0.1.0",
- "substrate-executor 0.1.0",
-]
-
-[[package]]
-name = "polkadot-network"
-version = "0.1.0"
-dependencies = [
- "ed25519 0.1.0",
- "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-api 0.1.0",
- "polkadot-availability-store 0.1.0",
- "polkadot-consensus 0.1.0",
- "polkadot-primitives 0.1.0",
- "rhododendron 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-bft 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "substrate-network 0.1.0",
- "substrate-primitives 0.1.0",
- "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "polkadot-parachain"
-version = "0.1.0"
-dependencies = [
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "polkadot-primitives"
-version = "0.1.0"
-dependencies = [
- "pretty_assertions 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-serializer 0.1.0",
-]
-
-[[package]]
-name = "polkadot-runtime"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-primitives 0.1.0",
- "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.70 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-keyring 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-consensus 0.1.0",
- "substrate-runtime-council 0.1.0",
- "substrate-runtime-democracy 0.1.0",
- "substrate-runtime-executive 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-session 0.1.0",
- "substrate-runtime-staking 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
- "substrate-runtime-timestamp 0.1.0",
- "substrate-runtime-version 0.1.0",
- "substrate-serializer 0.1.0",
-]
-
-[[package]]
-name = "polkadot-service"
-version = "0.3.0"
-dependencies = [
- "ed25519 0.1.0",
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-api 0.1.0",
- "polkadot-availability-store 0.1.0",
- "polkadot-consensus 0.1.0",
- "polkadot-executor 0.1.0",
- "polkadot-network 0.1.0",
- "polkadot-primitives 0.1.0",
- "polkadot-runtime 0.1.0",
- "polkadot-transaction-pool 0.1.0",
- "slog 2.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-client 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-network 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-service 0.3.0",
- "substrate-telemetry 0.3.0",
- "tokio 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "polkadot-statement-table"
-version = "0.1.0"
-dependencies = [
- "polkadot-primitives 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "substrate-primitives 0.1.0",
-]
-
-[[package]]
-name = "polkadot-transaction-pool"
-version = "0.1.0"
-dependencies = [
- "ed25519 0.1.0",
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "polkadot-api 0.1.0",
- "polkadot-primitives 0.1.0",
- "polkadot-runtime 0.1.0",
- "substrate-client 0.1.0",
- "substrate-codec 0.1.0",
- "substrate-extrinsic-pool 0.1.0",
- "substrate-keyring 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-primitives 0.1.0",
-]
-
 [[package]]
 name = "pretty_assertions"
 version = "0.4.1"
@@ -3812,15 +3520,6 @@ name = "vec_map"
 version = "0.8.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 
-[[package]]
-name = "vergen"
-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)",
-]
-
 [[package]]
 name = "version_check"
 version = "0.1.3"
@@ -3992,7 +3691,6 @@ dependencies = [
 "checksum base64 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5032d51da2741729bfdaeb2664d9b8c6d9fd1e2b90715c660b6def36628499c2"
 "checksum base64 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9263aa6a38da271eec5c91a83ce1e800f093c8535788d403d626d8d5c3f8f007"
 "checksum bigint 4.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "da1dde4308822ffaa13665757273a1b787481212f3f9b1c470a864b179a01f1b"
-"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.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789"
 "checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400"
@@ -4275,7 +3973,6 @@ dependencies = [
 "checksum varint 0.1.0 (git+https://github.com/tomaka/libp2p-rs?branch=polkadot-2)" = "<none>"
 "checksum vcpkg 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7ed0f6789c8a85ca41bbc1c9d175422116a9869bd1cf31bb08e1493ecce60380"
 "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.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d"
 "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
 "checksum wabt 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "182ae543249ccf2705f324d233891c1176fca142e137b55ba43d9dbfe93f18a2"
diff --git a/substrate/Cargo.toml b/substrate/Cargo.toml
index dbe5fde1a9e3f66590d223035834ead2b02f209b..1757e91ecabee3c5647dd70ae0f2591954691af7 100644
--- a/substrate/Cargo.toml
+++ b/substrate/Cargo.toml
@@ -1,41 +1,5 @@
-[[bin]]
-name = "polkadot"
-path = "polkadot/src/main.rs"
-
-[package]
-name = "polkadot"
-version = "0.3.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-build = "build.rs"
-
-[dependencies]
-error-chain = "0.12"
-polkadot-cli = { path = "polkadot/cli" }
-futures = "0.1"
-ctrlc = { git = "https://github.com/paritytech/rust-ctrlc.git" }
-
-[build-dependencies]
-vergen = "0.1"
-
 [workspace]
 members = [
-	"polkadot/api",
-	"polkadot/availability-store",
-	"polkadot/cli",
-	"polkadot/collator",
-	"polkadot/consensus",
-	"polkadot/executor",
-	"polkadot/network",
-	"polkadot/primitives",
-	"polkadot/runtime",
-	"polkadot/service",
-	"polkadot/statement-table",
-	"polkadot/transaction-pool",
-	"polkadot/service",
-
-	"polkadot/test-parachains/adder",
-	"polkadot/test-parachains/adder/collator",
-
 	"substrate/bft",
 	"substrate/cli",
 	"substrate/client",
@@ -80,8 +44,6 @@ members = [
 	"subkey",
 ]
 exclude = [
-	"polkadot/runtime/wasm",
-	"polkadot/test-parachains/adder/wasm",
 	"demo/runtime/wasm",
 	"substrate/executor/wasm",
 	"substrate/pwasm-alloc",
@@ -90,10 +52,10 @@ exclude = [
 ]
 
 [badges]
-travis-ci = { repository = "paritytech/polkadot", branch = "master" }
+travis-ci = { repository = "paritytech/paritysubstrate", branch = "master" }
 maintenance = { status = "actively-developed" }
-is-it-maintained-issue-resolution = { repository = "paritytech/polkadot" }
-is-it-maintained-open-issues = { repository = "paritytech/polkadot" }
+is-it-maintained-issue-resolution = { repository = "paritytech/paritysubstrate" }
+is-it-maintained-open-issues = { repository = "paritytech/paritysubstrate" }
 
 [profile.release]
 # Substrate runtime requires unwinding.
diff --git a/substrate/Dockerfile b/substrate/Dockerfile
deleted file mode 100644
index e07e647ce41c5331a49af0431c07ca523c1c7a3d..0000000000000000000000000000000000000000
--- a/substrate/Dockerfile
+++ /dev/null
@@ -1,38 +0,0 @@
-FROM phusion/baseimage:0.10.1 as builder
-LABEL maintainer "chevdor@gmail.com"
-LABEL description="This is the build stage for Polkadot. Here we create the binary."
-
-ARG PROFILE=release
-WORKDIR /polkadot
-
-COPY . /polkadot
-
-RUN apt-get update && \
-	apt-get upgrade -y && \
-	apt-get install -y cmake pkg-config libssl-dev git
-
-RUN curl https://sh.rustup.rs -sSf | sh -s -- -y && \
-	export PATH=$PATH:$HOME/.cargo/bin && \
-	cargo build --$PROFILE
-
-# ===== SECOND STAGE ======
-
-FROM phusion/baseimage:0.10.0
-LABEL maintainer "chevdor@gmail.com"
-LABEL description="This is the 2nd stage: a very small image where we copy the Polkadot binary."
-ARG PROFILE=release
-COPY --from=builder /polkadot/target/$PROFILE/polkadot /usr/local/bin
-
-RUN mv /usr/share/ca* /tmp && \
-	rm -rf /usr/share/*  && \
-	mv /tmp/ca-certificates /usr/share/ && \
-	rm -rf /usr/lib/python* && \
-	mkdir -p /root/.local/share/Polkadot && \
-	ln -s /root/.local/share/Polkadot /data
-
-RUN	rm -rf /usr/bin /usr/sbin
-
-EXPOSE 30333 9933 9944
-VOLUME ["/data"]
-
-CMD ["/usr/local/bin/polkadot"]
diff --git a/substrate/README.adoc b/substrate/README.adoc
index fca6168aa5f131259a01ea06810e59937f42f0c7..7c8be50e964ebed17f1bc0bc111d184df1e9781e 100644
--- a/substrate/README.adoc
+++ b/substrate/README.adoc
@@ -1,210 +1,4 @@
-= Polkadot
-:Author: Polkadot developers
-:Revision: 0.2.0
-:toc:
-:sectnums:
+# Substrate
 
-Implementation of a https://polkadot.network node in Rust.
-
-
-== To play
-
-If you'd like to play with Polkadot, you'll need to install a client like this
-one. First, get Rust (1.26.1 or later) and the support software if you don't already have it:
-
-[source, shell]
-----
-curl https://sh.rustup.rs -sSf | sh
-sudo apt install make clang pkg-config libssl-dev
-----
-
-Then, install Polkadot PoC-2:
-
-[source, shell]
-cargo install --git https://github.com/paritytech/polkadot.git --branch v0.2 polkadot
-
-You'll now have a `polkadot` binary installed to your `PATH`. You can drop the
-`--branch v0.2` or run `cargo install --git https://github.com/paritytech/polkadot.git polkadot`
-to get the very latest version of Polkadot, but these instructions might not work in that case.
-
-If you want a specific version of polkadot, say `0.2.2`, you may run `cargo install --git https://github.com/paritytech/polkadot.git --tag v0.2.2 polkadot`.
-
-=== Krumme Lanke Testnet
-
-You will connect to the global Krumme Lanke testnet by default. To do this, just use:
-
-[source, shell]
-polkadot
-
-If you want to do anything on it (not that there's much to do), then you'll need
-to get some Krumme Lanke DOTs. Ask in the Polkadot watercooler.
-
-=== Development
-
-You can run a simple single-node development "network" on your machine by
-running in a terminal:
-
-[source, shell]
-polkadot --dev
-
-You can muck around by cloning and building the http://github.com/paritytech/polka-ui and http://github.com/paritytech/polkadot-ui or just heading to https://polkadot.js.org/apps.
-
-
-== Local Two-node Testnet
-
-If you want to see the multi-node consensus algorithm in action locally, then
-you can create a local testnet. You'll need two terminals open. In one, run:
-
-[source, shell]
-polkadot --chain=local --validator --key Alice -d /tmp/alice
-
-and in the other, run:
-
-[source, shell]
-polkadot --chain=local --validator --key Bob -d /tmp/bob --port 30334 --bootnodes '/ip4/127.0.0.1/tcp/30333/p2p/ALICE_BOOTNODE_ID_HERE'
-
-Ensure you replace `ALICE_BOOTNODE_ID_HERE` with the node ID from the output of
-the first terminal.
-
-
-== Hacking on Polkadot
-
-If you'd actually like hack on Polkadot, you can just grab the source code and
-build it. Ensure you have Rust and the support software installed:
-
-[source, shell]
-----
-curl https://sh.rustup.rs -sSf | sh
-rustup update nightly
-rustup target add wasm32-unknown-unknown --toolchain nightly
-rustup update stable
-cargo install --git https://github.com/alexcrichton/wasm-gc
-sudo apt install cmake pkg-config libssl-dev git
-----
-
-Then, grab the Polkadot source code:
-
-[source, shell]
-----
-git clone https://github.com/paritytech/polkadot.git
-cd polkadot
-----
-
-Then build the code:
-
-[source, shell]
-----
-./scripts/build.sh  # Builds the WebAssembly binaries
-cargo build # Builds all native code
-----
-
-You can run the tests if you like:
-
-[source, shell]
-cargo test --all
-
-You can start a development chain with:
-
-[source, shell]
-cargo run -- --dev
-
-
-== Using Docker
-
-=== The easiest way
-
-The easiest/faster option is to use the latest image.
-
-
-.First run
-Let´s first check the version we have. The first time you run this command, the polkadot docker image will be downloaded. This takes a bit of time and bandwidth, be patient:
-
-[source, shell]
-docker run --rm -it chevdor/polkadot:latest polkadot --version
-
-
-.Polkadot arguments
-You can also pass any argument/flag that polkadot supports:
-
-[source, shell]
-docker run --rm -it chevdor/polkadot:latest polkadot --name "PolkaDocker"
-
-
-.Run as deamon
-Once you are done experimenting and picking the best node name :) you can start polkadot as daemon, exposes the polkadot ports and mount a volume that will keep your blockchain data locally:
-
-[source, shell]
-docker run -d -p 30333:30333 -p 9933:9933 -p 9944:9944 -v /my/local/folder:/data chevdor/polkadot:latest polkadot
-
-.Docker image update
-If you have an image such as `latest` locally, docker will *not* bother downloading the very latest that may be available.
-To update:
-
-- stop and delete your containers (`docker stop ...` `docker rm ...`)
-- delete your previous image (`docker rmi chevdor/polkadot:latest`)
-- run as daemon again, the very latest image will be downloaded again
-
-=== Build your own image
-
-To get up and running with the smallest footprint on your system, you may use the Polkadot Docker image.
-You can either build it yourself (it takes a while...):
-
-[source, shell]
-----
-./docker/build.sh
-----
-
-=== Reporting issues
-
-If you run into issues with polkadot when using docker, please run the following command
-(replace the tag with the appropriate one if you do not use latest):
-
-[source, shell]
-docker run --rm -it chevdor/polkadot:latest polkadot --version
-
-This will show you the polkadot version as well as the git commit ref that was used to build your container.
-Just paste that in the issue you create.
-
-
-== Shell completion
-
-The Polkadot cli command supports shell auto-completion. For this to work, you will need to run the completion script matching you build and system.
-
-Assuming you built a release version using `cargo build --release` and use `bash` run the following:
-
-[source, shell]
-source target/release/completion-scripts/polkadot.bash
-
-You can find completion scripts for:
-- bash
-- fish
-- zsh
-- elvish
-- powershell
-
-To make this change persistent, you can proceed as follow:
-
-=== First install
-
-[source, shell]
-----
-COMPL_DIR=$HOME/.completion
-mkdir -p $COMPL_DIR
-cp -f target/release/completion-scripts/polkadot.bash $COMPL_DIR/
-echo "source $COMPL_DIR/polkadot.bash" >> $HOME/.bash_profile
-source $HOME/.bash_profile
-----
-
-=== Update
-
-When you build a new version of Polkadot, the following will ensure you auto-completion script matches the current binary:
-
-[source, shell]
-----
-COMPL_DIR=$HOME/.completion
-mkdir -p $COMPL_DIR
-cp -f target/release/completion-scripts/polkadot.bash $COMPL_DIR/
-source $HOME/.bash_profile
-----
-
-include::doc/packages.adoc[]
+Framework for blockchain innovators.
+More to come here.
diff --git a/substrate/license_header.txt b/substrate/license_header.txt
index aa68deee6db314bdc9faa91877a76533dd25fa75..2ec89c3d9707bc9c677a55c187a8693026951b9f 100644
--- a/substrate/license_header.txt
+++ b/substrate/license_header.txt
@@ -1,15 +1,15 @@
 // Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
+// This file is part of Substrate.
 
-// Polkadot is free software: you can redistribute it and/or modify
+// Substrate 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.
 
-// Polkadot is distributed in the hope that it will be useful,
+// Substrate 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
\ No newline at end of file
+// along with Substrate.  If not, see <http://www.gnu.org/licenses/>.
diff --git a/substrate/polkadot/api/Cargo.toml b/substrate/polkadot/api/Cargo.toml
deleted file mode 100644
index 7b5015b99130cf91051b02f1641b7f5ee5e85bed..0000000000000000000000000000000000000000
--- a/substrate/polkadot/api/Cargo.toml
+++ /dev/null
@@ -1,21 +0,0 @@
-[package]
-name = "polkadot-api"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-error-chain = "0.12"
-polkadot-executor = { path = "../executor" }
-polkadot-runtime = { path = "../runtime" }
-polkadot-primitives = { path = "../primitives" }
-substrate-codec = { path = "../../substrate/codec" }
-substrate-runtime-io = { path = "../../substrate/runtime-io" }
-substrate-runtime-executive = { path  = "../../substrate/runtime/executive" }
-substrate-runtime-primitives = { path  = "../../substrate/runtime/primitives" }
-substrate-client = { path = "../../substrate/client" }
-substrate-primitives = { path = "../../substrate/primitives" }
-substrate-executor = { path = "../../substrate/executor" }
-substrate-state-machine = { path = "../../substrate/state-machine" }
-
-[dev-dependencies]
-substrate-keyring = { path = "../../substrate/keyring" }
diff --git a/substrate/polkadot/api/README.adoc b/substrate/polkadot/api/README.adoc
deleted file mode 100644
index 8f382d4f439198de1629393d56194dd5a4f4d897..0000000000000000000000000000000000000000
--- a/substrate/polkadot/api/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot API
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/api/src/full.rs b/substrate/polkadot/api/src/full.rs
deleted file mode 100644
index 5358e1bd3a39e01ffcd830f49c2a9c001bcbae5e..0000000000000000000000000000000000000000
--- a/substrate/polkadot/api/src/full.rs
+++ /dev/null
@@ -1,262 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Strongly typed API for full Polkadot client.
-
-use client::backend::LocalBackend;
-use client::block_builder::BlockBuilder as ClientBlockBuilder;
-use client::{Client, LocalCallExecutor};
-use polkadot_executor::Executor as LocalDispatch;
-use substrate_executor::NativeExecutor;
-use state_machine;
-
-use runtime::Address;
-use runtime_primitives::traits::AuxLookup;
-use primitives::{
-	AccountId, Block, Header, BlockId, Hash, Index, InherentData,
-	SessionKey, Timestamp, UncheckedExtrinsic,
-};
-use primitives::parachain::{DutyRoster, Id as ParaId};
-
-use {BlockBuilder, PolkadotApi, LocalPolkadotApi, ErrorKind, Error, Result};
-
-// set up the necessary scaffolding to execute a set of calls to the runtime.
-// this creates a new block on top of the given ID and initialises it.
-macro_rules! with_runtime {
-	($client: ident, $at: expr, $exec: expr) => {{
-		let parent = $at;
-		let header = Header {
-			parent_hash: $client.block_hash_from_id(&parent)?
-				.ok_or_else(|| ErrorKind::UnknownBlock(format!("{:?}", parent)))?,
-			number: $client.block_number_from_id(&parent)?
-				.ok_or_else(|| ErrorKind::UnknownBlock(format!("{:?}", parent)))? + 1,
-			state_root: Default::default(),
-			extrinsics_root: Default::default(),
-			digest: Default::default(),
-		};
-
-		$client.state_at(&parent).map_err(Error::from).and_then(|state| {
-			let mut changes = Default::default();
-			let mut ext = state_machine::Ext::new(&mut changes, &state);
-
-			::substrate_executor::with_native_environment(&mut ext, || {
-				::runtime::Executive::initialise_block(&header);
-				($exec)()
-			}).map_err(Into::into)
-		})
-	}}
-}
-
-impl<B: LocalBackend<Block>> BlockBuilder for ClientBlockBuilder<B, LocalCallExecutor<B, NativeExecutor<LocalDispatch>>, Block> {
-	fn push_extrinsic(&mut self, extrinsic: UncheckedExtrinsic) -> Result<()> {
-		self.push(extrinsic).map_err(Into::into)
-	}
-
-	/// Bake the block with provided extrinsics.
-	fn bake(self) -> Result<Block> {
-		ClientBlockBuilder::bake(self).map_err(Into::into)
-	}
-}
-
-impl<B: LocalBackend<Block>> PolkadotApi for Client<B, LocalCallExecutor<B, NativeExecutor<LocalDispatch>>, Block> {
-	type BlockBuilder = ClientBlockBuilder<B, LocalCallExecutor<B, NativeExecutor<LocalDispatch>>, Block>;
-
-	fn session_keys(&self, at: &BlockId) -> Result<Vec<SessionKey>> {
-		with_runtime!(self, at, ::runtime::Consensus::authorities)
-	}
-
-	fn validators(&self, at: &BlockId) -> Result<Vec<AccountId>> {
-		with_runtime!(self, at, ::runtime::Session::validators)
-	}
-
-	fn random_seed(&self, at: &BlockId) -> Result<Hash> {
-		with_runtime!(self, at, ::runtime::System::random_seed)
-	}
-
-	fn duty_roster(&self, at: &BlockId) -> Result<DutyRoster> {
-		with_runtime!(self, at, ::runtime::Parachains::calculate_duty_roster)
-	}
-
-	fn timestamp(&self, at: &BlockId) -> Result<Timestamp> {
-		with_runtime!(self, at, ::runtime::Timestamp::get)
-	}
-
-	fn evaluate_block(&self, at: &BlockId, block: Block) -> Result<bool> {
-		use substrate_executor::error::ErrorKind as ExecErrorKind;
-		use codec::{Decode, Encode};
-		use runtime::Block as RuntimeBlock;
-
-		let encoded = block.encode();
-		let runtime_block = match RuntimeBlock::decode(&mut &encoded[..]) {
-			Some(x) => x,
-			None => return Ok(false),
-		};
-
-		let res = with_runtime!(self, at, || ::runtime::Executive::execute_block(runtime_block));
-		match res {
-			Ok(()) => Ok(true),
-			Err(err) => match err.kind() {
-				&ErrorKind::Executor(ExecErrorKind::Runtime) => Ok(false),
-				_ => Err(err)
-			}
-		}
-	}
-
-	fn index(&self, at: &BlockId, account: AccountId) -> Result<Index> {
-		with_runtime!(self, at, || ::runtime::System::account_nonce(account))
-	}
-
-	fn lookup(&self, at: &BlockId, address: Address) -> Result<Option<AccountId>> {
-		with_runtime!(self, at, || <::runtime::Staking as AuxLookup>::lookup(address).ok())
-	}
-
-	fn active_parachains(&self, at: &BlockId) -> Result<Vec<ParaId>> {
-		with_runtime!(self, at, ::runtime::Parachains::active_parachains)
-	}
-
-	fn parachain_code(&self, at: &BlockId, parachain: ParaId) -> Result<Option<Vec<u8>>> {
-		with_runtime!(self, at, || ::runtime::Parachains::parachain_code(parachain))
-	}
-
-	fn parachain_head(&self, at: &BlockId, parachain: ParaId) -> Result<Option<Vec<u8>>> {
-		with_runtime!(self, at, || ::runtime::Parachains::parachain_head(parachain))
-	}
-
-	fn build_block(&self, at: &BlockId, inherent_data: InherentData) -> Result<Self::BlockBuilder> {
-		let mut block_builder = self.new_block_at(at)?;
-		for inherent in self.inherent_extrinsics(at, inherent_data)? {
-			block_builder.push(inherent)?;
-		}
-
-		Ok(block_builder)
-	}
-
-	fn inherent_extrinsics(&self, at: &BlockId, inherent_data: InherentData) -> Result<Vec<UncheckedExtrinsic>> {
-		use codec::{Encode, Decode};
-
-		with_runtime!(self, at, || {
-			let extrinsics = ::runtime::inherent_extrinsics(inherent_data);
-			extrinsics.into_iter()
-				.map(|x| x.encode()) // get encoded representation
-				.map(|x| Decode::decode(&mut &x[..])) // get byte-vec equivalent to extrinsic
-				.map(|x| x.expect("UncheckedExtrinsic has encoded representation equivalent to Vec<u8>; qed"))
-				.collect()
-		})
-	}
-}
-
-impl<B: LocalBackend<Block>> LocalPolkadotApi for Client<B, LocalCallExecutor<B, NativeExecutor<LocalDispatch>>, Block>
-{}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use keyring::Keyring;
-	use client::LocalCallExecutor;
-	use client::in_mem::Backend as InMemory;
-	use substrate_executor::NativeExecutionDispatch;
-	use runtime::{GenesisConfig, ConsensusConfig, SessionConfig};
-
-	fn validators() -> Vec<AccountId> {
-		vec![
-			Keyring::One.to_raw_public().into(),
-			Keyring::Two.to_raw_public().into(),
-		]
-	}
-
-	fn session_keys() -> Vec<SessionKey> {
-		vec![
-			Keyring::One.to_raw_public().into(),
-			Keyring::Two.to_raw_public().into(),
-		]
-	}
-
-	fn client() -> Client<InMemory<Block>, LocalCallExecutor<InMemory<Block>, NativeExecutor<LocalDispatch>>, Block> {
-		let genesis_config = GenesisConfig {
-			consensus: Some(ConsensusConfig {
-				code: LocalDispatch::native_equivalent().to_vec(),
-				authorities: session_keys(),
-			}),
-			system: None,
-			session: Some(SessionConfig {
-				validators: validators(),
-				session_length: 100,
-				broken_percent_late: 100,
-			}),
-			council: Some(Default::default()),
-			democracy: Some(Default::default()),
-			parachains: Some(Default::default()),
-			staking: Some(Default::default()),
-			timestamp: Some(Default::default()),
-		};
-
-		::client::new_in_mem(LocalDispatch::with_heap_pages(8), genesis_config).unwrap()
-	}
-
-	#[test]
-	fn gets_session_and_validator_keys() {
-		let client = client();
-		let id = BlockId::number(0);
-		assert_eq!(client.session_keys(&id).unwrap(), session_keys());
-		assert_eq!(client.validators(&id).unwrap(), validators());
-	}
-
-	#[test]
-	fn build_block_implicit_succeeds() {
-		let client = client();
-
-		let id = BlockId::number(0);
-		let block_builder = client.build_block(&id, InherentData {
-			timestamp: 1_000_000,
-			parachain_heads: Vec::new(),
-			offline_indices: Vec::new(),
-		}).unwrap();
-		let block = block_builder.bake().unwrap();
-
-		assert_eq!(block.header.number, 1);
-		assert!(block.header.extrinsics_root != Default::default());
-	}
-
-	#[test]
-	fn build_block_with_inherent_succeeds() {
-		let client = client();
-
-		let id = BlockId::number(0);
-		let inherent = client.inherent_extrinsics(&id, InherentData {
-			timestamp: 1_000_000,
-			parachain_heads: Vec::new(),
-			offline_indices: Vec::new(),
-		}).unwrap();
-
-		let mut block_builder = client.new_block_at(&id).unwrap();
-		for extrinsic in inherent {
-			block_builder.push(extrinsic).unwrap();
-		}
-
-		let block = block_builder.bake().unwrap();
-
-		assert_eq!(block.header.number, 1);
-		assert!(block.header.extrinsics_root != Default::default());
-	}
-
-	#[test]
-	fn gets_random_seed_with_genesis() {
-		let client = client();
-
-		let id = BlockId::number(0);
-		assert!(client.random_seed(&id).is_ok());
-	}
-}
diff --git a/substrate/polkadot/api/src/lib.rs b/substrate/polkadot/api/src/lib.rs
deleted file mode 100644
index 8c1e4b1de832e7f368bb3d0c48719ca8e349c070..0000000000000000000000000000000000000000
--- a/substrate/polkadot/api/src/lib.rs
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Strongly typed API for Polkadot based around the locally-compiled native
-//! runtime.
-
-extern crate polkadot_executor;
-extern crate polkadot_primitives as primitives;
-extern crate polkadot_runtime as runtime;
-extern crate substrate_codec as codec;
-extern crate substrate_runtime_io as runtime_io;
-extern crate substrate_client as client;
-extern crate substrate_executor as substrate_executor;
-extern crate substrate_runtime_executive;
-extern crate substrate_primitives;
-extern crate substrate_runtime_primitives as runtime_primitives;
-extern crate substrate_state_machine as state_machine;
-
-#[macro_use]
-extern crate error_chain;
-
-#[cfg(test)]
-extern crate substrate_keyring as keyring;
-
-pub mod full;
-pub mod light;
-
-use primitives::{
-	AccountId, Block, BlockId, Hash, Index, SessionKey, Timestamp,
-	UncheckedExtrinsic, InherentData,
-};
-use runtime::Address;
-use primitives::parachain::{DutyRoster, Id as ParaId};
-
-error_chain! {
-	errors {
-		/// Unknown runtime code.
-		UnknownRuntime {
-			description("Unknown runtime code")
-			display("Unknown runtime code")
-		}
-		/// Unknown block ID.
-		UnknownBlock(b: String) {
-			description("Unknown block")
-			display("Unknown block {}", b)
-		}
-		/// Some other error.
-		// TODO: allow to be specified as associated type of PolkadotApi
-		Other(e: Box<::std::error::Error + Send>) {
-			description("Other error")
-			display("Other error: {}", e.description())
-		}
-	}
-
-	links {
-		Executor(substrate_executor::error::Error, substrate_executor::error::ErrorKind);
-	}
-}
-
-impl From<client::error::Error> for Error {
-	fn from(e: client::error::Error) -> Error {
-		match e {
-			client::error::Error(client::error::ErrorKind::UnknownBlock(b), _) => Error::from_kind(ErrorKind::UnknownBlock(b)),
-			other => Error::from_kind(ErrorKind::Other(Box::new(other) as Box<_>)),
-		}
-	}
-}
-
-/// Build new blocks.
-pub trait BlockBuilder {
-	/// Push an extrinsic onto the block. Fails if the extrinsic is invalid.
-	fn push_extrinsic(&mut self, extrinsic: UncheckedExtrinsic) -> Result<()>;
-
-	/// Bake the block with provided extrinsics.
-	fn bake(self) -> Result<Block>;
-}
-
-/// Trait encapsulating the Polkadot API.
-///
-/// All calls should fail when the exact runtime is unknown.
-pub trait PolkadotApi {
-	/// The block builder for this API type.
-	type BlockBuilder: BlockBuilder;
-
-	/// Get session keys at a given block.
-	fn session_keys(&self, at: &BlockId) -> Result<Vec<SessionKey>>;
-
-	/// Get validators at a given block.
-	fn validators(&self, at: &BlockId) -> Result<Vec<AccountId>>;
-
-	/// Get the value of the randomness beacon at a given block.
-	fn random_seed(&self, at: &BlockId) -> Result<Hash>;
-
-	/// Get the authority duty roster at a block.
-	fn duty_roster(&self, at: &BlockId) -> Result<DutyRoster>;
-
-	/// Get the timestamp registered at a block.
-	fn timestamp(&self, at: &BlockId) -> Result<Timestamp>;
-
-	/// Get the nonce (né index) of an account at a block.
-	fn index(&self, at: &BlockId, account: AccountId) -> Result<Index>;
-
-	/// Get the account id of an address at a block.
-	fn lookup(&self, at: &BlockId, address: Address) -> Result<Option<AccountId>>;
-
-	/// Get the active parachains at a block.
-	fn active_parachains(&self, at: &BlockId) -> Result<Vec<ParaId>>;
-
-	/// Get the validation code of a parachain at a block. If the parachain is active, this will always return `Some`.
-	fn parachain_code(&self, at: &BlockId, parachain: ParaId) -> Result<Option<Vec<u8>>>;
-
-	/// Get the chain head of a parachain. If the parachain is active, this will always return `Some`.
-	fn parachain_head(&self, at: &BlockId, parachain: ParaId) -> Result<Option<Vec<u8>>>;
-
-	/// Evaluate a block. Returns true if the block is good, false if it is known to be bad,
-	/// and an error if we can't evaluate for some reason.
-	fn evaluate_block(&self, at: &BlockId, block: Block) -> Result<bool>;
-
-	/// Build a block on top of the given, with inherent extrinsics pre-pushed.
-	fn build_block(&self, at: &BlockId, inherent_data: InherentData) -> Result<Self::BlockBuilder>;
-
-	/// Attempt to produce the (encoded) inherent extrinsics for a block being built upon the given.
-	/// This may vary by runtime and will fail if a runtime doesn't follow the same API.
-	fn inherent_extrinsics(&self, at: &BlockId, inherent_data: InherentData) -> Result<Vec<UncheckedExtrinsic>>;
-}
-
-/// Mark for all Polkadot API implementations, that are making use of state data, stored locally.
-pub trait LocalPolkadotApi: PolkadotApi {}
-
-/// Mark for all Polkadot API implementations, that are fetching required state data from remote nodes.
-pub trait RemotePolkadotApi: PolkadotApi {}
diff --git a/substrate/polkadot/api/src/light.rs b/substrate/polkadot/api/src/light.rs
deleted file mode 100644
index a281cde6e3a5882fcbbac00bc72ed3ef592ae26c..0000000000000000000000000000000000000000
--- a/substrate/polkadot/api/src/light.rs
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Strongly typed API for light Polkadot client.
-
-use std::sync::Arc;
-use client::backend::{Backend, RemoteBackend};
-use client::{Client, CallExecutor};
-use codec::Decode;
-use primitives::{
-	AccountId, Block, BlockId, Hash, Index, InherentData,
-	SessionKey, Timestamp, UncheckedExtrinsic,
-};
-use runtime::Address;
-use primitives::parachain::{DutyRoster, Id as ParaId};
-use {PolkadotApi, BlockBuilder, RemotePolkadotApi, Result, ErrorKind};
-
-/// Light block builder. TODO: make this work (efficiently)
-#[derive(Clone, Copy)]
-pub struct LightBlockBuilder;
-
-impl BlockBuilder for LightBlockBuilder {
-	fn push_extrinsic(&mut self, _xt: UncheckedExtrinsic) -> Result<()> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn bake(self) -> Result<Block> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-}
-
-/// Remote polkadot API implementation.
-pub struct RemotePolkadotApiWrapper<B: Backend<Block>, E: CallExecutor<Block>>(pub Arc<Client<B, E, Block>>);
-
-impl<B: Backend<Block>, E: CallExecutor<Block>> PolkadotApi for RemotePolkadotApiWrapper<B, E> {
-	type BlockBuilder = LightBlockBuilder;
-
-	fn session_keys(&self, at: &BlockId) -> Result<Vec<SessionKey>> {
-		self.0.executor().call(at, "authorities", &[])
-			.and_then(|r| Vec::<SessionKey>::decode(&mut &r.return_data[..])
-				.ok_or("error decoding session keys".into()))
-			.map_err(Into::into)
-	}
-
-	fn validators(&self, _at: &BlockId) -> Result<Vec<AccountId>> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn random_seed(&self, _at: &BlockId) -> Result<Hash> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn duty_roster(&self, _at: &BlockId) -> Result<DutyRoster> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn timestamp(&self, _at: &BlockId) -> Result<Timestamp> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn evaluate_block(&self, _at: &BlockId, _block: Block) -> Result<bool> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn index(&self, _at: &BlockId, _account: AccountId) -> Result<Index> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn lookup(&self, _at: &BlockId, _address: Address) -> Result<Option<AccountId>> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn active_parachains(&self, _at: &BlockId) -> Result<Vec<ParaId>> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn parachain_code(&self, _at: &BlockId, _parachain: ParaId) -> Result<Option<Vec<u8>>> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn parachain_head(&self, _at: &BlockId, _parachain: ParaId) -> Result<Option<Vec<u8>>> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn build_block(&self, _at: &BlockId, _inherent: InherentData) -> Result<Self::BlockBuilder> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-
-	fn inherent_extrinsics(&self, _at: &BlockId, _inherent: InherentData) -> Result<Vec<Vec<u8>>> {
-		Err(ErrorKind::UnknownRuntime.into())
-	}
-}
-
-impl<B: RemoteBackend<Block>, E: CallExecutor<Block>> RemotePolkadotApi for RemotePolkadotApiWrapper<B, E> {}
diff --git a/substrate/polkadot/availability-store/Cargo.toml b/substrate/polkadot/availability-store/Cargo.toml
deleted file mode 100644
index 9a926310b04b4596f1d9eb76753129f0386de89a..0000000000000000000000000000000000000000
--- a/substrate/polkadot/availability-store/Cargo.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-[package]
-name = "polkadot-availability-store"
-description = "Persistent database for parachain data"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-polkadot-primitives = { path = "../primitives" }
-parking_lot = "0.4"
-log = "0.3"
-substrate-codec = { path = "../../substrate/codec" }
-substrate-primitives = { path = "../../substrate/primitives" }
-kvdb = { git = "https://github.com/paritytech/parity.git" }
-kvdb-rocksdb = { git = "https://github.com/paritytech/parity.git" }
-kvdb-memorydb = { git = "https://github.com/paritytech/parity.git" }
diff --git a/substrate/polkadot/availability-store/src/lib.rs b/substrate/polkadot/availability-store/src/lib.rs
deleted file mode 100644
index 33ace5794cfe75e3120705325473b2e4a80a2439..0000000000000000000000000000000000000000
--- a/substrate/polkadot/availability-store/src/lib.rs
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2018 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Persistent database for parachain data.
-
-extern crate polkadot_primitives;
-extern crate parking_lot;
-extern crate substrate_codec as codec;
-extern crate substrate_primitives;
-extern crate kvdb;
-extern crate kvdb_rocksdb;
-extern crate kvdb_memorydb;
-
-#[macro_use]
-extern crate log;
-
-use codec::{Encode, Decode};
-use kvdb::{KeyValueDB, DBTransaction};
-use kvdb_rocksdb::{Database, DatabaseConfig};
-use polkadot_primitives::Hash;
-use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic};
-
-use std::collections::HashSet;
-use std::path::PathBuf;
-use std::sync::Arc;
-use std::io;
-
-mod columns {
-	pub const DATA: Option<u32> = Some(0);
-	pub const META: Option<u32> = Some(1);
-	pub const NUM_COLUMNS: u32 = 2;
-}
-
-/// Configuration for the availability store.
-pub struct Config {
-	/// Cache size in bytes. If `None` default is used.
-	pub cache_size: Option<usize>,
-	/// Path to the database.
-	pub path: PathBuf,
-}
-
-/// Some data to keep available.
-pub struct Data {
-	/// The relay chain parent hash this should be localized to.
-	pub relay_parent: Hash,
-	/// The parachain index for this candidate.
-	pub parachain_id: ParaId,
-	/// Unique candidate receipt hash.
-	pub candidate_hash: Hash,
-	/// Block data.
-	pub block_data: BlockData,
-	/// Extrinsic data.
-	pub extrinsic: Option<Extrinsic>,
-}
-
-fn extract_io_err(err: ::kvdb::Error) -> io::Error {
-	match err {
-		::kvdb::Error(::kvdb::ErrorKind::Io(io_err), _) => io_err,
-		::kvdb::Error(::kvdb::ErrorKind::Msg(msg), _) => io::Error::new(
-			io::ErrorKind::Other,
-			msg,
-		),
-		x => io::Error::new(
-			io::ErrorKind::Other,
-			format!("Unexpected error variant: {:?}", x), // only necessary because of nonexaustive match.
-		)
-	}
-}
-
-fn block_data_key(relay_parent: &Hash, candidate_hash: &Hash) -> Vec<u8> {
-	(relay_parent, candidate_hash, 0i8).encode()
-}
-
-fn extrinsic_key(relay_parent: &Hash, candidate_hash: &Hash) -> Vec<u8> {
-	(relay_parent, candidate_hash, 1i8).encode()
-}
-
-/// Handle to the availability store.
-#[derive(Clone)]
-pub struct Store {
-	inner: Arc<KeyValueDB>,
-}
-
-impl Store {
-	/// Create a new `Store` with given config on disk.
-	pub fn new(config: Config) -> io::Result<Self> {
-		let mut db_config = DatabaseConfig::with_columns(Some(columns::NUM_COLUMNS));
-		db_config.memory_budget = config.cache_size;
-		db_config.wal = true;
-
-		let path = config.path.to_str().ok_or_else(|| io::Error::new(
-			io::ErrorKind::Other,
-			format!("Bad database path: {:?}", config.path),
-		))?;
-
-		let db = Database::open(&db_config, &path).map_err(extract_io_err)?;
-
-		Ok(Store {
-			inner: Arc::new(db),
-		})
-	}
-
-	/// Create a new `Store` in-memory. Useful for tests.
-	pub fn new_in_memory() -> Self {
-		Store {
-			inner: Arc::new(::kvdb_memorydb::create(::columns::NUM_COLUMNS)),
-		}
-	}
-
-	/// Make some data available provisionally.
-	pub fn make_available(&self, data: Data) -> io::Result<()> {
-		let mut tx = DBTransaction::new();
-
-		// note the meta key.
-		let mut v = match self.inner.get(columns::META, &*data.relay_parent) {
-			Ok(Some(raw)) => Vec::decode(&mut &raw[..]).expect("all stored data serialized correctly; qed"),
-			Ok(None) => Vec::new(),
-			Err(e) => {
-				warn!(target: "availability", "Error reading from availability store: {:?}", e);
-				Vec::new()
-			}
-		};
-
-		v.push(data.candidate_hash);
-		tx.put_vec(columns::META, &data.relay_parent[..], v.encode());
-
-		tx.put_vec(
-			columns::DATA,
-			block_data_key(&data.relay_parent, &data.candidate_hash).as_slice(),
-			data.block_data.encode()
-		);
-
-		if let Some(_extrinsic) = data.extrinsic {
-			tx.put_vec(
-				columns::DATA,
-				extrinsic_key(&data.relay_parent, &data.candidate_hash).as_slice(),
-				vec![],
-			);
-		}
-
-		self.inner.write(tx).map_err(extract_io_err)
-	}
-
-	/// Note that a set of candidates have been included in a finalized block with given hash and parent hash.
-	pub fn candidates_finalized(&self, parent: Hash, finalized_candidates: HashSet<Hash>) -> io::Result<()> {
-		let mut tx = DBTransaction::new();
-
-		let v = match self.inner.get(columns::META, &parent[..]) {
-			Ok(Some(raw)) => Vec::decode(&mut &raw[..]).expect("all stored data serialized correctly; qed"),
-			Ok(None) => Vec::new(),
-			Err(e) => {
-				warn!(target: "availability", "Error reading from availability store: {:?}", e);
-				Vec::new()
-			}
-		};
-		tx.delete(columns::META, &parent[..]);
-
-		for candidate_hash in v {
-			if !finalized_candidates.contains(&candidate_hash) {
-				tx.delete(columns::DATA, block_data_key(&parent, &candidate_hash).as_slice());
-				tx.delete(columns::DATA, extrinsic_key(&parent, &candidate_hash).as_slice());
-			}
-		}
-
-		self.inner.write(tx).map_err(extract_io_err)
-	}
-
-	/// Query block data.
-	pub fn block_data(&self, relay_parent: Hash, candidate_hash: Hash) -> Option<BlockData> {
-		let encoded_key = block_data_key(&relay_parent, &candidate_hash);
-		match self.inner.get(columns::DATA, &encoded_key[..]) {
-			Ok(Some(raw)) => Some(
-				BlockData::decode(&mut &raw[..]).expect("all stored data serialized correctly; qed")
-			),
-			Ok(None) => None,
-			Err(e) => {
-				warn!(target: "availability", "Error reading from availability store: {:?}", e);
-				None
-			}
-		}
-	}
-
-	/// Query extrinsic data.
-	pub fn extrinsic(&self, relay_parent: Hash, candidate_hash: Hash) -> Option<Extrinsic> {
-		let encoded_key = extrinsic_key(&relay_parent, &candidate_hash);
-		match self.inner.get(columns::DATA, &encoded_key[..]) {
-			Ok(Some(_raw)) => Some(Extrinsic),
-			Ok(None) => None,
-			Err(e) => {
-				warn!(target: "availability", "Error reading from availability store: {:?}", e);
-				None
-			}
-		}
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-
-	#[test]
-	fn finalization_removes_unneeded() {
-		let relay_parent = [1; 32].into();
-
-		let para_id_1 = 5.into();
-		let para_id_2 = 6.into();
-
-		let candidate_1 = [2; 32].into();
-		let candidate_2 = [3; 32].into();
-
-		let block_data_1 = BlockData(vec![1, 2, 3]);
-		let block_data_2 = BlockData(vec![4, 5, 6]);
-
-		let store = Store::new_in_memory();
-		store.make_available(Data {
-			relay_parent,
-			parachain_id: para_id_1,
-			candidate_hash: candidate_1,
-			block_data: block_data_1.clone(),
-			extrinsic: Some(Extrinsic),
-		}).unwrap();
-
-		store.make_available(Data {
-			relay_parent,
-			parachain_id: para_id_2,
-			candidate_hash: candidate_2,
-			block_data: block_data_2.clone(),
-			extrinsic: Some(Extrinsic),
-		}).unwrap();
-
-		assert_eq!(store.block_data(relay_parent, candidate_1).unwrap(), block_data_1);
-		assert_eq!(store.block_data(relay_parent, candidate_2).unwrap(), block_data_2);
-
-		assert!(store.extrinsic(relay_parent, candidate_1).is_some());
-		assert!(store.extrinsic(relay_parent, candidate_2).is_some());
-
-		store.candidates_finalized(relay_parent, [candidate_1].iter().cloned().collect()).unwrap();
-
-		assert_eq!(store.block_data(relay_parent, candidate_1).unwrap(), block_data_1);
-		assert!(store.block_data(relay_parent, candidate_2).is_none());
-
-		assert!(store.extrinsic(relay_parent, candidate_1).is_some());
-		assert!(store.extrinsic(relay_parent, candidate_2).is_none());
-	}
-}
diff --git a/substrate/polkadot/cli/Cargo.toml b/substrate/polkadot/cli/Cargo.toml
deleted file mode 100644
index 3ccf81b1851eb475ff6b631c7655db5842c054e4..0000000000000000000000000000000000000000
--- a/substrate/polkadot/cli/Cargo.toml
+++ /dev/null
@@ -1,33 +0,0 @@
-[package]
-name = "polkadot-cli"
-version = "0.3.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-description = "Polkadot node implementation in Rust."
-
-[dependencies]
-clap = { version = "~2.32", features = ["yaml"] }
-error-chain = "0.12"
-log = "0.3"
-slog = "^2"
-lazy_static = "1.0"
-tokio = "0.1.7"
-futures = "0.1.17"
-parking_lot = "0.4"
-exit-future = "0.1"
-substrate-cli = { path = "../../substrate/cli" }
-substrate-client = { path = "../../substrate/client" }
-substrate-codec = { path = "../../substrate/codec" }
-substrate-extrinsic-pool = { path = "../../substrate/extrinsic-pool" }
-substrate-network = { path = "../../substrate/network" }
-substrate-primitives = { path = "../../substrate/primitives" }
-substrate-rpc = { path = "../../substrate/rpc" }
-substrate-rpc-servers = { path = "../../substrate/rpc-servers" }
-substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" }
-substrate-service = { path = "../../substrate/service" }
-substrate-state-machine = { path = "../../substrate/state-machine" }
-substrate-telemetry = { path = "../../substrate/telemetry" }
-polkadot-primitives = { path = "../primitives" }
-polkadot-runtime = { path = "../runtime" }
-polkadot-service = { path = "../service" }
-polkadot-transaction-pool = { path = "../transaction-pool" }
-
diff --git a/substrate/polkadot/cli/src/chain_spec.rs b/substrate/polkadot/cli/src/chain_spec.rs
deleted file mode 100644
index 14593c73c31f17460e1780a13f9e04afff329470..0000000000000000000000000000000000000000
--- a/substrate/polkadot/cli/src/chain_spec.rs
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Predefined chains.
-
-use service;
-
-/// The chain specification (this should eventually be replaced by a more general JSON-based chain
-/// specification).
-#[derive(Clone, Debug)]
-pub enum ChainSpec {
-	/// Whatever the current runtime is, with just Alice as an auth.
-	Development,
-	/// Whatever the current runtime is, with simple Alice/Bob auths.
-	LocalTestnet,
-	/// The PoC-1 & PoC-2 era testnet.
-	KrummeLanke,
-	/// Whatever the current runtime is with the "global testnet" defaults.
-	StagingTestnet,
-}
-
-/// Get a chain config from a spec setting.
-impl ChainSpec {
-	pub(crate) fn load(self) -> Result<service::ChainSpec, String> {
-		Ok(match self {
-			ChainSpec::KrummeLanke => service::chain_spec::poc_1_testnet_config()?,
-			ChainSpec::Development => service::chain_spec::development_config(),
-			ChainSpec::LocalTestnet => service::chain_spec::local_testnet_config(),
-			ChainSpec::StagingTestnet => service::chain_spec::staging_testnet_config(),
-		})
-	}
-
-	pub(crate) fn from(s: &str) -> Option<Self> {
-		match s {
-			"dev" => Some(ChainSpec::Development),
-			"local" => Some(ChainSpec::LocalTestnet),
-			"poc-1" => Some(ChainSpec::KrummeLanke),
-			"" | "krummelanke" => Some(ChainSpec::KrummeLanke),
-			"staging" => Some(ChainSpec::StagingTestnet),
-			_ => None,
-		}
-	}
-}
-
diff --git a/substrate/polkadot/cli/src/lib.rs b/substrate/polkadot/cli/src/lib.rs
deleted file mode 100644
index 1a2e2f4850bab17600f98cae022ef950d00bf6f9..0000000000000000000000000000000000000000
--- a/substrate/polkadot/cli/src/lib.rs
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Polkadot CLI library.
-
-#![warn(missing_docs)]
-#![warn(unused_extern_crates)]
-
-extern crate futures;
-extern crate tokio;
-
-extern crate substrate_cli as cli;
-extern crate polkadot_service as service;
-extern crate exit_future;
-
-#[macro_use]
-extern crate log;
-
-mod chain_spec;
-
-pub use cli::error;
-
-use chain_spec::ChainSpec;
-
-use futures::Future;
-use tokio::runtime::Runtime;
-pub use service::{Components as ServiceComponents, Service, CustomConfiguration};
-pub use cli::{VersionInfo, IntoExit};
-
-fn load_spec(id: &str) -> Result<Option<service::ChainSpec>, String> {
-	Ok(match ChainSpec::from(id) {
-		Some(spec) => Some(spec.load()?),
-		None => None,
-	})
-}
-
-/// Additional worker making use of the node, to run asynchronously before shutdown.
-///
-/// This will be invoked with the service and spawn a future that resolves
-/// when complete.
-pub trait Worker: IntoExit {
-	/// A future that resolves when the work is done or the node should exit.
-	/// This will be run on a tokio runtime.
-	type Work: Future<Item=(),Error=()> + Send + 'static;
-
-	/// Return configuration for the polkadot node.
-	// TODO: make this the full configuration, so embedded nodes don't need
-	// string CLI args
-	fn configuration(&self) -> service::CustomConfiguration { Default::default() }
-
-	/// Do work and schedule exit.
-	fn work<C: service::Components>(self, service: &service::Service<C>) -> Self::Work;
-}
-
-/// Parse command line arguments into service configuration.
-///
-/// IANA unassigned port ranges that we could use:
-/// 6717-6766		Unassigned
-/// 8504-8553		Unassigned
-/// 9556-9591		Unassigned
-/// 9803-9874		Unassigned
-/// 9926-9949		Unassigned
-pub fn run<I, T, W>(args: I, worker: W, version: cli::VersionInfo) -> error::Result<()> where
-	I: IntoIterator<Item = T>,
-	T: Into<std::ffi::OsString> + Clone,
-	W: Worker,
-{
-
-	match cli::prepare_execution::<service::Factory, _, _, _, _>(args, worker, version, load_spec, "parity-polkadot")? {
-		cli::Action::ExecutedInternally => (),
-		cli::Action::RunService((mut config, worker)) => {
-			info!("Parity ·:· Polkadot");
-			info!("  version {}", config.full_version());
-			info!("  by Parity Technologies, 2017, 2018");
-			info!("Chain specification: {}", config.chain_spec.name());
-			info!("Node name: {}", config.name);
-			info!("Roles: {:?}", config.roles);
-			config.custom = worker.configuration();
-			let mut runtime = Runtime::new()?;
-			let executor = runtime.executor();
-			match config.roles == service::Roles::LIGHT {
-				true => run_until_exit(&mut runtime, service::new_light(config, executor)?, worker)?,
-				false => run_until_exit(&mut runtime, service::new_full(config, executor)?, worker)?,
-			}
-		}
-	}
-	Ok(())
-}
-fn run_until_exit<C, W>(
-	runtime: &mut Runtime,
-	service: service::Service<C>,
-	worker: W,
-) -> error::Result<()>
-	where
-		C: service::Components,
-		W: Worker,
-{
-	let (exit_send, exit) = exit_future::signal();
-
-	let executor = runtime.executor();
-	cli::informant::start(&service, exit.clone(), executor.clone());
-
-	let _ = runtime.block_on(worker.work(&service));
-	exit_send.fire();
-	Ok(())
-}
diff --git a/substrate/polkadot/collator/Cargo.toml b/substrate/polkadot/collator/Cargo.toml
deleted file mode 100644
index 122261e3f65b7a652a5297aa3c71317a5d5ddfe5..0000000000000000000000000000000000000000
--- a/substrate/polkadot/collator/Cargo.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[package]
-name = "polkadot-collator"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-description = "Collator node implementation"
-
-[dependencies]
-futures = "0.1.17"
-substrate-client = { path = "../../substrate/client" }
-substrate-codec = { path = "../../substrate/codec", version = "0.1" }
-substrate-primitives = { path = "../../substrate/primitives", version = "0.1" }
-polkadot-api = { path = "../api" }
-polkadot-runtime = { path = "../runtime", version = "0.1" }
-polkadot-primitives = { path = "../primitives", version = "0.1" }
-polkadot-cli = { path = "../cli" }
-log = "0.4"
-ed25519 = { path = "../../substrate/ed25519" }
-tokio = "0.1.7"
diff --git a/substrate/polkadot/collator/README.adoc b/substrate/polkadot/collator/README.adoc
deleted file mode 100644
index 3a5408b489e023a493f13f3a4225990a8ad83472..0000000000000000000000000000000000000000
--- a/substrate/polkadot/collator/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Collator
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/collator/src/lib.rs b/substrate/polkadot/collator/src/lib.rs
deleted file mode 100644
index 60b46d47f0b89d70717e33257e9476dbf0b3c0a8..0000000000000000000000000000000000000000
--- a/substrate/polkadot/collator/src/lib.rs
+++ /dev/null
@@ -1,441 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Collation node logic.
-//!
-//! A collator node lives on a distinct parachain and submits a proposal for
-//! a state transition, along with a proof for its validity
-//! (what we might call a witness or block data).
-//!
-//! One of collators' other roles is to route messages between chains.
-//! Each parachain produces a list of "egress" posts of messages for each other
-//! parachain on each block, for a total of N^2 lists all together.
-//!
-//! We will refer to the egress list at relay chain block X of parachain A with
-//! destination B as egress(X)[A -> B]
-//!
-//! On every block, each parachain will be intended to route messages from some
-//! subset of all the other parachains. (NOTE: in practice this is not done until PoC-3)
-//!
-//! Since the egress information is unique to every block, when routing from a
-//! parachain a collator must gather all egress posts from that parachain
-//! up to the last point in history that messages were successfully routed
-//! from that parachain, accounting for relay chain blocks where no candidate
-//! from the collator's parachain was produced.
-//!
-//! In the case that all parachains route to each other and a candidate for the
-//! collator's parachain was included in the last relay chain block, the collator
-//! only has to gather egress posts from other parachains one block back in relay
-//! chain history.
-//!
-//! This crate defines traits which provide context necessary for collation logic
-//! to be performed, as the collation logic itself.
-
-extern crate futures;
-extern crate substrate_client as client;
-extern crate substrate_codec as codec;
-extern crate substrate_primitives as primitives;
-extern crate ed25519;
-extern crate tokio;
-
-extern crate polkadot_api;
-extern crate polkadot_cli;
-extern crate polkadot_runtime;
-extern crate polkadot_primitives;
-
-#[macro_use]
-extern crate log;
-
-use std::collections::{BTreeSet, BTreeMap, HashSet};
-use std::fmt;
-use std::sync::Arc;
-use std::time::{Duration, Instant};
-
-use futures::{future, stream, Stream, Future, IntoFuture};
-use client::BlockchainEvents;
-use polkadot_api::PolkadotApi;
-use polkadot_primitives::{AccountId, BlockId, SessionKey};
-use polkadot_primitives::parachain::{self, BlockData, DutyRoster, HeadData, ConsolidatedIngress, Message, Id as ParaId};
-use polkadot_cli::{ServiceComponents, Service, CustomConfiguration};
-use polkadot_cli::{Worker, IntoExit};
-use tokio::timer::Deadline;
-
-pub use polkadot_cli::VersionInfo;
-
-const COLLATION_TIMEOUT: Duration = Duration::from_secs(30);
-
-/// Error to return when the head data was invalid.
-#[derive(Clone, Copy, Debug)]
-pub struct InvalidHead;
-
-/// Collation errors.
-#[derive(Debug)]
-pub enum Error<R> {
-	/// Error on the relay-chain side of things.
-	Polkadot(R),
-	/// Error on the collator side of things.
-	Collator(InvalidHead),
-}
-
-impl<R: fmt::Display> fmt::Display for Error<R> {
-	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
-		match *self {
-			Error::Polkadot(ref err) => write!(f, "Polkadot node error: {}", err),
-			Error::Collator(_) => write!(f, "Collator node error: Invalid head data"),
-		}
-	}
-}
-
-/// Parachain context needed for collation.
-///
-/// This can be implemented through an externally attached service or a stub.
-/// This is expected to be a lightweight, shared type like an Arc.
-pub trait ParachainContext: Clone {
-	/// Produce a candidate, given the latest ingress queue information and the last parachain head.
-	fn produce_candidate<I: IntoIterator<Item=(ParaId, Message)>>(
-		&self,
-		last_head: HeadData,
-		ingress: I,
-	) -> Result<(BlockData, HeadData), InvalidHead>;
-}
-
-/// Relay chain context needed to collate.
-/// This encapsulates a network and local database which may store
-/// some of the input.
-pub trait RelayChainContext {
-	type Error;
-
-	/// Future that resolves to the un-routed egress queues of a parachain.
-	/// The first item is the oldest.
-	type FutureEgress: IntoFuture<Item=Vec<Vec<Message>>, Error=Self::Error>;
-
-	/// Provide a set of all parachains meant to be routed to at a block.
-	fn routing_parachains(&self) -> BTreeSet<ParaId>;
-
-	/// Get un-routed egress queues from a parachain to the local parachain.
-	fn unrouted_egress(&self, id: ParaId) -> Self::FutureEgress;
-}
-
-fn key_to_account_id(key: &ed25519::Pair) -> AccountId {
-	let pubkey_bytes: [u8; 32] = key.public().into();
-	pubkey_bytes.into()
-}
-
-/// Collate the necessary ingress queue using the given context.
-pub fn collate_ingress<'a, R>(relay_context: R)
-	-> impl Future<Item=ConsolidatedIngress, Error=R::Error> + 'a
-	where
-		R: RelayChainContext,
-		R::Error: 'a,
-		R::FutureEgress: 'a,
-{
-	let mut egress_fetch = Vec::new();
-
-	for routing_parachain in relay_context.routing_parachains() {
-		let fetch = relay_context
-			.unrouted_egress(routing_parachain)
-			.into_future()
-			.map(move |egresses| (routing_parachain, egresses));
-
-		egress_fetch.push(fetch);
-	}
-
-	// create a map ordered first by the depth of the egress queue
-	// and then by the parachain ID.
-	//
-	// then transform that into the consolidated egress queue.
-	stream::futures_unordered(egress_fetch)
-		.fold(BTreeMap::new(), |mut map, (routing_id, egresses)| {
-			for (depth, egress) in egresses.into_iter().rev().enumerate() {
-				let depth = -(depth as i64);
-				map.insert((depth, routing_id), egress);
-			}
-
-			Ok(map)
-		})
-		.map(|ordered| ordered.into_iter().map(|((_, id), egress)| (id, egress)))
-		.map(|i| i.collect::<Vec<_>>())
-		.map(ConsolidatedIngress)
-}
-
-/// Produce a candidate for the parachain, with given contexts, parent head, and signing key.
-pub fn collate<'a, R, P>(
-	local_id: ParaId,
-	last_head: HeadData,
-	relay_context: R,
-	para_context: P,
-	key: Arc<ed25519::Pair>,
-)
-	-> impl Future<Item=parachain::Collation, Error=Error<R::Error>> + 'a
-	where
-		R: RelayChainContext + 'a,
-		R::Error: 'a,
-		R::FutureEgress: 'a,
-		P: ParachainContext + 'a,
-{
-	collate_ingress(relay_context).map_err(Error::Polkadot).and_then(move |ingress| {
-		let (block_data, head_data) = para_context.produce_candidate(
-			last_head,
-			ingress.0.iter().flat_map(|&(id, ref msgs)| msgs.iter().cloned().map(move |msg| (id, msg)))
-		).map_err(Error::Collator)?;
-
-		let block_data_hash = block_data.hash();
-		let signature = key.sign(&block_data_hash.0[..]).into();
-
-		let receipt = parachain::CandidateReceipt {
-			parachain_index: local_id,
-			collator: key_to_account_id(&*key),
-			signature,
-			head_data,
-			balance_uploads: Vec::new(),
-			egress_queue_roots: Vec::new(),
-			fees: 0,
-			block_data_hash,
-		};
-
-		Ok(parachain::Collation {
-			receipt,
-			block_data,
-		})
-	})
-}
-
-/// Polkadot-api context.
-struct ApiContext;
-
-impl RelayChainContext for ApiContext {
-	type Error = ::polkadot_api::Error;
-	type FutureEgress = Result<Vec<Vec<Message>>, Self::Error>;
-
-	fn routing_parachains(&self) -> BTreeSet<ParaId> {
-		BTreeSet::new()
-	}
-
-	fn unrouted_egress(&self, _id: ParaId) -> Self::FutureEgress {
-		Ok(Vec::new())
-	}
-}
-
-struct CollationNode<P, E> {
-	parachain_context: P,
-	exit: E,
-	para_id: ParaId,
-	key: Arc<ed25519::Pair>,
-}
-
-impl<P, E> IntoExit for CollationNode<P, E> where
-	P: ParachainContext + Send + 'static,
-	E: Future<Item=(),Error=()> + Send + 'static
-{
-	type Exit = E;
-	fn into_exit(self) -> Self::Exit {
-		self.exit
-	}
-}
-
-impl<P, E> Worker for CollationNode<P, E> where
-	P: ParachainContext + Send + 'static,
-	E: Future<Item=(),Error=()> + Send + 'static
-{
-	type Work = Box<Future<Item=(),Error=()> + Send>;
-
-	fn configuration(&self) -> CustomConfiguration {
-		let mut config = CustomConfiguration::default();
-		config.collating_for = Some((
-			key_to_account_id(&*self.key),
-			self.para_id.clone(),
-		));
-		config
-	}
-
-	fn work<C: ServiceComponents>(self, service: &Service<C>) -> Self::Work {
-		let CollationNode { parachain_context, exit, para_id, key } = self;
-		let client = service.client();
-		let api = service.api();
-		let network = service.network();
-
-		let work = client.import_notification_stream()
-			.for_each(move |notification| {
-				macro_rules! try_fr {
-					($e:expr) => {
-						match $e {
-							Ok(x) => x,
-							Err(e) => return future::Either::A(future::err(Error::Polkadot(e))),
-						}
-					}
-				}
-
-				let relay_parent = notification.hash;
-				let id = BlockId::hash(relay_parent);
-
-				let network = network.clone();
-				let api = api.clone();
-				let key = key.clone();
-				let parachain_context = parachain_context.clone();
-
-				let work = future::lazy(move || {
-					let last_head = match try_fr!(api.parachain_head(&id, para_id)) {
-						Some(last_head) => last_head,
-						None => return future::Either::A(future::ok(())),
-					};
-
-					let targets = compute_targets(
-						para_id,
-						try_fr!(api.session_keys(&id)).as_slice(),
-						try_fr!(api.duty_roster(&id)),
-					);
-
-					let collation_work = collate(
-						para_id,
-						HeadData(last_head),
-						ApiContext,
-						parachain_context,
-						key,
-					).map(move |collation| {
-						network.with_spec(|spec, ctx| spec.add_local_collation(
-							ctx,
-							relay_parent,
-							targets,
-							collation,
-						));
-					});
-
-					future::Either::B(collation_work)
-				});
-				let deadlined = Deadline::new(work, Instant::now() + COLLATION_TIMEOUT);
-				let silenced = deadlined.then(|res| match res {
-					Ok(()) => Ok(()),
-					Err(e) => {
-						warn!("Collation failure: {}", e);
-						Ok(())
-					}
-				});
-
-				tokio::spawn(silenced);
-				Ok(())
-			});
-
-		let work_and_exit = work.select(exit).then(|_| Ok(()));
-		Box::new(work_and_exit) as Box<_>
-	}
-}
-
-fn compute_targets(para_id: ParaId, session_keys: &[SessionKey], roster: DutyRoster) -> HashSet<SessionKey> {
-	use polkadot_primitives::parachain::Chain;
-
-	roster.validator_duty.iter().enumerate()
-		.filter(|&(_, c)| c == &Chain::Parachain(para_id))
-		.filter_map(|(i, _)| session_keys.get(i))
-		.cloned()
-		.collect()
-}
-
-/// Run a collator node with the given `RelayChainContext` and `ParachainContext` and
-/// arguments to the underlying polkadot node.
-///
-/// Provide a future which resolves when the node should exit.
-/// This function blocks until done.
-pub fn run_collator<P, E, I, ArgT>(
-	parachain_context: P,
-	para_id: ParaId,
-	exit: E,
-	key: Arc<ed25519::Pair>,
-	args: I,
-	version: VersionInfo,
-) -> polkadot_cli::error::Result<()> where
-	P: ParachainContext + Send + 'static,
-	E: IntoFuture<Item=(),Error=()>,
-	E::Future: Send + Clone + 'static,
-	I: IntoIterator<Item=ArgT>,
-	ArgT: Into<std::ffi::OsString> + Clone,
-{
-	let node_logic = CollationNode { parachain_context, exit: exit.into_future(), para_id, key };
-	polkadot_cli::run(args, node_logic, version)
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-
-	use std::collections::{HashMap, BTreeSet};
-
-	use futures::Future;
-	use polkadot_primitives::parachain::{Message, Id as ParaId};
-
-	pub struct DummyRelayChainCtx {
-		egresses: HashMap<ParaId, Vec<Vec<Message>>>,
-		currently_routing: BTreeSet<ParaId>,
-	}
-
-	impl RelayChainContext for DummyRelayChainCtx {
-		type Error = ();
-		type FutureEgress = Result<Vec<Vec<Message>>, ()>;
-
-		fn routing_parachains(&self) -> BTreeSet<ParaId> {
-			self.currently_routing.clone()
-		}
-
-		fn unrouted_egress(&self, id: ParaId) -> Result<Vec<Vec<Message>>, ()> {
-			Ok(self.egresses.get(&id).cloned().unwrap_or_default())
-		}
-	}
-
-	#[test]
-	fn collates_ingress() {
-		let route_from = |x: &[ParaId]| {
-			 let mut set = BTreeSet::new();
-			 set.extend(x.iter().cloned());
-			 set
-		};
-
-		let message = |x: Vec<u8>| vec![Message(x)];
-
-		let dummy_ctx = DummyRelayChainCtx {
-			currently_routing: route_from(&[2.into(), 3.into()]),
-			egresses: vec![
-				// egresses for `2`: last routed successfully 5 blocks ago.
-				(2.into(), vec![
-					message(vec![1, 2, 3]),
-					message(vec![4, 5, 6]),
-					message(vec![7, 8]),
-					message(vec![10]),
-					message(vec![12]),
-				]),
-
-				// egresses for `3`: last routed successfully 3 blocks ago.
-				(3.into(), vec![
-					message(vec![9]),
-					message(vec![11]),
-					message(vec![13]),
-				]),
-			].into_iter().collect(),
-		};
-
-		assert_eq!(
-			collate_ingress(dummy_ctx).wait().unwrap(),
-			ConsolidatedIngress(vec![
-				(2.into(), message(vec![1, 2, 3])),
-				(2.into(), message(vec![4, 5, 6])),
-				(2.into(), message(vec![7, 8])),
-				(3.into(), message(vec![9])),
-				(2.into(), message(vec![10])),
-				(3.into(), message(vec![11])),
-				(2.into(), message(vec![12])),
-				(3.into(), message(vec![13])),
-			]
-		))
-	}
-}
diff --git a/substrate/polkadot/consensus/Cargo.toml b/substrate/polkadot/consensus/Cargo.toml
deleted file mode 100644
index 239e9c05afeac44d4983bba0dc52e6f7ab2dcb4d..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/Cargo.toml
+++ /dev/null
@@ -1,30 +0,0 @@
-[package]
-name = "polkadot-consensus"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-futures = "0.1.17"
-parking_lot = "0.4"
-tokio = "0.1.7"
-ed25519 = { path = "../../substrate/ed25519" }
-error-chain = "0.12"
-log = "0.3"
-exit-future = "0.1"
-rhododendron = "0.3"
-polkadot-api = { path = "../api" }
-polkadot-availability-store = { path = "../availability-store" }
-polkadot-parachain = { path = "../parachain" }
-polkadot-primitives = { path = "../primitives" }
-polkadot-runtime = { path = "../runtime" }
-polkadot-statement-table = { path = "../statement-table" }
-polkadot-transaction-pool = { path = "../transaction-pool" }
-substrate-bft = { path = "../../substrate/bft" }
-substrate-codec = { path = "../../substrate/codec" }
-substrate-primitives = { path = "../../substrate/primitives" }
-substrate-runtime-support = { path = "../../substrate/runtime-support" }
-substrate-client = { path = "../../substrate/client" }
-substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" }
-
-[dev-dependencies]
-substrate-keyring = { path = "../../substrate/keyring" }
diff --git a/substrate/polkadot/consensus/README.adoc b/substrate/polkadot/consensus/README.adoc
deleted file mode 100644
index a3ac5f631c38cf80064ac01bb1ba144fe4cb9fa7..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Consensus
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/consensus/src/collation.rs b/substrate/polkadot/consensus/src/collation.rs
deleted file mode 100644
index b02b49aaa695319b70b0f45c6d52f32b6a3608f4..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/collation.rs
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Validator-side view of collation.
-//!
-//! This module contains type definitions, a trait for a batch of collators, and a trait for
-//! attempting to fetch a collation repeatedly until a valid one is obtained.
-
-use std::sync::Arc;
-
-use polkadot_api::PolkadotApi;
-use polkadot_primitives::{Hash, AccountId, BlockId};
-use polkadot_primitives::parachain::{Id as ParaId, Collation, Extrinsic};
-
-use futures::prelude::*;
-
-/// Encapsulates connections to collators and allows collation on any parachain.
-///
-/// This is expected to be a lightweight, shared type like an `Arc`.
-pub trait Collators: Clone {
-	/// Errors when producing collations.
-	type Error;
-	/// A full collation.
-	type Collation: IntoFuture<Item=Collation,Error=Self::Error>;
-
-	/// Collate on a specific parachain, building on a given relay chain parent hash.
-	///
-	/// The returned collation should be checked for basic validity in the signature
-	/// and will be checked for state-transition validity by the consumer of this trait.
-	///
-	/// This does not have to guarantee local availability, as a valid collation
-	/// will be passed to the `TableRouter` instance.
-	fn collate(&self, parachain: ParaId, relay_parent: Hash) -> Self::Collation;
-
-	/// Note a bad collator. TODO: take proof
-	fn note_bad_collator(&self, collator: AccountId);
-}
-
-/// A future which resolves when a collation is available.
-///
-/// This future is fused.
-pub struct CollationFetch<C: Collators, P: PolkadotApi> {
-	parachain: ParaId,
-	relay_parent_hash: Hash,
-	relay_parent: BlockId,
-	collators: C,
-	live_fetch: Option<<C::Collation as IntoFuture>::Future>,
-	client: Arc<P>,
-}
-
-impl<C: Collators, P: PolkadotApi> CollationFetch<C, P> {
-	/// Create a new collation fetcher for the given chain.
-	pub fn new(parachain: ParaId, relay_parent: BlockId, relay_parent_hash: Hash, collators: C, client: Arc<P>) -> Self {
-		CollationFetch {
-			relay_parent_hash,
-			relay_parent,
-			collators,
-			client,
-			parachain,
-			live_fetch: None,
-		}
-	}
-
-	/// Access the underlying relay parent hash.
-	pub fn relay_parent(&self) -> Hash {
-		self.relay_parent_hash
-	}
-}
-
-impl<C: Collators, P: PolkadotApi> Future for CollationFetch<C, P> {
-	type Item = (Collation, Extrinsic);
-	type Error = C::Error;
-
-	fn poll(&mut self) -> Poll<(Collation, Extrinsic), C::Error> {
-		loop {
-			let x = {
-				let parachain = self.parachain.clone();
-				let (r, c)  = (self.relay_parent_hash, &self.collators);
-				let poll = self.live_fetch
-					.get_or_insert_with(move || c.collate(parachain, r).into_future())
-					.poll();
-
-				try_ready!(poll)
-			};
-
-			match validate_collation(&*self.client, &self.relay_parent, &x) {
-				Ok(()) => {
-					// TODO: generate extrinsic while verifying.
-					return Ok(Async::Ready((x, Extrinsic)));
-				}
-				Err(e) => {
-					debug!("Failed to validate parachain due to API error: {}", e);
-
-					// just continue if we got a bad collation or failed to validate
-					self.live_fetch = None;
-					self.collators.note_bad_collator(x.receipt.collator)
-				}
-			}
-		}
-	}
-}
-
-// Errors that can occur when validating a parachain.
-error_chain! {
-	types { Error, ErrorKind, ResultExt; }
-
-	errors {
-		InactiveParachain(id: ParaId) {
-			description("Collated for inactive parachain"),
-			display("Collated for inactive parachain: {:?}", id),
-		}
-		ValidationFailure {
-			description("Parachain candidate failed validation."),
-			display("Parachain candidate failed validation."),
-		}
-		WrongHeadData(expected: Vec<u8>, got: Vec<u8>) {
-			description("Parachain validation produced wrong head data."),
-			display("Parachain validation produced wrong head data (expected: {:?}, got {:?}", expected, got),
-		}
-	}
-
-	links {
-		PolkadotApi(::polkadot_api::Error, ::polkadot_api::ErrorKind);
-	}
-}
-
-/// Check whether a given collation is valid. Returns `Ok`  on success, error otherwise.
-pub fn validate_collation<P: PolkadotApi>(client: &P, relay_parent: &BlockId, collation: &Collation) -> Result<(), Error> {
-	use parachain::{self, ValidationParams};
-
-	let para_id = collation.receipt.parachain_index;
-	let validation_code = client.parachain_code(relay_parent, para_id)?
-		.ok_or_else(|| ErrorKind::InactiveParachain(para_id))?;
-
-	let chain_head = client.parachain_head(relay_parent, para_id)?
-		.ok_or_else(|| ErrorKind::InactiveParachain(para_id))?;
-
-	let params = ValidationParams {
-		parent_head: chain_head,
-		block_data: collation.block_data.0.clone(),
-	};
-
-	match parachain::wasm::validate_candidate(&validation_code, params) {
-		Ok(result) => {
-			if result.head_data == collation.receipt.head_data.0 {
-				Ok(())
-			} else {
-				Err(ErrorKind::WrongHeadData(
-					collation.receipt.head_data.0.clone(),
-					result.head_data
-				).into())
-			}
-		}
-		Err(_) => Err(ErrorKind::ValidationFailure.into())
-	}
-}
diff --git a/substrate/polkadot/consensus/src/dynamic_inclusion.rs b/substrate/polkadot/consensus/src/dynamic_inclusion.rs
deleted file mode 100644
index 232acea238872384024c3c7844594cde0e5b2d4a..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/dynamic_inclusion.rs
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Dynamic inclusion threshold over time.
-
-use std::time::{Duration, Instant};
-
-fn duration_to_micros(duration: &Duration) -> u64 {
-	duration.as_secs() * 1_000_000 + (duration.subsec_nanos() / 1000) as u64
-}
-
-/// Dynamic inclusion threshold over time.
-///
-/// The acceptable proportion of parachains which must have parachain candidates
-/// reduces over time (eventually going to zero).
-#[derive(Debug, Clone)]
-pub struct DynamicInclusion {
-	start: Instant,
-	y: u64,
-	m: u64,
-}
-
-impl DynamicInclusion {
-	/// Constructs a new dynamic inclusion threshold calculator based on the time now,
-	/// how many parachain candidates are required at the beginning, and when an empty
-	/// block will be allowed.
-	pub fn new(initial: usize, start: Instant, allow_empty: Duration) -> Self {
-		// linear function f(n_candidates) -> valid after microseconds
-		// f(0) = allow_empty
-		// f(initial) = 0
-		// m is actually the negative slope to avoid using signed arithmetic.
-		let (y, m) = if initial != 0 {
-			let y = duration_to_micros(&allow_empty);
-
-			(y, y / initial as u64)
-		} else {
-			(0, 0)
-		};
-
-		DynamicInclusion {
-			start,
-			y,
-			m,
-		}
-	}
-
-	/// Returns the duration from `now` after which the amount of included parachain candidates
-	/// would be enough, or `None` if it is sufficient now.
-	///
-	/// Panics if `now` is earlier than the `start`.
-	pub fn acceptable_in(&self, now: Instant, included: usize) -> Option<Instant> {
-		let elapsed = now.duration_since(self.start);
-		let elapsed = duration_to_micros(&elapsed);
-
-		let valid_after = self.y.saturating_sub(self.m * included as u64);
-
-		if elapsed >= valid_after {
-			None
-		} else {
-			let until = Duration::from_millis((valid_after - elapsed) as u64 / 1000);
-			Some(now + until)
-		}
-	}
-
-	/// Get the start instant.
-	pub fn started_at(&self) -> Instant { self.start }
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-
-	#[test]
-	fn full_immediately_allowed() {
-		let now = Instant::now();
-
-		let dynamic = DynamicInclusion::new(
-			10,
-			now,
-			Duration::from_millis(4000),
-		);
-
-		assert!(dynamic.acceptable_in(now, 10).is_none());
-		assert!(dynamic.acceptable_in(now, 11).is_none());
-		assert!(dynamic.acceptable_in(now + Duration::from_millis(2000), 10).is_none());
-	}
-
-	#[test]
-	fn half_allowed_halfway() {
-		let now = Instant::now();
-
-		let dynamic = DynamicInclusion::new(
-			10,
-			now,
-			Duration::from_millis(4000),
-		);
-
-		assert_eq!(dynamic.acceptable_in(now, 5), Some(now + Duration::from_millis(2000)));
-		assert!(dynamic.acceptable_in(now + Duration::from_millis(2000), 5).is_none());
-		assert!(dynamic.acceptable_in(now + Duration::from_millis(3000), 5).is_none());
-		assert!(dynamic.acceptable_in(now + Duration::from_millis(4000), 5).is_none());
-	}
-
-	#[test]
-	fn zero_initial_is_flat() {
-		let now = Instant::now();
-
-		let dynamic = DynamicInclusion::new(
-			0,
-			now,
-			Duration::from_secs(10_000),
-		);
-
-		for i in 0..10_001 {
-			let now = now + Duration::from_secs(i);
-			assert!(dynamic.acceptable_in(now, 0).is_none());
-			assert!(dynamic.acceptable_in(now, 1).is_none());
-			assert!(dynamic.acceptable_in(now, 10).is_none());
-		}
-	}
-}
diff --git a/substrate/polkadot/consensus/src/error.rs b/substrate/polkadot/consensus/src/error.rs
deleted file mode 100644
index 397fdee52ce9cee3c98165e1086018ed0e9b1e12..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/error.rs
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Errors that can occur during the consensus process.
-
-use primitives::AuthorityId;
-
-error_chain! {
-	links {
-		PolkadotApi(::polkadot_api::Error, ::polkadot_api::ErrorKind);
-		Bft(::bft::Error, ::bft::ErrorKind);
-	}
-
-	errors {
-		InvalidDutyRosterLength(expected: usize, got: usize) {
-			description("Duty Roster had invalid length"),
-			display("Invalid duty roster length: expected {}, got {}", expected, got),
-		}
-		NotValidator(id: AuthorityId) {
-			description("Local account ID not a validator at this block."),
-			display("Local account ID ({:?}) not a validator at this block.", id),
-		}
-		PrematureDestruction {
-			description("Proposer destroyed before finishing proposing or evaluating"),
-			display("Proposer destroyed before finishing proposing or evaluating"),
-		}
-		Timer(e: ::tokio::timer::Error) {
-			description("Failed to register or resolve async timer."),
-			display("Timer failed: {}", e),
-		}
-		Executor(e: ::futures::future::ExecuteErrorKind) {
-			description("Unable to dispatch agreement future"),
-			display("Unable to dispatch agreement future: {:?}", e),
-		}
-	}
-}
-
-impl From<::bft::InputStreamConcluded> for Error {
-	fn from(err: ::bft::InputStreamConcluded) -> Self {
-		::bft::Error::from(err).into()
-	}
-}
diff --git a/substrate/polkadot/consensus/src/evaluation.rs b/substrate/polkadot/consensus/src/evaluation.rs
deleted file mode 100644
index d843e79de471ef45174af0bf85902872e1d02e44..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/evaluation.rs
+++ /dev/null
@@ -1,133 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Polkadot block evaluation and evaluation errors.
-
-use super::MAX_TRANSACTIONS_SIZE;
-
-use codec::{Decode, Encode};
-use polkadot_runtime::{Block as PolkadotGenericBlock, CheckedBlock};
-use polkadot_primitives::{Block, Hash, BlockNumber, Timestamp};
-use polkadot_primitives::parachain::Id as ParaId;
-
-error_chain! {
-	links {
-		PolkadotApi(::polkadot_api::Error, ::polkadot_api::ErrorKind);
-	}
-
-	errors {
-		ProposalNotForPolkadot {
-			description("Proposal provided not a Polkadot block."),
-			display("Proposal provided not a Polkadot block."),
-		}
-		TimestampInFuture {
-			description("Proposal had timestamp too far in the future."),
-			display("Proposal had timestamp too far in the future."),
-		}
-		TooManyCandidates(expected: usize, got: usize) {
-			description("Proposal included more candidates than is possible."),
-			display("Proposal included {} candidates for {} parachains", got, expected),
-		}
-		ParachainOutOfOrder {
-			description("Proposal included parachains out of order."),
-			display("Proposal included parachains out of order."),
-		}
-		UnknownParachain(id: ParaId) {
-			description("Proposal included unregistered parachain."),
-			display("Proposal included unregistered parachain {:?}", id),
-		}
-		WrongParentHash(expected: Hash, got: Hash) {
-			description("Proposal had wrong parent hash."),
-			display("Proposal had wrong parent hash. Expected {:?}, got {:?}", expected, got),
-		}
-		WrongNumber(expected: BlockNumber, got: BlockNumber) {
-			description("Proposal had wrong number."),
-			display("Proposal had wrong number. Expected {:?}, got {:?}", expected, got),
-		}
-		ProposalTooLarge(size: usize) {
-			description("Proposal exceeded the maximum size."),
-			display(
-				"Proposal exceeded the maximum size of {} by {} bytes.",
-				MAX_TRANSACTIONS_SIZE, MAX_TRANSACTIONS_SIZE.saturating_sub(*size)
-			),
-		}
-	}
-}
-
-/// Attempt to evaluate a substrate block as a polkadot block, returning error
-/// upon any initial validity checks failing.
-pub fn evaluate_initial(
-	proposal: &Block,
-	now: Timestamp,
-	parent_hash: &Hash,
-	parent_number: BlockNumber,
-	active_parachains: &[ParaId],
-) -> Result<CheckedBlock> {
-	const MAX_TIMESTAMP_DRIFT: Timestamp = 60;
-
-	let encoded = Encode::encode(proposal);
-	let proposal = PolkadotGenericBlock::decode(&mut &encoded[..])
-		.and_then(|b| CheckedBlock::new(b).ok())
-		.ok_or_else(|| ErrorKind::ProposalNotForPolkadot)?;
-
-	let transactions_size = proposal.extrinsics.iter().fold(0, |a, tx| {
-		a + Encode::encode(tx).len()
-	});
-
-	if transactions_size > MAX_TRANSACTIONS_SIZE {
-		bail!(ErrorKind::ProposalTooLarge(transactions_size))
-	}
-
-	if proposal.header.parent_hash != *parent_hash {
-		bail!(ErrorKind::WrongParentHash(*parent_hash, proposal.header.parent_hash));
-	}
-
-	if proposal.header.number != parent_number + 1 {
-		bail!(ErrorKind::WrongNumber(parent_number + 1, proposal.header.number));
-	}
-
-	let block_timestamp = proposal.timestamp();
-
-	// lenient maximum -- small drifts will just be delayed using a timer.
-	if block_timestamp > now + MAX_TIMESTAMP_DRIFT {
-		bail!(ErrorKind::TimestampInFuture)
-	}
-
-	{
-		let n_parachains = active_parachains.len();
-		if proposal.parachain_heads().len() > n_parachains {
-			bail!(ErrorKind::TooManyCandidates(n_parachains, proposal.parachain_heads().len()));
-		}
-
-		let mut last_id = None;
-		let mut iter = active_parachains.iter();
-		for head in proposal.parachain_heads() {
-			// proposed heads must be ascending order by parachain ID without duplicate.
-			if last_id.as_ref().map_or(false, |x| x >= &head.parachain_index) {
-				bail!(ErrorKind::ParachainOutOfOrder);
-			}
-
-			if !iter.any(|x| x == &head.parachain_index) {
-				// must be unknown since active parachains are always sorted.
-				bail!(ErrorKind::UnknownParachain(head.parachain_index))
-			}
-
-			last_id = Some(head.parachain_index);
-		}
-	}
-
-	Ok(proposal)
-}
diff --git a/substrate/polkadot/consensus/src/lib.rs b/substrate/polkadot/consensus/src/lib.rs
deleted file mode 100644
index 244fdeb55df26e369c07de11017c77b5610a38a4..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/lib.rs
+++ /dev/null
@@ -1,857 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Propagation and agreement of candidates.
-//!
-//! Authorities are split into groups by parachain, and each authority might come
-//! up its own candidate for their parachain. Within groups, authorities pass around
-//! their candidates and produce statements of validity.
-//!
-//! Any candidate that receives majority approval by the authorities in a group
-//! may be subject to inclusion, unless any authorities flag that candidate as invalid.
-//!
-//! Wrongly flagging as invalid should be strongly disincentivized, so that in the
-//! equilibrium state it is not expected to happen. Likewise with the submission
-//! of invalid blocks.
-//!
-//! Groups themselves may be compromised by malicious authorities.
-
-extern crate ed25519;
-extern crate parking_lot;
-extern crate polkadot_api;
-extern crate polkadot_availability_store as extrinsic_store;
-extern crate polkadot_statement_table as table;
-extern crate polkadot_parachain as parachain;
-extern crate polkadot_transaction_pool as transaction_pool;
-extern crate polkadot_runtime;
-extern crate polkadot_primitives;
-
-extern crate substrate_bft as bft;
-extern crate substrate_codec as codec;
-extern crate substrate_primitives as primitives;
-extern crate substrate_runtime_support as runtime_support;
-extern crate substrate_runtime_primitives as runtime_primitives;
-extern crate substrate_client as client;
-
-extern crate exit_future;
-extern crate tokio;
-extern crate rhododendron;
-
-#[macro_use]
-extern crate error_chain;
-
-#[macro_use]
-extern crate futures;
-
-#[macro_use]
-extern crate log;
-
-#[cfg(test)]
-extern crate substrate_keyring;
-
-use std::collections::{HashMap, HashSet};
-use std::sync::Arc;
-use std::time::{Duration, Instant};
-
-use codec::{Decode, Encode};
-use extrinsic_store::Store as ExtrinsicStore;
-use polkadot_api::PolkadotApi;
-use polkadot_primitives::{AccountId, Hash, Block, BlockId, BlockNumber, Header, Timestamp, SessionKey};
-use polkadot_primitives::parachain::{Id as ParaId, Chain, DutyRoster, BlockData, Extrinsic as ParachainExtrinsic, CandidateReceipt, CandidateSignature};
-use primitives::AuthorityId;
-use transaction_pool::TransactionPool;
-use tokio::runtime::TaskExecutor;
-use tokio::timer::{Delay, Interval};
-
-use futures::prelude::*;
-use futures::future;
-use collation::CollationFetch;
-use dynamic_inclusion::DynamicInclusion;
-use parking_lot::RwLock;
-
-pub use self::collation::{validate_collation, Collators};
-pub use self::error::{ErrorKind, Error};
-pub use self::offline_tracker::OfflineTracker;
-pub use self::shared_table::{SharedTable, StatementProducer, ProducedStatements, Statement, SignedStatement, GenericStatement};
-pub use service::Service;
-
-mod dynamic_inclusion;
-mod evaluation;
-mod error;
-mod offline_tracker;
-mod service;
-mod shared_table;
-
-pub mod collation;
-
-/// Shared offline validator tracker.
-pub type SharedOfflineTracker = Arc<RwLock<OfflineTracker>>;
-
-// block size limit.
-const MAX_TRANSACTIONS_SIZE: usize = 4 * 1024 * 1024;
-
-/// A handle to a statement table router.
-///
-/// This is expected to be a lightweight, shared type like an `Arc`.
-pub trait TableRouter: Clone {
-	/// Errors when fetching data from the network.
-	type Error;
-	/// Future that resolves when candidate data is fetched.
-	type FetchCandidate: IntoFuture<Item=BlockData,Error=Self::Error>;
-	/// Future that resolves when extrinsic candidate data is fetched.
-	type FetchExtrinsic: IntoFuture<Item=ParachainExtrinsic,Error=Self::Error>;
-
-	/// Call with local candidate data. This will make the data available on the network,
-	/// and sign, import, and broadcast a statement about the candidate.
-	fn local_candidate(&self, candidate: CandidateReceipt, block_data: BlockData, extrinsic: ParachainExtrinsic);
-
-	/// Fetch block data for a specific candidate.
-	fn fetch_block_data(&self, candidate: &CandidateReceipt) -> Self::FetchCandidate;
-
-	/// Fetch extrinsic data for a specific candidate.
-	fn fetch_extrinsic_data(&self, candidate: &CandidateReceipt) -> Self::FetchExtrinsic;
-}
-
-/// A long-lived network which can create parachain statement and BFT message routing processes on demand.
-pub trait Network {
-	/// The table router type. This should handle importing of any statements,
-	/// routing statements to peers, and driving completion of any `StatementProducers`.
-	type TableRouter: TableRouter;
-	/// The input stream of BFT messages. Should never logically conclude.
-	type Input: Stream<Item=bft::Communication<Block>,Error=Error>;
-	/// The output sink of BFT messages. Messages sent here should eventually pass to all
-	/// current authorities.
-	type Output: Sink<SinkItem=bft::Communication<Block>,SinkError=Error>;
-
-	/// Instantiate a table router using the given shared table and task executor.
-	fn communication_for(&self, validators: &[SessionKey], table: Arc<SharedTable>, task_executor: TaskExecutor) -> (Self::TableRouter, Self::Input, Self::Output);
-}
-
-/// Information about a specific group.
-#[derive(Debug, Clone, Default)]
-pub struct GroupInfo {
-	/// Authorities meant to check validity of candidates.
-	pub validity_guarantors: HashSet<SessionKey>,
-	/// Authorities meant to check availability of candidate data.
-	pub availability_guarantors: HashSet<SessionKey>,
-	/// Number of votes needed for validity.
-	pub needed_validity: usize,
-	/// Number of votes needed for availability.
-	pub needed_availability: usize,
-}
-
-/// Sign a table statement against a parent hash.
-/// The actual message signed is the encoded statement concatenated with the
-/// parent hash.
-pub fn sign_table_statement(statement: &Statement, key: &ed25519::Pair, parent_hash: &Hash) -> CandidateSignature {
-	let mut encoded = statement.encode();
-	encoded.extend(&parent_hash.0);
-
-	key.sign(&encoded).into()
-}
-
-/// Check signature on table statement.
-pub fn check_statement(statement: &Statement, signature: &CandidateSignature, signer: SessionKey, parent_hash: &Hash) -> bool {
-	use runtime_primitives::traits::Verify;
-
-	let mut encoded = statement.encode();
-	encoded.extend(&parent_hash.0);
-
-	signature.verify(&encoded[..], &signer.into())
-}
-
-fn make_group_info(roster: DutyRoster, authorities: &[AuthorityId], local_id: AuthorityId) -> Result<(HashMap<ParaId, GroupInfo>, LocalDuty), Error> {
-	if roster.validator_duty.len() != authorities.len() {
-		bail!(ErrorKind::InvalidDutyRosterLength(authorities.len(), roster.validator_duty.len()))
-	}
-
-	if roster.guarantor_duty.len() != authorities.len() {
-		bail!(ErrorKind::InvalidDutyRosterLength(authorities.len(), roster.guarantor_duty.len()))
-	}
-
-	let mut local_validation = None;
-	let mut map = HashMap::new();
-
-	let duty_iter = authorities.iter().zip(&roster.validator_duty).zip(&roster.guarantor_duty);
-	for ((authority, v_duty), a_duty) in duty_iter {
-		if authority == &local_id {
-			local_validation = Some(v_duty.clone());
-		}
-
-		match *v_duty {
-			Chain::Relay => {}, // does nothing for now.
-			Chain::Parachain(ref id) => {
-				map.entry(id.clone()).or_insert_with(GroupInfo::default)
-					.validity_guarantors
-					.insert(authority.clone());
-			}
-		}
-
-		match *a_duty {
-			Chain::Relay => {}, // does nothing for now.
-			Chain::Parachain(ref id) => {
-				map.entry(id.clone()).or_insert_with(GroupInfo::default)
-					.availability_guarantors
-					.insert(authority.clone());
-			}
-		}
-	}
-
-	for live_group in map.values_mut() {
-		let validity_len = live_group.validity_guarantors.len();
-		let availability_len = live_group.availability_guarantors.len();
-
-		live_group.needed_validity = validity_len / 2 + validity_len % 2;
-		live_group.needed_availability = availability_len / 2 + availability_len % 2;
-	}
-
-	match local_validation {
-		Some(local_validation) => {
-			let local_duty = LocalDuty {
-				validation: local_validation,
-			};
-
-			Ok((map, local_duty))
-		}
-		None => bail!(ErrorKind::NotValidator(local_id)),
-	}
-}
-
-/// Polkadot proposer factory.
-pub struct ProposerFactory<C, N, P> {
-	/// The client instance.
-	pub client: Arc<P>,
-	/// The transaction pool.
-	pub transaction_pool: Arc<TransactionPool<P>>,
-	/// The backing network handle.
-	pub network: N,
-	/// Parachain collators.
-	pub collators: C,
-	/// handle to remote task executor
-	pub handle: TaskExecutor,
-	/// The duration after which parachain-empty blocks will be allowed.
-	pub parachain_empty_duration: Duration,
-	/// Store for extrinsic data.
-	pub extrinsic_store: ExtrinsicStore,
-	/// Offline-tracker.
-	pub offline: SharedOfflineTracker,
-}
-
-impl<C, N, P> bft::Environment<Block> for ProposerFactory<C, N, P>
-	where
-		C: Collators + Send + 'static,
-		N: Network,
-		P: PolkadotApi + Send + Sync + 'static,
-		<C::Collation as IntoFuture>::Future: Send + 'static,
-		N::TableRouter: Send + 'static,
-{
-	type Proposer = Proposer<P>;
-	type Input = N::Input;
-	type Output = N::Output;
-	type Error = Error;
-
-	fn init(
-		&self,
-		parent_header: &Header,
-		authorities: &[AuthorityId],
-		sign_with: Arc<ed25519::Pair>,
-	) -> Result<(Self::Proposer, Self::Input, Self::Output), Error> {
-		use runtime_primitives::traits::{Hash as HashT, BlakeTwo256};
-
-		let parent_hash = parent_header.hash().into();
-
-		let id = BlockId::hash(parent_hash);
-		let duty_roster = self.client.duty_roster(&id)?;
-		let random_seed = self.client.random_seed(&id)?;
-		let random_seed = BlakeTwo256::hash(&*random_seed);
-
-		let validators = self.client.validators(&id)?;
-		self.offline.write().note_new_block(&validators[..]);
-
-		let (group_info, local_duty) = make_group_info(
-			duty_roster,
-			authorities,
-			sign_with.public().into(),
-		)?;
-
-		info!("Starting consensus session on top of parent {:?}. Local parachain duty is {:?}",
-			parent_hash, local_duty.validation);
-
-		let active_parachains = self.client.active_parachains(&id)?;
-
-		debug!(target: "consensus", "Active parachains: {:?}", active_parachains);
-
-		let n_parachains = active_parachains.len();
-		let table = Arc::new(SharedTable::new(group_info, sign_with.clone(), parent_hash, self.extrinsic_store.clone()));
-		let (router, input, output) = self.network.communication_for(
-			authorities,
-			table.clone(),
-			self.handle.clone()
-		);
-
-		let now = Instant::now();
-		let dynamic_inclusion = DynamicInclusion::new(
-			n_parachains,
-			now,
-			self.parachain_empty_duration.clone(),
-		);
-
-		let validation_para = match local_duty.validation {
-			Chain::Relay => None,
-			Chain::Parachain(id) => Some(id),
-		};
-
-		let collation_work = validation_para.map(|para| CollationFetch::new(
-			para,
-			id.clone(),
-			parent_hash.clone(),
-			self.collators.clone(),
-			self.client.clone(),
-		));
-		let drop_signal = dispatch_collation_work(
-			router.clone(),
-			&self.handle,
-			collation_work,
-			self.extrinsic_store.clone(),
-		);
-
-		let proposer = Proposer {
-			client: self.client.clone(),
-			dynamic_inclusion,
-			local_key: sign_with,
-			parent_hash,
-			parent_id: id,
-			parent_number: parent_header.number,
-			random_seed,
-			table,
-			transaction_pool: self.transaction_pool.clone(),
-			offline: self.offline.clone(),
-			validators,
-			_drop_signal: drop_signal,
-		};
-
-		Ok((proposer, input, output))
-	}
-}
-
-// dispatch collation work to be done in the background. returns a signal object
-// that should fire when the collation work is no longer necessary (e.g. when the proposer object is dropped)
-fn dispatch_collation_work<R, C, P>(
-	router: R,
-	handle: &TaskExecutor,
-	work: Option<CollationFetch<C, P>>,
-	extrinsic_store: ExtrinsicStore,
-) -> exit_future::Signal where
-	C: Collators + Send + 'static,
-	P: PolkadotApi + Send + Sync + 'static,
-	<C::Collation as IntoFuture>::Future: Send + 'static,
-	R: TableRouter + Send + 'static,
-{
-	use extrinsic_store::Data;
-
-	let (signal, exit) = exit_future::signal();
-
-	let work = match work {
-		Some(w) => w,
-		None => return signal,
-	};
-
-	let relay_parent = work.relay_parent();
-	let handled_work = work.then(move |result| match result {
-		Ok((collation, extrinsic)) => {
-			let res = extrinsic_store.make_available(Data {
-				relay_parent,
-				parachain_id: collation.receipt.parachain_index,
-				candidate_hash: collation.receipt.hash(),
-				block_data: collation.block_data.clone(),
-				extrinsic: Some(extrinsic.clone()),
-			});
-
-			match res {
-				Ok(()) =>
-					router.local_candidate(collation.receipt, collation.block_data, extrinsic),
-				Err(e) =>
-					warn!(target: "consensus", "Failed to make collation data available: {:?}", e),
-			}
-
-			Ok(())
-		}
-		Err(_e) => {
-			warn!(target: "consensus", "Failed to collate candidate");
-			Ok(())
-		}
-	});
-
-	let cancellable_work = handled_work.select(exit).then(|_| Ok(()));
-
-	// spawn onto thread pool.
-	handle.spawn(cancellable_work);
-	signal
-}
-
-struct LocalDuty {
-	validation: Chain,
-}
-
-/// The Polkadot proposer logic.
-pub struct Proposer<C: PolkadotApi> {
-	client: Arc<C>,
-	dynamic_inclusion: DynamicInclusion,
-	local_key: Arc<ed25519::Pair>,
-	parent_hash: Hash,
-	parent_id: BlockId,
-	parent_number: BlockNumber,
-	random_seed: Hash,
-	table: Arc<SharedTable>,
-	transaction_pool: Arc<TransactionPool<C>>,
-	offline: SharedOfflineTracker,
-	validators: Vec<AccountId>,
-	_drop_signal: exit_future::Signal,
-}
-
-impl<C: PolkadotApi + Send + Sync> Proposer<C> {
-	fn primary_index(&self, round_number: usize, len: usize) -> usize {
-		use primitives::uint::U256;
-
-		let big_len = U256::from(len);
-		let offset = U256::from_big_endian(&self.random_seed.0) % big_len;
-		let offset = offset.low_u64() as usize + round_number;
-		offset % len
-	}
-}
-
-impl<C> bft::Proposer<Block> for Proposer<C>
-	where
-		C: PolkadotApi + Send + Sync,
-{
-	type Error = Error;
-	type Create = future::Either<
-		CreateProposal<C>,
-		future::FutureResult<Block, Error>,
-	>;
-	type Evaluate = Box<Future<Item=bool, Error=Error>>;
-
-	fn propose(&self) -> Self::Create {
-		const ATTEMPT_PROPOSE_EVERY: Duration = Duration::from_millis(100);
-
-		let initial_included = self.table.includable_count();
-		let now = Instant::now();
-		let enough_candidates = self.dynamic_inclusion.acceptable_in(
-			now,
-			initial_included,
-		).unwrap_or_else(|| now + Duration::from_millis(1));
-
-		let timing = ProposalTiming {
-			attempt_propose: Interval::new(now + ATTEMPT_PROPOSE_EVERY, ATTEMPT_PROPOSE_EVERY),
-			enough_candidates: Delay::new(enough_candidates),
-			dynamic_inclusion: self.dynamic_inclusion.clone(),
-			last_included: initial_included,
-		};
-
-		future::Either::A(CreateProposal {
-			parent_hash: self.parent_hash.clone(),
-			parent_number: self.parent_number.clone(),
-			parent_id: self.parent_id.clone(),
-			client: self.client.clone(),
-			transaction_pool: self.transaction_pool.clone(),
-			table: self.table.clone(),
-			offline: self.offline.clone(),
-			validators: self.validators.clone(),
-			timing,
-		})
-	}
-
-	fn evaluate(&self, unchecked_proposal: &Block) -> Self::Evaluate {
-		debug!(target: "bft", "evaluating block on top of parent ({}, {:?})", self.parent_number, self.parent_hash);
-
-		let active_parachains = match self.client.active_parachains(&self.parent_id) {
-			Ok(x) => x,
-			Err(e) => return Box::new(future::err(e.into())) as Box<_>,
-		};
-
-		let current_timestamp = current_timestamp();
-
-		// do initial serialization and structural integrity checks.
-		let maybe_proposal = evaluation::evaluate_initial(
-			unchecked_proposal,
-			current_timestamp,
-			&self.parent_hash,
-			self.parent_number,
-			&active_parachains,
-		);
-
-		let proposal = match maybe_proposal {
-			Ok(p) => p,
-			Err(e) => {
-				// TODO: these errors are easily re-checked in runtime.
-				debug!(target: "bft", "Invalid proposal: {:?}", e);
-				return Box::new(future::ok(false));
-			}
-		};
-
-		let vote_delays = {
-			let now = Instant::now();
-
-			let included_candidate_hashes = proposal
-				.parachain_heads()
-				.iter()
-				.map(|candidate| candidate.hash());
-
-			// delay casting vote until we have proof that all candidates are
-			// includable.
-			let includability_tracker = self.table.track_includability(included_candidate_hashes)
-				.map_err(|_| ErrorKind::PrematureDestruction.into());
-
-			// the duration at which the given number of parachains is acceptable.
-			let count_delay = self.dynamic_inclusion.acceptable_in(
-				now,
-				proposal.parachain_heads().len(),
-			);
-
-			// the duration until the given timestamp is current
-			let proposed_timestamp = proposal.timestamp();
-			let timestamp_delay = if proposed_timestamp > current_timestamp {
-				Some(now + Duration::from_secs(proposed_timestamp - current_timestamp))
-			} else {
-				None
-			};
-
-			// delay casting vote until able according to minimum block time,
-			// timestamp delay, and count delay.
-			// construct a future from the maximum of the two durations.
-			let max_delay = ::std::cmp::max(timestamp_delay, count_delay);
-
-			let temporary_delay = match max_delay {
-				Some(duration) => future::Either::A(
-					Delay::new(duration).map_err(|e| Error::from(ErrorKind::Timer(e)))
-				),
-				None => future::Either::B(future::ok(())),
-			};
-
-			includability_tracker.join(temporary_delay)
-		};
-
-		// refuse to vote if this block says a validator is offline that we
-		// think isn't.
-		let offline = proposal.noted_offline();
-		if !self.offline.read().check_consistency(&self.validators[..], offline) {
-			return Box::new(futures::empty());
-		}
-
-		// evaluate whether the block is actually valid.
-		// TODO: is it better to delay this until the delays are finished?
-		let evaluated = self.client
-			.evaluate_block(&self.parent_id, unchecked_proposal.clone())
-			.map_err(Into::into);
-
-		let future = future::result(evaluated).and_then(move |good| {
-			let end_result = future::ok(good);
-			if good {
-				// delay a "good" vote.
-				future::Either::A(vote_delays.and_then(|_| end_result))
-			} else {
-				// don't delay a "bad" evaluation.
-				future::Either::B(end_result)
-			}
-		});
-
-		Box::new(future) as Box<_>
-	}
-
-	fn round_proposer(&self, round_number: usize, authorities: &[AuthorityId]) -> AuthorityId {
-		let offset = self.primary_index(round_number, authorities.len());
-		let proposer = authorities[offset].clone();
-		trace!(target: "bft", "proposer for round {} is {}", round_number, proposer);
-
-		proposer
-	}
-
-	fn import_misbehavior(&self, misbehavior: Vec<(AuthorityId, bft::Misbehavior<Hash>)>) {
-		use rhododendron::Misbehavior as GenericMisbehavior;
-		use runtime_primitives::bft::{MisbehaviorKind, MisbehaviorReport};
-		use runtime_primitives::MaybeUnsigned;
-		use polkadot_runtime::{Call, Extrinsic, BareExtrinsic, UncheckedExtrinsic, ConsensusCall};
-
-		let local_id = self.local_key.public().0.into();
-		let mut next_index = {
-			let cur_index = self.transaction_pool.cull_and_get_pending(BlockId::hash(self.parent_hash), |pending| pending
-				.filter(|tx| tx.sender().map(|s| s == local_id).unwrap_or(false))
-				.last()
-				.map(|tx| Ok(tx.index()))
-				.unwrap_or_else(|| self.client.index(&self.parent_id, local_id))
-			);
-
-			match cur_index {
-				Ok(Ok(cur_index)) => cur_index + 1,
-				Ok(Err(e)) => {
-					warn!(target: "consensus", "Error computing next transaction index: {}", e);
-					return;
-				}
-				Err(e) => {
-					warn!(target: "consensus", "Error computing next transaction index: {}", e);
-					return;
-				}
-			}
-		};
-
-		for (target, misbehavior) in misbehavior {
-			let report = MisbehaviorReport {
-				parent_hash: self.parent_hash,
-				parent_number: self.parent_number,
-				target,
-				misbehavior: match misbehavior {
-					GenericMisbehavior::ProposeOutOfTurn(_, _, _) => continue,
-					GenericMisbehavior::DoublePropose(_, _, _) => continue,
-					GenericMisbehavior::DoublePrepare(round, (h1, s1), (h2, s2))
-						=> MisbehaviorKind::BftDoublePrepare(round as u32, (h1, s1.signature), (h2, s2.signature)),
-					GenericMisbehavior::DoubleCommit(round, (h1, s1), (h2, s2))
-						=> MisbehaviorKind::BftDoubleCommit(round as u32, (h1, s1.signature), (h2, s2.signature)),
-				}
-			};
-			let extrinsic = BareExtrinsic {
-				signed: local_id,
-				index: next_index,
-				function: Call::Consensus(ConsensusCall::report_misbehavior(report)),
-			};
-
-			next_index += 1;
-
-			let signature = MaybeUnsigned(self.local_key.sign(&extrinsic.encode()).into());
-
-			let extrinsic = Extrinsic {
-				signed: extrinsic.signed.into(),
-				index: extrinsic.index,
-				function: extrinsic.function,
-			};
-			let uxt = UncheckedExtrinsic::new(extrinsic, signature);
-
-			self.transaction_pool.import_unchecked_extrinsic(BlockId::hash(self.parent_hash), uxt)
-				.expect("locally signed extrinsic is valid; qed");
-		}
-	}
-
-	fn on_round_end(&self, round_number: usize, was_proposed: bool) {
-		let primary_validator = self.validators[
-			self.primary_index(round_number, self.validators.len())
-		];
-
-
-		// alter the message based on whether we think the empty proposer was forced to skip the round.
-		// this is determined by checking if our local validator would have been forced to skip the round.
-		let consider_online = was_proposed || {
-			let forced_delay = self.dynamic_inclusion.acceptable_in(Instant::now(), self.table.includable_count());
-			let public = ::ed25519::Public::from_raw(primary_validator.0);
-			match forced_delay {
-				None => info!(
-					"Potential Offline Validator: {} failed to propose during assigned slot: {}",
-					public,
-					round_number,
-				),
-				Some(_) => info!(
-					"Potential Offline Validator {} potentially forced to skip assigned slot: {}",
-					public,
-					round_number,
-				),
-			}
-
-			forced_delay.is_some()
-		};
-
-		self.offline.write().note_round_end(primary_validator, consider_online);
-	}
-}
-
-fn current_timestamp() -> Timestamp {
-	use std::time;
-
-	time::SystemTime::now().duration_since(time::UNIX_EPOCH)
-		.expect("now always later than unix epoch; qed")
-		.as_secs()
-}
-
-struct ProposalTiming {
-	attempt_propose: Interval,
-	dynamic_inclusion: DynamicInclusion,
-	enough_candidates: Delay,
-	last_included: usize,
-}
-
-impl ProposalTiming {
-	// whether it's time to attempt a proposal.
-	// shouldn't be called outside of the context of a task.
-	fn poll(&mut self, included: usize) -> Poll<(), ErrorKind> {
-		// first drain from the interval so when the minimum delay is up
-		// we don't have any notifications built up.
-		//
-		// this interval is just meant to produce periodic task wakeups
-		// that lead to the `dynamic_inclusion` getting updated as necessary.
-		if let Async::Ready(x) = self.attempt_propose.poll().map_err(ErrorKind::Timer)? {
-			x.expect("timer still alive; intervals never end; qed");
-		}
-
-		if included == self.last_included {
-			return self.enough_candidates.poll().map_err(ErrorKind::Timer);
-		}
-
-		// the amount of includable candidates has changed. schedule a wakeup
-		// if it's not sufficient anymore.
-		match self.dynamic_inclusion.acceptable_in(Instant::now(), included) {
-			Some(instant) => {
-				self.last_included = included;
-				self.enough_candidates.reset(instant);
-				self.enough_candidates.poll().map_err(ErrorKind::Timer)
-			}
-			None => Ok(Async::Ready(())),
-		}
-	}
-}
-
-/// Future which resolves upon the creation of a proposal.
-pub struct CreateProposal<C: PolkadotApi>  {
-	parent_hash: Hash,
-	parent_number: BlockNumber,
-	parent_id: BlockId,
-	client: Arc<C>,
-	transaction_pool: Arc<TransactionPool<C>>,
-	table: Arc<SharedTable>,
-	timing: ProposalTiming,
-	validators: Vec<AccountId>,
-	offline: SharedOfflineTracker,
-}
-
-impl<C> CreateProposal<C> where C: PolkadotApi {
-	fn propose_with(&self, candidates: Vec<CandidateReceipt>) -> Result<Block, Error> {
-		use polkadot_api::BlockBuilder;
-		use runtime_primitives::traits::{Hash as HashT, BlakeTwo256};
-		use polkadot_primitives::InherentData;
-
-		const MAX_VOTE_OFFLINE_SECONDS: Duration = Duration::from_secs(60);
-
-		// TODO: handle case when current timestamp behind that in state.
-		let timestamp = current_timestamp();
-
-		let elapsed_since_start = self.timing.dynamic_inclusion.started_at().elapsed();
-		let offline_indices = if elapsed_since_start > MAX_VOTE_OFFLINE_SECONDS {
-			Vec::new()
-		} else {
-			self.offline.read().reports(&self.validators[..])
-		};
-
-		if !offline_indices.is_empty() {
-			info!(
-				"Submitting offline validators {:?} for slash-vote",
-				offline_indices.iter().map(|&i| self.validators[i as usize]).collect::<Vec<_>>(),
-			)
-		}
-
-		let inherent_data = InherentData {
-			timestamp,
-			parachain_heads: candidates,
-			offline_indices,
-		};
-
-		let mut block_builder = self.client.build_block(&self.parent_id, inherent_data)?;
-
-		{
-			let mut unqueue_invalid = Vec::new();
-			let result = self.transaction_pool.cull_and_get_pending(BlockId::hash(self.parent_hash), |pending_iterator| {
-				let mut pending_size = 0;
-				for pending in pending_iterator {
-					if pending_size + pending.encoded_size() >= MAX_TRANSACTIONS_SIZE { break }
-
-					match block_builder.push_extrinsic(pending.primitive_extrinsic()) {
-						Ok(()) => {
-							pending_size += pending.encoded_size();
-						}
-						Err(e) => {
-							trace!(target: "transaction-pool", "Invalid transaction: {}", e);
-							unqueue_invalid.push(pending.hash().clone());
-						}
-					}
-				}
-			});
-			if let Err(e) = result {
-				warn!("Unable to get the pending set: {:?}", e);
-			}
-
-			self.transaction_pool.remove(&unqueue_invalid, false);
-		}
-
-		let polkadot_block = block_builder.bake()?;
-
-		info!("Proposing block [number: {}; hash: {}; parent_hash: {}; extrinsics: [{}]]",
-			polkadot_block.header.number,
-			Hash::from(polkadot_block.header.hash()),
-			polkadot_block.header.parent_hash,
-			polkadot_block.extrinsics.iter()
-				.map(|xt| format!("{}", BlakeTwo256::hash_of(xt)))
-				.collect::<Vec<_>>()
-				.join(", ")
-		);
-
-		let substrate_block = Decode::decode(&mut polkadot_block.encode().as_slice())
-			.expect("polkadot blocks defined to serialize to substrate blocks correctly; qed");
-
-		// TODO: full re-evaluation
-		let active_parachains = self.client.active_parachains(&self.parent_id)?;
-		assert!(evaluation::evaluate_initial(
-			&substrate_block,
-			timestamp,
-			&self.parent_hash,
-			self.parent_number,
-			&active_parachains,
-		).is_ok());
-
-		Ok(substrate_block)
-	}
-}
-
-impl<C> Future for CreateProposal<C> where C: PolkadotApi {
-	type Item = Block;
-	type Error = Error;
-
-	fn poll(&mut self) -> Poll<Block, Error> {
-		// 1. try to propose if we have enough includable candidates and other
-		// delays have concluded.
-		let included = self.table.includable_count();
-		try_ready!(self.timing.poll(included));
-
-		// 2. propose
-		let proposed_candidates = self.table.with_proposal(|proposed_set| {
-			proposed_set.into_iter().cloned().collect()
-		});
-
-		self.propose_with(proposed_candidates).map(Async::Ready)
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use substrate_keyring::Keyring;
-
-	#[test]
-	fn sign_and_check_statement() {
-		let statement: Statement = GenericStatement::Valid([1; 32].into());
-		let parent_hash = [2; 32].into();
-
-		let sig = sign_table_statement(&statement, &Keyring::Alice.pair(), &parent_hash);
-
-		assert!(check_statement(&statement, &sig, Keyring::Alice.to_raw_public().into(), &parent_hash));
-		assert!(!check_statement(&statement, &sig, Keyring::Alice.to_raw_public().into(), &[0xff; 32].into()));
-		assert!(!check_statement(&statement, &sig, Keyring::Bob.to_raw_public().into(), &parent_hash));
-	}
-}
diff --git a/substrate/polkadot/consensus/src/offline_tracker.rs b/substrate/polkadot/consensus/src/offline_tracker.rs
deleted file mode 100644
index efb317ea5c913eb9117f3a4bc562159478bbaf9a..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/offline_tracker.rs
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2018 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Tracks offline validators.
-
-use polkadot_primitives::AccountId;
-
-use std::collections::HashMap;
-use std::time::{Instant, Duration};
-
-// time before we report a validator.
-const REPORT_TIME: Duration = Duration::from_secs(60 * 5);
-
-struct Observed {
-	last_round_end: Instant,
-	offline_since: Instant,
-}
-
-impl Observed {
-	fn new() -> Observed {
-		let now = Instant::now();
-		Observed {
-			last_round_end: now,
-			offline_since: now,
-		}
-	}
-
-	fn note_round_end(&mut self, was_online: bool) {
-		let now = Instant::now();
-
-		self.last_round_end = now;
-		if was_online {
-			self.offline_since = now;
-		}
-	}
-
-	fn is_active(&self) -> bool {
-		// can happen if clocks are not monotonic
-		if self.offline_since > self.last_round_end { return true }
-		self.last_round_end.duration_since(self.offline_since) < REPORT_TIME
-	}
-}
-
-/// Tracks offline validators and can issue a report for those offline.
-pub struct OfflineTracker {
-	observed: HashMap<AccountId, Observed>,
-}
-
-impl OfflineTracker {
-	/// Create a new tracker.
-	pub fn new() -> Self {
-		OfflineTracker { observed: HashMap::new() }
-	}
-
-	/// Note new consensus is starting with the given set of validators.
-	pub fn note_new_block(&mut self, validators: &[AccountId]) {
-		use std::collections::HashSet;
-
-		let set: HashSet<_> = validators.iter().cloned().collect();
-		self.observed.retain(|k, _| set.contains(k));
-	}
-
-	/// Note that a round has ended.
-	pub fn note_round_end(&mut self, validator: AccountId, was_online: bool) {
-		self.observed.entry(validator)
-			.or_insert_with(Observed::new)
-			.note_round_end(was_online);
-	}
-
-	/// Generate a vector of indices for offline account IDs.
-	pub fn reports(&self, validators: &[AccountId]) -> Vec<u32> {
-		validators.iter()
-			.enumerate()
-			.filter_map(|(i, v)| if self.is_online(v) {
-				None
-			} else {
-				Some(i as u32)
-			})
-			.collect()
-	}
-
-	/// Whether reports on a validator set are consistent with our view of things.
-	pub fn check_consistency(&self, validators: &[AccountId], reports: &[u32]) -> bool {
-		reports.iter().cloned().all(|r| {
-			let v = match validators.get(r as usize) {
-				Some(v) => v,
-				None => return false,
-			};
-
-			// we must think all validators reported externally are offline.
-			let thinks_online = self.is_online(v);
-			!thinks_online
-		})
-	}
-
-	fn is_online(&self, v: &AccountId) -> bool {
-		self.observed.get(v).map(Observed::is_active).unwrap_or(true)
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-
-	#[test]
-	fn validator_offline() {
-		let mut tracker = OfflineTracker::new();
-		let v = [0; 32].into();
-		let v2 = [1; 32].into();
-		let v3 = [2; 32].into();
-		tracker.note_round_end(v, true);
-		tracker.note_round_end(v2, true);
-		tracker.note_round_end(v3, true);
-
-		let slash_time = REPORT_TIME + Duration::from_secs(5);
-		tracker.observed.get_mut(&v).unwrap().offline_since -= slash_time;
-		tracker.observed.get_mut(&v2).unwrap().offline_since -= slash_time;
-
-		assert_eq!(tracker.reports(&[v, v2, v3]), vec![0, 1]);
-
-		tracker.note_new_block(&[v, v3]);
-		assert_eq!(tracker.reports(&[v, v2, v3]), vec![0]);
-	}
-}
diff --git a/substrate/polkadot/consensus/src/service.rs b/substrate/polkadot/consensus/src/service.rs
deleted file mode 100644
index d0c92962be3c60858276ac58b7ac3b1a5d481359..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/service.rs
+++ /dev/null
@@ -1,268 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Consensus service.
-
-/// Consensus service. A long running service that manages BFT agreement and parachain
-/// candidate agreement over the network.
-///
-/// This uses a handle to an underlying thread pool to dispatch heavy work
-/// such as candidate verification while performing event-driven work
-/// on a local event loop.
-
-use std::thread;
-use std::time::{Duration, Instant};
-use std::sync::Arc;
-
-use bft::{self, BftService};
-use client::{BlockchainEvents, ChainHead, BlockBody};
-use ed25519;
-use futures::prelude::*;
-use polkadot_api::LocalPolkadotApi;
-use polkadot_primitives::{Block, Header};
-use transaction_pool::TransactionPool;
-use extrinsic_store::Store as ExtrinsicStore;
-
-use tokio::executor::current_thread::TaskExecutor as LocalThreadHandle;
-use tokio::runtime::TaskExecutor as ThreadPoolHandle;
-use tokio::runtime::current_thread::Runtime as LocalRuntime;
-use tokio::timer::{Delay, Interval};
-
-use super::{Network, Collators, ProposerFactory};
-use error;
-
-const TIMER_DELAY_MS: u64 = 5000;
-const TIMER_INTERVAL_MS: u64 = 500;
-
-// spin up an instance of BFT agreement on the current thread's executor.
-// panics if there is no current thread executor.
-fn start_bft<F, C>(
-	header: Header,
-	bft_service: Arc<BftService<Block, F, C>>,
-) where
-	F: bft::Environment<Block> + 'static,
-	C: bft::BlockImport<Block> + bft::Authorities<Block> + 'static,
-	F::Error: ::std::fmt::Debug,
-	<F::Proposer as bft::Proposer<Block>>::Error: ::std::fmt::Display + Into<error::Error>,
-	<F as bft::Environment<Block>>::Error: ::std::fmt::Display
-{
-	const DELAY_UNTIL: Duration = Duration::from_millis(5000);
-
-	let mut handle = LocalThreadHandle::current();
-	let work = Delay::new(Instant::now() + DELAY_UNTIL)
-		.then(move |res| {
-			if let Err(e) = res {
-				warn!(target: "bft", "Failed to force delay of consensus: {:?}", e);
-			}
-
-			match bft_service.build_upon(&header) {
-				Ok(maybe_bft_work) => {
-					if maybe_bft_work.is_some() {
-						debug!(target: "bft", "Starting agreement. After forced delay for {:?}",
-							DELAY_UNTIL);
-					}
-
-					maybe_bft_work
-				}
-				Err(e) => {
-					warn!(target: "bft", "BFT agreement error: {}", e);
-					None
-				}
-			}
-		})
-		.map(|_| ());
-
-	if let Err(e) = handle.spawn_local(Box::new(work)) {
-    	debug!(target: "bft", "Couldn't initialize BFT agreement: {:?}", e);
-    }
-}
-
-// creates a task to prune redundant entries in availability store upon block finalization
-//
-// NOTE: this will need to be changed to finality notification rather than
-// block import notifications when the consensus switches to non-instant finality.
-fn prune_unneeded_availability<C>(client: Arc<C>, extrinsic_store: ExtrinsicStore)
-	-> impl Future<Item=(),Error=()> + Send
-	where C: Send + Sync + BlockchainEvents<Block> + BlockBody<Block> + 'static
-{
-	use codec::{Encode, Decode};
-	use polkadot_primitives::BlockId;
-	use polkadot_runtime::CheckedBlock;
-
-	enum NotifyError {
-		NoBody,
-		BodyFetch(::client::error::Error),
-		UnexpectedFormat,
-		ExtrinsicsWrong,
-	}
-
-	impl NotifyError {
-		fn log(&self, hash: &::polkadot_primitives::Hash) {
-			match *self {
-				NotifyError::NoBody => warn!("No block body for imported block {:?}", hash),
-				NotifyError::BodyFetch(ref err) => warn!("Failed to fetch block body for imported block {:?}: {:?}", hash, err),
-				NotifyError::UnexpectedFormat => warn!("Consensus outdated: Block {:?} has unexpected body format", hash),
-				NotifyError::ExtrinsicsWrong => warn!("Consensus outdated: Extrinsics cannot be decoded for {:?}", hash),
-			}
-		}
-	}
-
-	client.import_notification_stream()
-		.for_each(move |notification| {
-			let hash = notification.hash;
-			let parent_hash = notification.header.parent_hash;
-			let checked_block = client.block_body(&BlockId::hash(hash))
-				.map_err(NotifyError::BodyFetch)
-				.and_then(|maybe_body| maybe_body.ok_or(NotifyError::NoBody))
-				.map(|extrinsics| Block { header: notification.header, extrinsics })
-				.map(|b: Block| ::polkadot_runtime::Block::decode(&mut b.encode().as_slice()))
-				.and_then(|maybe_block| maybe_block.ok_or(NotifyError::UnexpectedFormat))
-				.and_then(|block| CheckedBlock::new(block).map_err(|_| NotifyError::ExtrinsicsWrong));
-
-			match checked_block {
-				Ok(block) => {
-					let candidate_hashes = block.parachain_heads().iter().map(|c| c.hash()).collect();
-					if let Err(e) = extrinsic_store.candidates_finalized(parent_hash, candidate_hashes) {
-						warn!(target: "consensus", "Failed to prune unneeded available data: {:?}", e);
-					}
-				}
-				Err(e) => e.log(&hash)
-			}
-
-			Ok(())
-		})
-}
-
-/// Consensus service. Starts working when created.
-pub struct Service {
-	thread: Option<thread::JoinHandle<()>>,
-	exit_signal: Option<::exit_future::Signal>,
-}
-
-impl Service {
-	/// Create and start a new instance.
-	pub fn new<A, C, N>(
-		client: Arc<C>,
-		api: Arc<A>,
-		network: N,
-		transaction_pool: Arc<TransactionPool<A>>,
-		thread_pool: ThreadPoolHandle,
-		parachain_empty_duration: Duration,
-		key: ed25519::Pair,
-		extrinsic_store: ExtrinsicStore,
-	) -> Service
-		where
-			A: LocalPolkadotApi + Send + Sync + 'static,
-			C: BlockchainEvents<Block> + ChainHead<Block> + BlockBody<Block>,
-			C: bft::BlockImport<Block> + bft::Authorities<Block> + Send + Sync + 'static,
-			N: Network + Collators + Send + 'static,
-			N::TableRouter: Send + 'static,
-			<N::Collation as IntoFuture>::Future: Send + 'static,
-	{
-		use parking_lot::RwLock;
-		use super::OfflineTracker;
-
-		let (signal, exit) = ::exit_future::signal();
-		let thread = thread::spawn(move || {
-			let mut runtime = LocalRuntime::new().expect("Could not create local runtime");
-			let key = Arc::new(key);
-
-			let factory = ProposerFactory {
-				client: api.clone(),
-				transaction_pool: transaction_pool.clone(),
-				collators: network.clone(),
-				network,
-				parachain_empty_duration,
-				handle: thread_pool.clone(),
-				extrinsic_store: extrinsic_store.clone(),
-				offline: Arc::new(RwLock::new(OfflineTracker::new())),
-			};
-			let bft_service = Arc::new(BftService::new(client.clone(), key, factory));
-
-			let notifications = {
-				let client = client.clone();
-				let bft_service = bft_service.clone();
-
-				client.import_notification_stream().for_each(move |notification| {
-					if notification.is_new_best {
-						start_bft(notification.header, bft_service.clone());
-					}
-					Ok(())
-				})
-			};
-
-			let interval = Interval::new(
-				Instant::now() + Duration::from_millis(TIMER_DELAY_MS),
-				Duration::from_millis(TIMER_INTERVAL_MS),
-			);
-
-			let mut prev_best = match client.best_block_header() {
-				Ok(header) => header.hash(),
-				Err(e) => {
-					warn!("Cant's start consensus service. Error reading best block header: {:?}", e);
-					return;
-				}
-			};
-
-			let timed = {
-				let c = client.clone();
-				let s = bft_service.clone();
-
-				interval.map_err(|e| debug!("Timer error: {:?}", e)).for_each(move |_| {
-					if let Ok(best_block) = c.best_block_header() {
-						let hash = best_block.hash();
-						if hash == prev_best && s.live_agreement() != Some(hash) {
-							debug!("Starting consensus round after a timeout");
-							start_bft(best_block, s.clone());
-						}
-						prev_best = hash;
-					}
-					Ok(())
-				})
-			};
-
-			runtime.spawn(notifications);
-			runtime.spawn(timed);
-
-			let prune_available = prune_unneeded_availability(client, extrinsic_store)
-				.select(exit.clone())
-				.then(|_| Ok(()));
-
-			// spawn this on the tokio executor since it's fine on a thread pool.
-			thread_pool.spawn(prune_available);
-
-			if let Err(e) = runtime.block_on(exit) {
-				debug!("BFT event loop error {:?}", e);
-			}
-		});
-		Service {
-			thread: Some(thread),
-			exit_signal: Some(signal),
-		}
-	}
-}
-
-impl Drop for Service {
-	fn drop(&mut self) {
-		if let Some(signal) = self.exit_signal.take() {
-			signal.fire();
-		}
-
-		if let Some(thread) = self.thread.take() {
-			thread.join().expect("The service thread has panicked");
-		}
-	}
-}
diff --git a/substrate/polkadot/consensus/src/shared_table/includable.rs b/substrate/polkadot/consensus/src/shared_table/includable.rs
deleted file mode 100644
index 873c3af94c403b43b577c480dbc27c2f4b32ac9a..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/shared_table/includable.rs
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Implements a future which resolves when all of the candidates referenced are includable.
-
-use std::collections::HashMap;
-
-use futures::prelude::*;
-use futures::sync::oneshot;
-
-use polkadot_primitives::Hash;
-
-/// Track includability of a set of candidates,
-pub(super) fn track<I: IntoIterator<Item=(Hash, bool)>>(candidates: I) -> (IncludabilitySender, Includable) {
-	let (tx, rx) = oneshot::channel();
-	let tracking: HashMap<_, _> = candidates.into_iter().collect();
-	let includable_count = tracking.values().filter(|x| **x).count();
-
-	let mut sender = IncludabilitySender {
-		tracking,
-		includable_count,
-		sender: Some(tx),
-	};
-
-	sender.try_complete();
-
-	(
-		sender,
-		Includable(rx),
-	)
-}
-
-/// The sending end of the includability sender.
-pub(super) struct IncludabilitySender {
-	tracking: HashMap<Hash, bool>,
-	includable_count: usize,
-	sender: Option<oneshot::Sender<()>>,
-}
-
-impl IncludabilitySender {
-	/// update the inner candidate. wakes up the task as necessary.
-	/// returns `Err(Canceled)` if the other end has hung up.
-	///
-	/// returns `true` when this is completed and should be destroyed.
-	pub fn update_candidate(&mut self, candidate: Hash, includable: bool) -> bool {
-		use std::collections::hash_map::Entry;
-
-		match self.tracking.entry(candidate) {
-			Entry::Vacant(_) => {}
-			Entry::Occupied(mut entry) => {
-				let old = entry.insert(includable);
-				if !old && includable {
-					self.includable_count += 1;
-				} else if old && !includable {
-					self.includable_count -= 1;
-				}
-			}
-		}
-
-		self.try_complete()
-	}
-
-	/// whether the sender is completed.
-	pub fn is_complete(&self) -> bool {
-		self.sender.is_none()
-	}
-
-	fn try_complete(&mut self) -> bool {
-		if self.includable_count == self.tracking.len() {
-			if let Some(sender) = self.sender.take() {
-				let _ = sender.send(());
-			}
-
-			true
-		} else {
-			false
-		}
-	}
-}
-
-/// Future that resolves when all the candidates within are includable.
-pub struct Includable(oneshot::Receiver<()>);
-
-impl Future for Includable {
-	type Item = ();
-	type Error = oneshot::Canceled;
-
-	fn poll(&mut self) -> Poll<(), oneshot::Canceled> {
-		self.0.poll()
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-
-	#[test]
-	fn it_works() {
-		let hash1 = [1; 32].into();
-		let hash2 = [2; 32].into();
-		let hash3 = [3; 32].into();
-
-		let (mut sender, recv) = track([
-			(hash1, true),
-			(hash2, true),
-			(hash2, false), // overwrite should favor latter.
-			(hash3, true),
-		].iter().cloned());
-
-		assert!(!sender.is_complete());
-
-		// true -> false transition is possible and should be handled.
-		sender.update_candidate(hash1, false);
-		assert!(!sender.is_complete());
-
-		sender.update_candidate(hash2, true);
-		assert!(!sender.is_complete());
-
-		sender.update_candidate(hash1, true);
-		assert!(sender.is_complete());
-
-		recv.wait().unwrap();
-	}
-}
diff --git a/substrate/polkadot/consensus/src/shared_table/mod.rs b/substrate/polkadot/consensus/src/shared_table/mod.rs
deleted file mode 100644
index 8455ac0c10aa05ec8186ed8cb67bb0d20e35b52e..0000000000000000000000000000000000000000
--- a/substrate/polkadot/consensus/src/shared_table/mod.rs
+++ /dev/null
@@ -1,702 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Parachain statement table meant to be shared with a message router
-//! and a consensus proposer.
-
-use std::collections::{HashMap, HashSet};
-use std::sync::Arc;
-
-use extrinsic_store::{Data, Store as ExtrinsicStore};
-use table::{self, Table, Context as TableContextTrait};
-use polkadot_primitives::{Hash, SessionKey};
-use polkadot_primitives::parachain::{Id as ParaId, BlockData, Collation, Extrinsic, CandidateReceipt};
-
-use parking_lot::Mutex;
-use futures::{future, prelude::*};
-
-use super::{GroupInfo, TableRouter};
-use self::includable::IncludabilitySender;
-
-mod includable;
-
-pub use self::includable::Includable;
-pub use table::{SignedStatement, Statement};
-pub use table::generic::Statement as GenericStatement;
-
-struct TableContext {
-	parent_hash: Hash,
-	key: Arc<::ed25519::Pair>,
-	groups: HashMap<ParaId, GroupInfo>,
-}
-
-impl table::Context for TableContext {
-	fn is_member_of(&self, authority: &SessionKey, group: &ParaId) -> bool {
-		self.groups.get(group).map_or(false, |g| g.validity_guarantors.contains(authority))
-	}
-
-	fn is_availability_guarantor_of(&self, authority: &SessionKey, group: &ParaId) -> bool {
-		self.groups.get(group).map_or(false, |g| g.availability_guarantors.contains(authority))
-	}
-
-	fn requisite_votes(&self, group: &ParaId) -> (usize, usize) {
-		self.groups.get(group).map_or(
-			(usize::max_value(), usize::max_value()),
-			|g| (g.needed_validity, g.needed_availability),
-		)
-	}
-}
-
-impl TableContext {
-	fn local_id(&self) -> SessionKey {
-		self.key.public().into()
-	}
-
-	fn sign_statement(&self, statement: table::Statement) -> table::SignedStatement {
-		let signature = ::sign_table_statement(&statement, &self.key, &self.parent_hash).into();
-
-		table::SignedStatement {
-			statement,
-			signature,
-			sender: self.local_id(),
-		}
-	}
-}
-
-// A shared table object.
-struct SharedTableInner {
-	table: Table<TableContext>,
-	proposed_digest: Option<Hash>,
-	checked_validity: HashSet<Hash>,
-	checked_availability: HashSet<Hash>,
-	trackers: Vec<IncludabilitySender>,
-	extrinsic_store: ExtrinsicStore,
-}
-
-impl SharedTableInner {
-	// Import a single statement. Provide a handle to a table router and a function
-	// used to determine if a referenced candidate is valid.
-	//
-	// the statement producer, if any, will produce only statements concerning the same candidate
-	// as the one just imported
-	fn import_remote_statement<R: TableRouter>(
-		&mut self,
-		context: &TableContext,
-		router: &R,
-		statement: table::SignedStatement,
-	) -> Option<StatementProducer<
-		<R::FetchCandidate as IntoFuture>::Future,
-		<R::FetchExtrinsic as IntoFuture>::Future,
-	>> {
-		let summary = match self.table.import_statement(context, statement) {
-			Some(summary) => summary,
-			None => return None,
-		};
-
-		self.update_trackers(&summary.candidate, context);
-
-		let local_id = context.local_id();
-
-		let is_validity_member = context.is_member_of(&local_id, &summary.group_id);
-		let is_availability_member =
-			context.is_availability_guarantor_of(&local_id, &summary.group_id);
-
-		let digest = &summary.candidate;
-
-		// TODO: consider a strategy based on the number of candidate votes as well.
-		// only check validity if this wasn't locally proposed.
-		let checking_validity = is_validity_member
-			&& self.proposed_digest.as_ref().map_or(true, |d| d != digest)
-			&& self.checked_validity.insert(digest.clone());
-
-		let checking_availability = is_availability_member
-			&& self.checked_availability.insert(digest.clone());
-
-		let work = if checking_validity || checking_availability {
-			match self.table.get_candidate(&digest) {
-				None => None, // TODO: handle table inconsistency somehow?
-				Some(candidate) => {
-					let fetch_block_data =
-						router.fetch_block_data(candidate).into_future().fuse();
-
-					let fetch_extrinsic = if checking_availability {
-						Some(
-							router.fetch_extrinsic_data(candidate).into_future().fuse()
-						)
-					} else {
-						None
-					};
-
-					Some(Work {
-						candidate_receipt: candidate.clone(),
-						fetch_block_data,
-						fetch_extrinsic,
-						evaluate: checking_validity,
-						ensure_available: checking_availability,
-					})
-				}
-			}
-		} else {
-			None
-		};
-
-		work.map(|work| StatementProducer {
-			produced_statements: Default::default(),
-			extrinsic_store: self.extrinsic_store.clone(),
-			relay_parent: context.parent_hash.clone(),
-			work
-		})
-	}
-
-	fn update_trackers(&mut self, candidate: &Hash, context: &TableContext) {
-		let includable = self.table.candidate_includable(candidate, context);
-		for i in (0..self.trackers.len()).rev() {
-			if self.trackers[i].update_candidate(candidate.clone(), includable) {
-				self.trackers.swap_remove(i);
-			}
-		}
-	}
-}
-
-/// Produced statements about a specific candidate.
-/// Both may be `None`.
-#[derive(Default)]
-pub struct ProducedStatements {
-	/// A statement about the validity of the candidate.
-	pub validity: Option<table::Statement>,
-	/// A statement about availability of data. If this is `Some`,
-	/// then `block_data` and `extrinsic` should be `Some` as well.
-	pub availability: Option<table::Statement>,
-	/// Block data to ensure availability of.
-	pub block_data: Option<BlockData>,
-	/// Extrinsic data to ensure availability of.
-	pub extrinsic: Option<Extrinsic>,
-}
-
-/// Future that produces statements about a specific candidate.
-pub struct StatementProducer<D: Future, E: Future> {
-	produced_statements: ProducedStatements,
-	work: Work<D, E>,
-	relay_parent: Hash,
-	extrinsic_store: ExtrinsicStore,
-}
-
-impl<D: Future, E: Future> StatementProducer<D, E> {
-	/// Attach a function for verifying fetched collation to the statement producer.
-	/// This will transform it into a future.
-	///
-	/// The collation-checking function should return `true` if known to be valid,
-	/// `false` if known to be invalid, and `None` if unable to determine.
-	pub fn prime<C: FnMut(Collation) -> Option<bool>>(self, check_candidate: C) -> PrimedStatementProducer<D, E, C> {
-		PrimedStatementProducer {
-			inner: self,
-			check_candidate,
-		}
-	}
-}
-
-struct Work<D: Future, E: Future> {
-	candidate_receipt: CandidateReceipt,
-	fetch_block_data: future::Fuse<D>,
-	fetch_extrinsic: Option<future::Fuse<E>>,
-	evaluate: bool,
-	ensure_available: bool,
-}
-
-/// Primed statement producer.
-pub struct PrimedStatementProducer<D: Future, E: Future, C> {
-	inner: StatementProducer<D, E>,
-	check_candidate: C,
-}
-
-impl<D, E, C, Err> Future for PrimedStatementProducer<D, E, C>
-	where
-		D: Future<Item=BlockData,Error=Err>,
-		E: Future<Item=Extrinsic,Error=Err>,
-		C: FnMut(Collation) -> Option<bool>,
-		Err: From<::std::io::Error>,
-{
-	type Item = ProducedStatements;
-	type Error = Err;
-
-	fn poll(&mut self) -> Poll<ProducedStatements, Err> {
-		let work = &mut self.inner.work;
-		let candidate = &work.candidate_receipt;
-		let statements = &mut self.inner.produced_statements;
-
-		let mut candidate_hash = None;
-		let mut candidate_hash = move ||
-			candidate_hash.get_or_insert_with(|| candidate.hash()).clone();
-
-		if let Async::Ready(block_data) = work.fetch_block_data.poll()? {
-			statements.block_data = Some(block_data.clone());
-			if work.evaluate {
-				let is_good = (self.check_candidate)(Collation {
-					block_data,
-					receipt: work.candidate_receipt.clone(),
-				});
-
-				let hash = candidate_hash();
-
-				debug!(target: "consensus", "Making validity statement about candidate {}: is_good? {:?}", hash, is_good);
-				statements.validity = match is_good {
-					Some(true) => Some(GenericStatement::Valid(hash)),
-					Some(false) => Some(GenericStatement::Invalid(hash)),
-					None => None,
-				};
-
-				work.evaluate = false;
-			}
-		}
-
-		if let Async::Ready(Some(extrinsic)) = work.fetch_extrinsic.poll()? {
-			if work.ensure_available {
-				let hash = candidate_hash();
-				debug!(target: "consensus", "Claiming candidate {} available.", hash);
-
-				statements.extrinsic = Some(extrinsic);
-				statements.availability = Some(GenericStatement::Available(hash));
-
-				work.ensure_available = false;
-			}
-		}
-
-		let done = match (work.evaluate, work.ensure_available) {
-			(false, false) => true,
-			_ => false,
-		};
-
-		if done {
-			// commit claimed-available data to disk before returning statements from the future.
-			if let (&Some(ref block), extrinsic) = (&statements.block_data, &statements.extrinsic) {
-				self.inner.extrinsic_store.make_available(Data {
-					relay_parent: self.inner.relay_parent,
-					parachain_id: work.candidate_receipt.parachain_index,
-					candidate_hash: candidate_hash(),
-					block_data: block.clone(),
-					extrinsic: extrinsic.clone(),
-				})?;
-			}
-
-			Ok(Async::Ready(::std::mem::replace(statements, Default::default())))
-		} else {
-			Ok(Async::NotReady)
-		}
-	}
-}
-
-/// A shared table object.
-pub struct SharedTable {
-	context: Arc<TableContext>,
-	inner: Arc<Mutex<SharedTableInner>>,
-}
-
-impl Clone for SharedTable {
-	fn clone(&self) -> Self {
-		SharedTable {
-			context: self.context.clone(),
-			inner: self.inner.clone(),
-		}
-	}
-}
-
-impl SharedTable {
-	/// Create a new shared table.
-	///
-	/// Provide the key to sign with, and the parent hash of the relay chain
-	/// block being built.
-	pub fn new(
-		groups: HashMap<ParaId, GroupInfo>,
-		key: Arc<::ed25519::Pair>,
-		parent_hash: Hash,
-		extrinsic_store: ExtrinsicStore,
-	) -> Self {
-		SharedTable {
-			context: Arc::new(TableContext { groups, key, parent_hash }),
-			inner: Arc::new(Mutex::new(SharedTableInner {
-				table: Table::default(),
-				proposed_digest: None,
-				checked_validity: HashSet::new(),
-				checked_availability: HashSet::new(),
-				trackers: Vec::new(),
-				extrinsic_store,
-			}))
-		}
-	}
-
-	/// Get the parent hash this table should hold statements localized to.
-	pub fn consensus_parent_hash(&self) -> &Hash {
-		&self.context.parent_hash
-	}
-
-	/// Get the local validator session key.
-	pub fn session_key(&self) -> SessionKey {
-		self.context.local_id()
-	}
-
-	/// Get group info.
-	pub fn group_info(&self) -> &HashMap<ParaId, GroupInfo> {
-		&self.context.groups
-	}
-
-	/// Import a single statement with remote source, whose signature has already been checked.
-	///
-	/// The statement producer, if any, will produce only statements concerning the same candidate
-	/// as the one just imported
-	pub fn import_remote_statement<R: TableRouter>(
-		&self,
-		router: &R,
-		statement: table::SignedStatement,
-	) -> Option<StatementProducer<
-		<R::FetchCandidate as IntoFuture>::Future,
-		<R::FetchExtrinsic as IntoFuture>::Future,
-	>> {
-		self.inner.lock().import_remote_statement(&*self.context, router, statement)
-	}
-
-	/// Import many statements at once.
-	///
-	/// Provide an iterator yielding remote, pre-checked statements.
-	///
-	/// The statement producer, if any, will produce only statements concerning the same candidate
-	/// as the one just imported
-	pub fn import_remote_statements<R, I, U>(&self, router: &R, iterable: I) -> U
-		where
-			R: TableRouter,
-			I: IntoIterator<Item=table::SignedStatement>,
-			U: ::std::iter::FromIterator<Option<StatementProducer<
-				<R::FetchCandidate as IntoFuture>::Future,
-				<R::FetchExtrinsic as IntoFuture>::Future,
-			>>>,
-	{
-		let mut inner = self.inner.lock();
-
-		iterable.into_iter().map(move |statement| {
-			inner.import_remote_statement(&*self.context, router, statement)
-		}).collect()
-	}
-
-	/// Sign and import a local statement.
-	///
-	/// For candidate statements, this may also produce a second signed statement
-	/// concerning the availability of the candidate data.
-	pub fn sign_and_import(&self, statement: table::Statement)
-		-> (SignedStatement, Option<SignedStatement>)
-	{
-		let (proposed_digest, availability) = match statement {
-			GenericStatement::Candidate(ref c) => {
-				let mut availability = None;
-				let hash = c.hash();
-
-				// TODO: actually store the data in an availability store of some kind.
-				if self.context.is_availability_guarantor_of(&self.context.local_id(), &c.parachain_index) {
-					availability = Some(self.context.sign_statement(GenericStatement::Available(hash)));
-				}
-
-				(Some(hash), availability)
-			}
-			_ => (None, None),
-		};
-
-		let signed_statement = self.context.sign_statement(statement);
-
-		let mut inner = self.inner.lock();
-		if proposed_digest.is_some() {
-			inner.proposed_digest = proposed_digest;
-		}
-
-		inner.table.import_statement(&*self.context, signed_statement.clone());
-
-		// ensure the availability statement is imported after the candidate.
-		if let Some(a) = availability.clone() {
-			inner.table.import_statement(&*self.context, a);
-		}
-
-		(signed_statement, availability)
-	}
-
-	/// Execute a closure using a specific candidate.
-	///
-	/// Deadlocks if called recursively.
-	pub fn with_candidate<F, U>(&self, digest: &Hash, f: F) -> U
-		where F: FnOnce(Option<&CandidateReceipt>) -> U
-	{
-		let inner = self.inner.lock();
-		f(inner.table.get_candidate(digest))
-	}
-
-	/// Execute a closure using the current proposed set.
-	///
-	/// Deadlocks if called recursively.
-	pub fn with_proposal<F, U>(&self, f: F) -> U
-		where F: FnOnce(Vec<&CandidateReceipt>) -> U
-	{
-		let inner = self.inner.lock();
-		f(inner.table.proposed_candidates(&*self.context))
-	}
-
-	/// Get the number of parachains which have available candidates.
-	pub fn includable_count(&self) -> usize {
-		self.inner.lock().table.includable_count()
-	}
-
-	/// Get all witnessed misbehavior.
-	pub fn get_misbehavior(&self) -> HashMap<SessionKey, table::Misbehavior> {
-		self.inner.lock().table.get_misbehavior().clone()
-	}
-
-	/// Track includability  of a given set of candidate hashes.
-	pub fn track_includability<I>(&self, iterable: I) -> Includable
-		where I: IntoIterator<Item=Hash>
-	{
-		let mut inner = self.inner.lock();
-
-		let (tx, rx) = includable::track(iterable.into_iter().map(|x| {
-			let includable = inner.table.candidate_includable(&x, &*self.context);
-			(x, includable)
-		}));
-
-		if !tx.is_complete() {
-			inner.trackers.push(tx);
-		}
-
-		rx
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use substrate_keyring::Keyring;
-
-	#[derive(Clone)]
-	struct DummyRouter;
-	impl TableRouter for DummyRouter {
-		type Error = ::std::io::Error;
-		type FetchCandidate = ::futures::future::Empty<BlockData,Self::Error>;
-		type FetchExtrinsic = ::futures::future::Empty<Extrinsic,Self::Error>;
-
-		fn local_candidate(&self, _candidate: CandidateReceipt, _block_data: BlockData, _extrinsic: Extrinsic) {
-
-		}
-		fn fetch_block_data(&self, _candidate: &CandidateReceipt) -> Self::FetchCandidate {
-			::futures::future::empty()
-		}
-		fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic {
-			::futures::future::empty()
-		}
-	}
-
-	#[test]
-	fn statement_triggers_fetch_and_evaluate() {
-		let mut groups = HashMap::new();
-
-		let para_id = ParaId::from(1);
-		let local_id = Keyring::Alice.to_raw_public().into();
-		let local_key = Arc::new(Keyring::Alice.pair());
-
-		let validity_other = Keyring::Bob.to_raw_public().into();
-		let validity_other_key = Keyring::Bob.pair();
-		let parent_hash = Default::default();
-
-		groups.insert(para_id, GroupInfo {
-			validity_guarantors: [local_id, validity_other].iter().cloned().collect(),
-			availability_guarantors: Default::default(),
-			needed_validity: 2,
-			needed_availability: 0,
-		});
-
-		let shared_table = SharedTable::new(
-			groups,
-			local_key.clone(),
-			parent_hash,
-			ExtrinsicStore::new_in_memory(),
-		);
-
-		let candidate = CandidateReceipt {
-			parachain_index: para_id,
-			collator: [1; 32].into(),
-			signature: Default::default(),
-			head_data: ::polkadot_primitives::parachain::HeadData(vec![1, 2, 3, 4]),
-			balance_uploads: Vec::new(),
-			egress_queue_roots: Vec::new(),
-			fees: 1_000_000,
-			block_data_hash: [2; 32].into(),
-		};
-
-		let candidate_statement = GenericStatement::Candidate(candidate);
-
-		let signature = ::sign_table_statement(&candidate_statement, &validity_other_key, &parent_hash);
-		let signed_statement = ::table::generic::SignedStatement {
-			statement: candidate_statement,
-			signature: signature.into(),
-			sender: validity_other,
-		};
-
-		let producer = shared_table.import_remote_statement(
-			&DummyRouter,
-			signed_statement,
-		).expect("candidate and local validity group are same");
-
-		assert!(producer.work.evaluate, "should evaluate validity");
-		assert!(producer.work.fetch_extrinsic.is_none(), "should not fetch extrinsic");
-	}
-
-	#[test]
-	fn statement_triggers_fetch_and_availability() {
-		let mut groups = HashMap::new();
-
-		let para_id = ParaId::from(1);
-		let local_id = Keyring::Alice.to_raw_public().into();
-		let local_key = Arc::new(Keyring::Alice.pair());
-
-		let validity_other = Keyring::Bob.to_raw_public().into();
-		let validity_other_key = Keyring::Bob.pair();
-		let parent_hash = Default::default();
-
-		groups.insert(para_id, GroupInfo {
-			validity_guarantors: [validity_other].iter().cloned().collect(),
-			availability_guarantors: [local_id].iter().cloned().collect(),
-			needed_validity: 1,
-			needed_availability: 1,
-		});
-
-		let shared_table = SharedTable::new(
-			groups,
-			local_key.clone(),
-			parent_hash,
-			ExtrinsicStore::new_in_memory(),
-		);
-
-		let candidate = CandidateReceipt {
-			parachain_index: para_id,
-			collator: [1; 32].into(),
-			signature: Default::default(),
-			head_data: ::polkadot_primitives::parachain::HeadData(vec![1, 2, 3, 4]),
-			balance_uploads: Vec::new(),
-			egress_queue_roots: Vec::new(),
-			fees: 1_000_000,
-			block_data_hash: [2; 32].into(),
-		};
-
-		let candidate_statement = GenericStatement::Candidate(candidate);
-
-		let signature = ::sign_table_statement(&candidate_statement, &validity_other_key, &parent_hash);
-		let signed_statement = ::table::generic::SignedStatement {
-			statement: candidate_statement,
-			signature: signature.into(),
-			sender: validity_other,
-		};
-
-		let producer = shared_table.import_remote_statement(
-			&DummyRouter,
-			signed_statement,
-		).expect("should produce work");
-
-		assert!(producer.work.fetch_extrinsic.is_some(), "should fetch extrinsic when guaranteeing availability");
-		assert!(!producer.work.evaluate, "should not evaluate validity");
-		assert!(producer.work.ensure_available);
-	}
-
-	#[test]
-	fn evaluate_makes_block_data_available() {
-		let store = ExtrinsicStore::new_in_memory();
-		let relay_parent = [0; 32].into();
-		let para_id = 5.into();
-		let block_data = BlockData(vec![1, 2, 3]);
-
-		let candidate = CandidateReceipt {
-			parachain_index: para_id,
-			collator: [1; 32].into(),
-			signature: Default::default(),
-			head_data: ::polkadot_primitives::parachain::HeadData(vec![1, 2, 3, 4]),
-			balance_uploads: Vec::new(),
-			egress_queue_roots: Vec::new(),
-			fees: 1_000_000,
-			block_data_hash: [2; 32].into(),
-		};
-
-		let hash = candidate.hash();
-
-		let block_data_res: ::std::io::Result<_> = Ok(block_data.clone());
-		let producer: StatementProducer<_, future::Empty<_, _>> = StatementProducer {
-			produced_statements: Default::default(),
-			work: Work {
-				candidate_receipt: candidate,
-				fetch_block_data: block_data_res.into_future().fuse(),
-				fetch_extrinsic: None,
-				evaluate: true,
-				ensure_available: false,
-			},
-			relay_parent,
-			extrinsic_store: store.clone(),
-		};
-
-		let produced = producer.prime(|_| Some(true)).wait().unwrap();
-
-		assert_eq!(produced.block_data.as_ref(), Some(&block_data));
-		assert!(produced.validity.is_some());
-		assert!(produced.availability.is_none());
-
-		assert_eq!(store.block_data(relay_parent, hash).unwrap(), block_data);
-		assert!(store.extrinsic(relay_parent, hash).is_none());
-	}
-
-	#[test]
-	fn full_availability() {
-		let store = ExtrinsicStore::new_in_memory();
-		let relay_parent = [0; 32].into();
-		let para_id = 5.into();
-		let block_data = BlockData(vec![1, 2, 3]);
-
-		let candidate = CandidateReceipt {
-			parachain_index: para_id,
-			collator: [1; 32].into(),
-			signature: Default::default(),
-			head_data: ::polkadot_primitives::parachain::HeadData(vec![1, 2, 3, 4]),
-			balance_uploads: Vec::new(),
-			egress_queue_roots: Vec::new(),
-			fees: 1_000_000,
-			block_data_hash: [2; 32].into(),
-		};
-
-		let hash = candidate.hash();
-
-		let block_data_res: ::std::io::Result<_> = Ok(block_data.clone());
-		let extrinsic_res: ::std::io::Result<_> = Ok(Extrinsic);
-		let producer = StatementProducer {
-			produced_statements: Default::default(),
-			work: Work {
-				candidate_receipt: candidate,
-				fetch_block_data: block_data_res.into_future().fuse(),
-				fetch_extrinsic: Some(extrinsic_res.into_future().fuse()),
-				evaluate: false,
-				ensure_available: true,
-			},
-			relay_parent,
-			extrinsic_store: store.clone(),
-		};
-
-		let produced = producer.prime(|_| Some(true)).wait().unwrap();
-
-		assert_eq!(produced.block_data.as_ref(), Some(&block_data));
-		assert!(produced.validity.is_none());
-		assert!(produced.availability.is_some());
-
-		assert_eq!(store.block_data(relay_parent, hash).unwrap(), block_data);
-		assert!(store.extrinsic(relay_parent, hash).is_some());
-	}
-}
diff --git a/substrate/polkadot/executor/Cargo.toml b/substrate/polkadot/executor/Cargo.toml
deleted file mode 100644
index e7cfc5b77203d503c3fcbf0632c90e6fb5083e8f..0000000000000000000000000000000000000000
--- a/substrate/polkadot/executor/Cargo.toml
+++ /dev/null
@@ -1,9 +0,0 @@
-[package]
-name = "polkadot-executor"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-description = "Polkadot node implementation in Rust."
-
-[dependencies]
-substrate-executor = { path = "../../substrate/executor" }
-polkadot-runtime = { path = "../runtime" }
diff --git a/substrate/polkadot/executor/README.adoc b/substrate/polkadot/executor/README.adoc
deleted file mode 100644
index 1c91cccab5fac34d91e16992c8db023004ee30f9..0000000000000000000000000000000000000000
--- a/substrate/polkadot/executor/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Executor
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/executor/src/lib.rs b/substrate/polkadot/executor/src/lib.rs
deleted file mode 100644
index 82cd5cd47851c1383c7f378a2aa7de936ae6ddb1..0000000000000000000000000000000000000000
--- a/substrate/polkadot/executor/src/lib.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Substrate.
-
-// Substrate 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.
-
-// Substrate 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 Substrate.  If not, see <http://www.gnu.org/licenses/>.
-
-//! A `CodeExecutor` specialisation which uses natively compiled runtime when the wasm to be
-//! executed is equivalent to the natively compiled code.
-
-extern crate polkadot_runtime;
-#[macro_use] extern crate substrate_executor;
-
-native_executor_instance!(pub Executor, polkadot_runtime::api::dispatch, polkadot_runtime::VERSION, include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm"));
diff --git a/substrate/polkadot/network/Cargo.toml b/substrate/polkadot/network/Cargo.toml
deleted file mode 100644
index 21fd95f71b57da5cb44d4a02a9213db2357688be..0000000000000000000000000000000000000000
--- a/substrate/polkadot/network/Cargo.toml
+++ /dev/null
@@ -1,22 +0,0 @@
-[package]
-name = "polkadot-network"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-description = "Polkadot-specific networking protocol"
-
-[dependencies]
-parking_lot = "0.4"
-polkadot-api = { path = "../api" }
-polkadot-availability-store = { path = "../availability-store" }
-polkadot-consensus = { path = "../consensus" }
-polkadot-primitives = { path = "../primitives" }
-substrate-bft = { path = "../../substrate/bft" }
-substrate-codec = { path = "../../substrate/codec" }
-substrate-codec-derive = { path = "../../substrate/codec/derive" }
-substrate-network = { path = "../../substrate/network" }
-substrate-primitives = { path = "../../substrate/primitives" }
-ed25519 = { path = "../../substrate/ed25519" }
-futures = "0.1"
-tokio = "0.1.7"
-log = "0.4"
-rhododendron = "0.3"
diff --git a/substrate/polkadot/network/README.adoc b/substrate/polkadot/network/README.adoc
deleted file mode 100644
index 1c2ad29b1b0981f6c4807f7420c2ffc82d3d34ce..0000000000000000000000000000000000000000
--- a/substrate/polkadot/network/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Network
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/network/src/collator_pool.rs b/substrate/polkadot/network/src/collator_pool.rs
deleted file mode 100644
index c4541856104e8973bd5ef89e8a0f83fe2c0967b1..0000000000000000000000000000000000000000
--- a/substrate/polkadot/network/src/collator_pool.rs
+++ /dev/null
@@ -1,320 +0,0 @@
-// Copyright 2018 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Bridge between the network and consensus service for getting collations to it.
-
-use polkadot_primitives::{AccountId, Hash};
-use polkadot_primitives::parachain::{Id as ParaId, Collation};
-
-use futures::sync::oneshot;
-
-use std::collections::hash_map::{HashMap, Entry};
-use std::time::{Duration, Instant};
-
-const COLLATION_LIFETIME: Duration = Duration::from_secs(60 * 5);
-
-/// The role of the collator. Whether they're the primary or backup for this parachain.
-#[derive(PartialEq, Debug, Clone, Copy, Encode, Decode)]
-pub enum Role {
-	/// Primary collators should send collations whenever it's time.
-	Primary = 0,
-	/// Backup collators should not.
-	Backup = 1,
-}
-
-/// A maintenance action for the collator set.
-#[derive(PartialEq, Debug)]
-#[allow(dead_code)]
-pub enum Action {
-	/// Disconnect the given collator.
-	Disconnect(AccountId),
-	/// Give the collator a new role.
-	NewRole(AccountId, Role),
-}
-
-struct CollationSlot {
-	live_at: Instant,
-	entries: SlotEntries,
-}
-
-impl CollationSlot {
-	fn blank_now() -> Self {
-		CollationSlot {
-			live_at: Instant::now(),
-			entries: SlotEntries::Blank,
-		}
-	}
-
-	fn stay_alive(&self, now: Instant) -> bool {
-		self.live_at + COLLATION_LIFETIME > now
-	}
-}
-
-enum SlotEntries {
-	Blank,
-	// not queried yet
-	Pending(Vec<Collation>),
-	// waiting for next to arrive.
-	Awaiting(Vec<oneshot::Sender<Collation>>),
-}
-
-impl SlotEntries {
-	fn received_collation(&mut self, collation: Collation) {
-		*self = match ::std::mem::replace(self, SlotEntries::Blank) {
-			SlotEntries::Blank => SlotEntries::Pending(vec![collation]),
-			SlotEntries::Pending(mut cs) => {
-				cs.push(collation);
-				SlotEntries::Pending(cs)
-			}
-			SlotEntries::Awaiting(senders) => {
-				for sender in senders {
-					let _ = sender.send(collation.clone());
-				}
-
-				SlotEntries::Blank
-			}
-		};
-	}
-
-	fn await_with(&mut self, sender: oneshot::Sender<Collation>) {
-		*self = match ::std::mem::replace(self, SlotEntries::Blank) {
-			SlotEntries::Blank => SlotEntries::Awaiting(vec![sender]),
-			SlotEntries::Awaiting(mut senders) => {
-				senders.push(sender);
-				SlotEntries::Awaiting(senders)
-			}
-			SlotEntries::Pending(mut cs) => {
-				let next_collation = cs.pop().expect("empty variant is always `Blank`; qed");
-				let _ = sender.send(next_collation);
-
-				if cs.is_empty() {
-					SlotEntries::Blank
-				} else {
-					SlotEntries::Pending(cs)
-				}
-			}
-		};
-	}
-}
-
-struct ParachainCollators {
-	primary: AccountId,
-	backup: Vec<AccountId>,
-}
-
-/// Manages connected collators and role assignments from the perspective of a validator.
-pub struct CollatorPool {
-	collators: HashMap<AccountId, ParaId>,
-	parachain_collators: HashMap<ParaId, ParachainCollators>,
-	collations: HashMap<(Hash, ParaId), CollationSlot>,
-}
-
-impl CollatorPool {
-	/// Create a new `CollatorPool` object.
-	pub fn new() -> Self {
-		CollatorPool {
-			collators: HashMap::new(),
-			parachain_collators: HashMap::new(),
-			collations: HashMap::new(),
-		}
-	}
-
-	/// Call when a new collator is authenticated. Returns the role.
-	pub fn on_new_collator(&mut self, account_id: AccountId, para_id: ParaId) -> Role {
-		self.collators.insert(account_id.clone(), para_id);
-		match self.parachain_collators.entry(para_id) {
-			Entry::Vacant(vacant) => {
-				vacant.insert(ParachainCollators {
-					primary: account_id,
-					backup: Vec::new(),
-				});
-
-				Role::Primary
-			},
-			Entry::Occupied(mut occupied) => {
-				occupied.get_mut().backup.push(account_id);
-
-				Role::Backup
-			}
-		}
-	}
-
-	/// Called when a collator disconnects. If it was the primary, returns a new primary for that
-	/// parachain.
-	pub fn on_disconnect(&mut self, account_id: AccountId) -> Option<AccountId> {
-		self.collators.remove(&account_id).and_then(|para_id| match self.parachain_collators.entry(para_id) {
-			Entry::Vacant(_) => None,
-			Entry::Occupied(mut occ) => {
-				if occ.get().primary == account_id {
-					if occ.get().backup.is_empty() {
-						occ.remove();
-						None
-					} else {
-						let mut collators = occ.get_mut();
-						collators.primary = collators.backup.pop().expect("backup non-empty; qed");
-						Some(collators.primary)
-					}
-				} else {
-					let pos = occ.get().backup.iter().position(|a| a == &account_id)
-						.expect("registered collator always present in backup if not primary; qed");
-
-					occ.get_mut().backup.remove(pos);
-					None
-				}
-			}
-		})
-	}
-
-	/// Called when a collation is received.
-	/// The collator should be registered for the parachain of the collation as a precondition of this function.
-	/// The collation should have been checked for integrity of signature before passing to this function.
-	pub fn on_collation(&mut self, account_id: AccountId, relay_parent: Hash, collation: Collation) {
-		if let Some(para_id) = self.collators.get(&account_id) {
-			debug_assert_eq!(para_id, &collation.receipt.parachain_index);
-
-			// TODO: punish if not primary?
-
-			self.collations.entry((relay_parent, para_id.clone()))
-				.or_insert_with(CollationSlot::blank_now)
-				.entries
-				.received_collation(collation);
-		}
-	}
-
-	/// Wait for a collation from a parachain.
-	pub fn await_collation(&mut self, relay_parent: Hash, para_id: ParaId, sender: oneshot::Sender<Collation>) {
-		self.collations.entry((relay_parent, para_id))
-			.or_insert_with(CollationSlot::blank_now)
-			.entries
-			.await_with(sender);
-	}
-
-	/// Call periodically to perform collator set maintenance.
-	/// Returns a set of actions to perform on the network level.
-	pub fn maintain_peers(&mut self) -> Vec<Action> {
-		// TODO: rearrange periodically to new primary, evaluate based on latency etc.
-		Vec::new()
-	}
-
-	/// called when a block with given hash has been imported.
-	pub fn collect_garbage(&mut self, chain_head: Option<&Hash>) {
-		let now = Instant::now();
-		self.collations.retain(|&(ref h, _), slot| chain_head != Some(h) && slot.stay_alive(now));
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use polkadot_primitives::parachain::{CandidateReceipt, BlockData, HeadData};
-	use substrate_primitives::H512;
-	use futures::Future;
-
-	#[test]
-	fn disconnect_primary_gives_new_primary() {
-		let mut pool = CollatorPool::new();
-		let para_id: ParaId = 5.into();
-		let bad_primary = [0; 32].into();
-		let good_backup = [1; 32].into();
-
-		assert_eq!(pool.on_new_collator(bad_primary, para_id.clone()), Role::Primary);
-		assert_eq!(pool.on_new_collator(good_backup, para_id.clone()), Role::Backup);
-		assert_eq!(pool.on_disconnect(bad_primary), Some(good_backup));
-		assert_eq!(pool.on_disconnect(good_backup), None);
-	}
-
-	#[test]
-	fn disconnect_backup_removes_from_pool() {
-		let mut pool = CollatorPool::new();
-		let para_id: ParaId = 5.into();
-		let primary = [0; 32].into();
-		let backup = [1; 32].into();
-
-		assert_eq!(pool.on_new_collator(primary, para_id.clone()), Role::Primary);
-		assert_eq!(pool.on_new_collator(backup, para_id.clone()), Role::Backup);
-		assert_eq!(pool.on_disconnect(backup), None);
-		assert!(pool.parachain_collators.get(&para_id).unwrap().backup.is_empty());
-	}
-
-	#[test]
-	fn await_before_collation() {
-		let mut pool = CollatorPool::new();
-		let para_id: ParaId = 5.into();
-		let primary = [0; 32].into();
-		let relay_parent = [1; 32].into();
-
-		assert_eq!(pool.on_new_collator(primary, para_id.clone()), Role::Primary);
-		let (tx1, rx1) = oneshot::channel();
-		let (tx2, rx2) = oneshot::channel();
-		pool.await_collation(relay_parent, para_id, tx1);
-		pool.await_collation(relay_parent, para_id, tx2);
-		pool.on_collation(primary, relay_parent, Collation {
-			receipt: CandidateReceipt {
-				parachain_index: para_id,
-				collator: primary.into(),
-				signature: H512::from([2; 64]).into(),
-				head_data: HeadData(vec![1, 2, 3]),
-				balance_uploads: vec![],
-				egress_queue_roots: vec![],
-				fees: 0,
-				block_data_hash: [3; 32].into(),
-			},
-			block_data: BlockData(vec![4, 5, 6]),
-		});
-
-		rx1.wait().unwrap();
-		rx2.wait().unwrap();
-	}
-
-	#[test]
-	fn collate_before_await() {
-		let mut pool = CollatorPool::new();
-		let para_id: ParaId = 5.into();
-		let primary = [0; 32].into();
-		let relay_parent = [1; 32].into();
-
-		assert_eq!(pool.on_new_collator(primary, para_id.clone()), Role::Primary);
-
-		pool.on_collation(primary, relay_parent, Collation {
-			receipt: CandidateReceipt {
-				parachain_index: para_id,
-				collator: primary.into(),
-				signature: H512::from([2; 64]).into(),
-				head_data: HeadData(vec![1, 2, 3]),
-				balance_uploads: vec![],
-				egress_queue_roots: vec![],
-				fees: 0,
-				block_data_hash: [3; 32].into(),
-			},
-			block_data: BlockData(vec![4, 5, 6]),
-		});
-
-		let (tx, rx) = oneshot::channel();
-		pool.await_collation(relay_parent, para_id, tx);
-		rx.wait().unwrap();
-	}
-
-	#[test]
-	fn slot_stay_alive() {
-		let slot = CollationSlot::blank_now();
-		let now = slot.live_at;
-
-		assert!(slot.stay_alive(now));
-		assert!(slot.stay_alive(now + Duration::from_secs(10)));
-		assert!(!slot.stay_alive(now + COLLATION_LIFETIME));
-		assert!(!slot.stay_alive(now + COLLATION_LIFETIME + Duration::from_secs(10)));
-	}
-}
diff --git a/substrate/polkadot/network/src/consensus.rs b/substrate/polkadot/network/src/consensus.rs
deleted file mode 100644
index e3a1c592e787d8496e55b365b11a1db1cd4c8d6e..0000000000000000000000000000000000000000
--- a/substrate/polkadot/network/src/consensus.rs
+++ /dev/null
@@ -1,342 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! The "consensus" networking code built on top of the base network service.
-//! This fulfills the `polkadot_consensus::Network` trait, providing a hook to be called
-//! each time consensus begins on a new chain head.
-
-use bft;
-use ed25519;
-use substrate_network::{self as net, generic_message as msg};
-use substrate_network::consensus_gossip::ConsensusMessage;
-use polkadot_api::{PolkadotApi, LocalPolkadotApi};
-use polkadot_consensus::{Network, SharedTable, Collators};
-use polkadot_primitives::{AccountId, Block, Hash, SessionKey};
-use polkadot_primitives::parachain::{Id as ParaId, Collation};
-use codec::Decode;
-
-use futures::prelude::*;
-use futures::sync::mpsc;
-
-use std::sync::Arc;
-
-use tokio::runtime::TaskExecutor;
-use parking_lot::Mutex;
-
-use super::{Message, NetworkService, Knowledge, CurrentConsensus};
-use router::Router;
-
-/// Sink for output BFT messages.
-pub struct BftSink<E> {
-	network: Arc<NetworkService>,
-	parent_hash: Hash,
-	_marker: ::std::marker::PhantomData<E>,
-}
-
-impl<E> Sink for BftSink<E> {
-	type SinkItem = bft::Communication<Block>;
-	// TODO: replace this with the ! type when that's stabilized
-	type SinkError = E;
-
-	fn start_send(&mut self, message: bft::Communication<Block>) -> ::futures::StartSend<bft::Communication<Block>, E> {
-		let network_message = net::LocalizedBftMessage {
-			message: match message {
-				::rhododendron::Communication::Consensus(c) => msg::BftMessage::Consensus(match c {
-					::rhododendron::LocalizedMessage::Propose(proposal) => msg::SignedConsensusMessage::Propose(msg::SignedConsensusProposal {
-						round_number: proposal.round_number as u32,
-						proposal: proposal.proposal,
-						digest: proposal.digest,
-						sender: proposal.sender,
-						digest_signature: proposal.digest_signature.signature,
-						full_signature: proposal.full_signature.signature,
-					}),
-					::rhododendron::LocalizedMessage::Vote(vote) => msg::SignedConsensusMessage::Vote(msg::SignedConsensusVote {
-						sender: vote.sender,
-						signature: vote.signature.signature,
-						vote: match vote.vote {
-							::rhododendron::Vote::Prepare(r, h) => msg::ConsensusVote::Prepare(r as u32, h),
-							::rhododendron::Vote::Commit(r, h) => msg::ConsensusVote::Commit(r as u32, h),
-							::rhododendron::Vote::AdvanceRound(r) => msg::ConsensusVote::AdvanceRound(r as u32),
-						}
-					}),
-				}),
-				::rhododendron::Communication::Auxiliary(justification) => {
-					let unchecked: bft::UncheckedJustification<_> = justification.uncheck().into();
-					msg::BftMessage::Auxiliary(unchecked.into())
-				}
-			},
-			parent_hash: self.parent_hash,
-		};
-		self.network.with_spec(
-			move |spec, ctx| spec.consensus_gossip.multicast_bft_message(ctx, network_message)
-		);
-		Ok(::futures::AsyncSink::Ready)
-	}
-
-	fn poll_complete(&mut self) -> ::futures::Poll<(), E> {
-		Ok(Async::Ready(()))
-	}
-}
-
-// check signature and authority validity of message.
-fn process_bft_message(msg: msg::LocalizedBftMessage<Block, Hash>, local_id: &SessionKey, authorities: &[SessionKey]) -> Result<Option<bft::Communication<Block>>, bft::Error> {
-	Ok(Some(match msg.message {
-		msg::BftMessage::Consensus(c) => ::rhododendron::Communication::Consensus(match c {
-			msg::SignedConsensusMessage::Propose(proposal) => ::rhododendron::LocalizedMessage::Propose({
-				if &proposal.sender == local_id { return Ok(None) }
-				let proposal = ::rhododendron::LocalizedProposal {
-					round_number: proposal.round_number as usize,
-					proposal: proposal.proposal,
-					digest: proposal.digest,
-					sender: proposal.sender,
-					digest_signature: ed25519::LocalizedSignature {
-						signature: proposal.digest_signature,
-						signer: ed25519::Public(proposal.sender.into()),
-					},
-					full_signature: ed25519::LocalizedSignature {
-						signature: proposal.full_signature,
-						signer: ed25519::Public(proposal.sender.into()),
-					}
-				};
-				bft::check_proposal(authorities, &msg.parent_hash, &proposal)?;
-
-				trace!(target: "bft", "importing proposal message for round {} from {}", proposal.round_number, Hash::from(proposal.sender.0));
-				proposal
-			}),
-			msg::SignedConsensusMessage::Vote(vote) => ::rhododendron::LocalizedMessage::Vote({
-				if &vote.sender == local_id { return Ok(None) }
-				let vote = ::rhododendron::LocalizedVote {
-					sender: vote.sender,
-					signature: ed25519::LocalizedSignature {
-						signature: vote.signature,
-						signer: ed25519::Public(vote.sender.0),
-					},
-					vote: match vote.vote {
-						msg::ConsensusVote::Prepare(r, h) => ::rhododendron::Vote::Prepare(r as usize, h),
-						msg::ConsensusVote::Commit(r, h) => ::rhododendron::Vote::Commit(r as usize, h),
-						msg::ConsensusVote::AdvanceRound(r) => ::rhododendron::Vote::AdvanceRound(r as usize),
-					}
-				};
-				bft::check_vote::<Block>(authorities, &msg.parent_hash, &vote)?;
-
-				trace!(target: "bft", "importing vote {:?} from {}", vote.vote, Hash::from(vote.sender.0));
-				vote
-			}),
-		}),
-		msg::BftMessage::Auxiliary(a) => {
-			let justification = bft::UncheckedJustification::from(a);
-			// TODO: get proper error
-			let justification: Result<_, bft::Error> = bft::check_prepare_justification::<Block>(authorities, msg.parent_hash, justification)
-				.map_err(|_| bft::ErrorKind::InvalidJustification.into());
-			::rhododendron::Communication::Auxiliary(justification?)
-		},
-	}))
-}
-
-// task that processes all gossipped consensus messages,
-// checking signatures
-struct MessageProcessTask<P: PolkadotApi> {
-	inner_stream: mpsc::UnboundedReceiver<ConsensusMessage<Block>>,
-	bft_messages: mpsc::UnboundedSender<bft::Communication<Block>>,
-	validators: Vec<SessionKey>,
-	table_router: Router<P>,
-}
-
-impl<P: LocalPolkadotApi + Send + Sync + 'static> MessageProcessTask<P> {
-	fn process_message(&self, msg: ConsensusMessage<Block>) -> Option<Async<()>> {
-		match msg {
-			ConsensusMessage::Bft(msg) => {
-				let local_id = self.table_router.session_key();
-				match process_bft_message(msg, &local_id, &self.validators[..]) {
-					Ok(Some(msg)) => {
-						if let Err(_) = self.bft_messages.unbounded_send(msg) {
-							// if the BFT receiving stream has ended then
-							// we should just bail.
-							trace!(target: "bft", "BFT message stream appears to have closed");
-							return Some(Async::Ready(()));
-						}
-					}
-					Ok(None) => {} // ignored local message
-					Err(e) => {
-						debug!("Message validation failed: {:?}", e);
-					}
-				}
-			}
-			ConsensusMessage::ChainSpecific(msg, _) => {
-				debug!(target: "consensus", "Processing consensus statement for live consensus");
-				if let Some(Message::Statement(parent_hash, statement)) = Decode::decode(&mut msg.as_slice()) {
-					if ::polkadot_consensus::check_statement(&statement.statement, &statement.signature, statement.sender, &parent_hash) {
-						self.table_router.import_statement(statement);
-					}
-				}
-			}
-		}
-
-		None
-	}
-}
-
-impl<P: LocalPolkadotApi + Send + Sync + 'static> Future for MessageProcessTask<P> {
-	type Item = ();
-	type Error = ();
-
-	fn poll(&mut self) -> Poll<(), ()> {
-		loop {
-			match self.inner_stream.poll() {
-				Ok(Async::Ready(Some(val))) => if let Some(async) = self.process_message(val) {
-					return Ok(async);
-				},
-				Ok(Async::Ready(None)) => return Ok(Async::Ready(())),
-				Ok(Async::NotReady) => return Ok(Async::NotReady),
-				Err(e) => debug!(target: "p_net", "Error getting consensus message: {:?}", e),
-			}
-		}
-	}
-}
-
-/// Input stream from the consensus network.
-pub struct InputAdapter {
-	input: mpsc::UnboundedReceiver<bft::Communication<Block>>,
-}
-
-impl Stream for InputAdapter {
-	type Item = bft::Communication<Block>;
-	type Error = ::polkadot_consensus::Error;
-
-	fn poll(&mut self) -> Poll<Option<Self::Item>, Self::Error> {
-		match self.input.poll() {
-			Err(_) | Ok(Async::Ready(None)) => Err(bft::InputStreamConcluded.into()),
-			Ok(x) => Ok(x)
-		}
-	}
-}
-
-/// Wrapper around the network service
-pub struct ConsensusNetwork<P> {
-	network: Arc<NetworkService>,
-	api: Arc<P>,
-}
-
-impl<P> ConsensusNetwork<P> {
-	/// Create a new consensus networking object.
-	pub fn new(network: Arc<NetworkService>, api: Arc<P>) -> Self {
-		ConsensusNetwork { network, api }
-	}
-}
-
-impl<P> Clone for ConsensusNetwork<P> {
-	fn clone(&self) -> Self {
-		ConsensusNetwork {
-			network: self.network.clone(),
-			api: self.api.clone(),
-		}
-	}
-}
-
-/// A long-lived network which can create parachain statement and BFT message routing processes on demand.
-impl<P: LocalPolkadotApi + Send + Sync + 'static> Network for ConsensusNetwork<P> {
-	type TableRouter = Router<P>;
-	/// The input stream of BFT messages. Should never logically conclude.
-	type Input = InputAdapter;
-	/// The output sink of BFT messages. Messages sent here should eventually pass to all
-	/// current validators.
-	type Output = BftSink<::polkadot_consensus::Error>;
-
-	/// Instantiate a table router using the given shared table.
-	fn communication_for(&self, validators: &[SessionKey], table: Arc<SharedTable>, task_executor: TaskExecutor) -> (Self::TableRouter, Self::Input, Self::Output) {
-		let parent_hash = table.consensus_parent_hash().clone();
-
-		let sink = BftSink {
-			network: self.network.clone(),
-			parent_hash,
-			_marker: Default::default(),
-		};
-
-		let (bft_send, bft_recv) = mpsc::unbounded();
-
-		let knowledge = Arc::new(Mutex::new(Knowledge::new()));
-
-		let local_session_key = table.session_key();
-		let table_router = Router::new(
-			table,
-			self.network.clone(),
-			self.api.clone(),
-			task_executor.clone(),
-			parent_hash,
-			knowledge.clone(),
-		);
-
-		// spin up a task in the background that processes all incoming statements
-		// TODO: propagate statements on a timer?
-		let process_task = self.network.with_spec(|spec, ctx| {
-			spec.new_consensus(ctx, CurrentConsensus {
-				knowledge,
-				parent_hash,
-				local_session_key,
-			});
-
-			MessageProcessTask {
-				inner_stream: spec.consensus_gossip.messages_for(parent_hash),
-				bft_messages: bft_send,
-				validators: validators.to_vec(),
-				table_router: table_router.clone(),
-			}
-		});
-
-		match process_task {
-			Some(task) => task_executor.spawn(task),
-			None => warn!(target: "p_net", "Cannot process incoming messages: network appears to be down"),
-		}
-
-		(table_router, InputAdapter { input: bft_recv }, sink)
-	}
-}
-
-/// Error when the network appears to be down.
-#[derive(Clone, Copy, Debug, PartialEq, Eq)]
-pub struct NetworkDown;
-
-/// A future that resolves when a collation is received.
-pub struct AwaitingCollation(Option<::futures::sync::oneshot::Receiver<Collation>>);
-
-impl Future for AwaitingCollation {
-	type Item = Collation;
-	type Error = NetworkDown;
-
-	fn poll(&mut self) -> Poll<Collation, NetworkDown> {
-		match self.0.poll().map_err(|_| NetworkDown)? {
-			Async::Ready(None) => Err(NetworkDown),
-			Async::Ready(Some(x)) => Ok(Async::Ready(x)),
-			Async::NotReady => Ok(Async::NotReady),
-		}
-	}
-}
-
-
-impl<P: LocalPolkadotApi + Send + Sync + 'static> Collators for ConsensusNetwork<P> {
-	type Error = NetworkDown;
-	type Collation = AwaitingCollation;
-
-	fn collate(&self, parachain: ParaId, relay_parent: Hash) -> Self::Collation {
-		AwaitingCollation(
-			self.network.with_spec(|spec, _| spec.await_collation(relay_parent, parachain))
-		)
-	}
-
-	fn note_bad_collator(&self, collator: AccountId) {
-		self.network.with_spec(|spec, ctx| spec.disconnect_bad_collator(ctx, collator));
-	}
-}
diff --git a/substrate/polkadot/network/src/lib.rs b/substrate/polkadot/network/src/lib.rs
deleted file mode 100644
index 48b382f66258e7cda7f9e37c3267687abce3d641..0000000000000000000000000000000000000000
--- a/substrate/polkadot/network/src/lib.rs
+++ /dev/null
@@ -1,664 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Polkadot-specific network implementation.
-//!
-//! This manages gossip of consensus messages for BFT and for parachain statements,
-//! parachain block and extrinsic data fetching, communication between collators and validators,
-//! and more.
-
-extern crate substrate_bft as bft;
-extern crate substrate_codec as codec;
-extern crate substrate_network;
-extern crate substrate_primitives;
-
-extern crate polkadot_api;
-extern crate polkadot_availability_store as av_store;
-extern crate polkadot_consensus;
-extern crate polkadot_primitives;
-
-extern crate ed25519;
-extern crate futures;
-extern crate parking_lot;
-extern crate tokio;
-extern crate rhododendron;
-
-#[macro_use]
-extern crate log;
-#[macro_use]
-extern crate substrate_codec_derive;
-
-mod collator_pool;
-mod local_collations;
-mod router;
-pub mod consensus;
-
-use codec::{Decode, Encode};
-use futures::sync::oneshot;
-use parking_lot::Mutex;
-use polkadot_consensus::{Statement, SignedStatement, GenericStatement};
-use polkadot_primitives::{AccountId, Block, SessionKey, Hash, Header};
-use polkadot_primitives::parachain::{Id as ParaId, BlockData, Extrinsic, CandidateReceipt, Collation};
-use substrate_network::{NodeIndex, RequestId, Context, Severity};
-use substrate_network::consensus_gossip::ConsensusGossip;
-use substrate_network::{message, generic_message};
-use substrate_network::specialization::Specialization;
-use substrate_network::StatusMessage as GenericFullStatus;
-use self::collator_pool::{CollatorPool, Role, Action};
-use self::local_collations::LocalCollations;
-
-use std::collections::{HashMap, HashSet};
-use std::sync::Arc;
-
-
-#[cfg(test)]
-mod tests;
-
-/// Polkadot protocol id.
-pub const DOT_PROTOCOL_ID: ::substrate_network::ProtocolId = *b"dot";
-
-type FullStatus = GenericFullStatus<Block>;
-
-/// Specialization of the network service for the polkadot protocol.
-pub type NetworkService = ::substrate_network::Service<Block, PolkadotProtocol>;
-
-/// Status of a Polkadot node.
-#[derive(Debug, PartialEq, Eq, Clone, Encode, Decode)]
-pub struct Status {
-	collating_for: Option<(AccountId, ParaId)>,
-}
-
-struct BlockDataRequest {
-	attempted_peers: HashSet<SessionKey>,
-	consensus_parent: Hash,
-	candidate_hash: Hash,
-	block_data_hash: Hash,
-	sender: oneshot::Sender<BlockData>,
-}
-
-// ensures collator-protocol messages are sent in correct order.
-// session key must be sent before collator role.
-enum CollatorState {
-	Fresh,
-	RolePending(Role),
-	Primed,
-}
-
-impl CollatorState {
-	fn send_key<F: FnMut(Message)>(&mut self, key: SessionKey, mut f: F) {
-		f(Message::SessionKey(key));
-		if let CollatorState::RolePending(role) = ::std::mem::replace(self, CollatorState::Primed) {
-			f(Message::CollatorRole(role));
-		}
-	}
-
-	fn set_role<F: FnMut(Message)>(&mut self, role: Role, mut f: F) {
-		if let CollatorState::Primed = *self {
-			f(Message::CollatorRole(role));
-		} else {
-			*self = CollatorState::RolePending(role);
-		}
-	}
-}
-
-struct PeerInfo {
-	collating_for: Option<(AccountId, ParaId)>,
-	validator_key: Option<SessionKey>,
-	claimed_validator: bool,
-	collator_state: CollatorState,
-}
-
-#[derive(Default)]
-struct KnowledgeEntry {
-	knows_block_data: Vec<SessionKey>,
-	knows_extrinsic: Vec<SessionKey>,
-	block_data: Option<BlockData>,
-	extrinsic: Option<Extrinsic>,
-}
-
-/// Tracks knowledge of peers.
-struct Knowledge {
-	candidates: HashMap<Hash, KnowledgeEntry>,
-}
-
-impl Knowledge {
-	pub fn new() -> Self {
-		Knowledge {
-			candidates: HashMap::new(),
-		}
-	}
-
-	fn note_statement(&mut self, from: SessionKey, statement: &Statement) {
-		match *statement {
-			GenericStatement::Candidate(ref c) => {
-				let mut entry = self.candidates.entry(c.hash()).or_insert_with(Default::default);
-				entry.knows_block_data.push(from);
-				entry.knows_extrinsic.push(from);
-			}
-			GenericStatement::Available(ref hash) => {
-				let mut entry = self.candidates.entry(*hash).or_insert_with(Default::default);
-				entry.knows_block_data.push(from);
-				entry.knows_extrinsic.push(from);
-			}
-			GenericStatement::Valid(ref hash) | GenericStatement::Invalid(ref hash) => self.candidates.entry(*hash)
-				.or_insert_with(Default::default)
-				.knows_block_data
-				.push(from),
-		}
-	}
-
-	fn note_candidate(&mut self, hash: Hash, block_data: Option<BlockData>, extrinsic: Option<Extrinsic>) {
-		let entry = self.candidates.entry(hash).or_insert_with(Default::default);
-		entry.block_data = entry.block_data.take().or(block_data);
-		entry.extrinsic = entry.extrinsic.take().or(extrinsic);
-	}
-}
-
-struct CurrentConsensus {
-	knowledge: Arc<Mutex<Knowledge>>,
-	parent_hash: Hash,
-	local_session_key: SessionKey,
-}
-
-impl CurrentConsensus {
-	// get locally stored block data for a candidate.
-	fn block_data(&self, relay_parent: &Hash, hash: &Hash) -> Option<BlockData> {
-		if relay_parent != &self.parent_hash { return None }
-
-		self.knowledge.lock().candidates.get(hash)
-			.and_then(|entry| entry.block_data.clone())
-	}
-}
-
-/// Polkadot-specific messages.
-#[derive(Debug, Encode, Decode)]
-pub enum Message {
-	/// signed statement and localized parent hash.
-	Statement(Hash, SignedStatement),
-	/// As a validator, tell the peer your current session key.
-	// TODO: do this with a cryptographic proof of some kind
-	SessionKey(SessionKey),
-	/// Requesting parachain block data by (relay_parent, candidate_hash).
-	RequestBlockData(RequestId, Hash, Hash),
-	/// Provide block data by candidate hash or nothing if unknown.
-	BlockData(RequestId, Option<BlockData>),
-	/// Tell a collator their role.
-	CollatorRole(Role),
-	/// A collation provided by a peer. Relay parent and collation.
-	Collation(Hash, Collation),
-}
-
-fn send_polkadot_message(ctx: &mut Context<Block>, to: NodeIndex, message: Message) {
-	trace!(target: "p_net", "Sending polkadot message to {}: {:?}", to, message);
-	let encoded = message.encode();
-	ctx.send_message(to, generic_message::Message::ChainSpecific(encoded))
-}
-
-/// Polkadot protocol attachment for substrate.
-pub struct PolkadotProtocol {
-	peers: HashMap<NodeIndex, PeerInfo>,
-	collating_for: Option<(AccountId, ParaId)>,
-	consensus_gossip: ConsensusGossip<Block>,
-	collators: CollatorPool,
-	validators: HashMap<SessionKey, NodeIndex>,
-	local_collations: LocalCollations<Collation>,
-	live_consensus: Option<CurrentConsensus>,
-	in_flight: HashMap<(RequestId, NodeIndex), BlockDataRequest>,
-	pending: Vec<BlockDataRequest>,
-	extrinsic_store: Option<::av_store::Store>,
-	next_req_id: u64,
-}
-
-impl PolkadotProtocol {
-	/// Instantiate a polkadot protocol handler.
-	pub fn new(collating_for: Option<(AccountId, ParaId)>) -> Self {
-		PolkadotProtocol {
-			peers: HashMap::new(),
-			consensus_gossip: ConsensusGossip::new(),
-			collators: CollatorPool::new(),
-			collating_for,
-			validators: HashMap::new(),
-			local_collations: LocalCollations::new(),
-			live_consensus: None,
-			in_flight: HashMap::new(),
-			pending: Vec::new(),
-			extrinsic_store: None,
-			next_req_id: 1,
-		}
-	}
-
-	/// Gossip a consensus statement.
-	fn gossip_statement(&mut self, ctx: &mut Context<Block>, parent_hash: Hash, statement: SignedStatement) {
-		// TODO: something more targeted than gossip.
-		let raw = Message::Statement(parent_hash, statement).encode();
-		self.consensus_gossip.multicast_chain_specific(ctx, raw, parent_hash);
-	}
-
-	/// Fetch block data by candidate receipt.
-	fn fetch_block_data(&mut self, ctx: &mut Context<Block>, candidate: &CandidateReceipt, relay_parent: Hash) -> oneshot::Receiver<BlockData> {
-		let (tx, rx) = oneshot::channel();
-
-		self.pending.push(BlockDataRequest {
-			attempted_peers: Default::default(),
-			consensus_parent: relay_parent,
-			candidate_hash: candidate.hash(),
-			block_data_hash: candidate.block_data_hash,
-			sender: tx,
-		});
-
-		self.dispatch_pending_requests(ctx);
-		rx
-	}
-
-	/// Note new consensus session.
-	fn new_consensus(&mut self, ctx: &mut Context<Block>, consensus: CurrentConsensus) {
-		let old_data = self.live_consensus.as_ref().map(|c| (c.parent_hash, c.local_session_key));
-
-		if Some(&consensus.local_session_key) != old_data.as_ref().map(|&(_, ref key)| key) {
-			for (id, peer_data) in self.peers.iter_mut()
-				.filter(|&(_, ref info)| info.claimed_validator || info.collating_for.is_some())
-			{
-				peer_data.collator_state.send_key(consensus.local_session_key, |msg| send_polkadot_message(
-					ctx,
-					*id,
-					msg
-				));
-			}
-		}
-
-		self.live_consensus = Some(consensus);
-		self.consensus_gossip.collect_garbage(old_data.as_ref().map(|&(ref hash, _)| hash));
-	}
-
-	fn dispatch_pending_requests(&mut self, ctx: &mut Context<Block>) {
-		let consensus = match self.live_consensus {
-			Some(ref mut c) => c,
-			None => {
-				self.pending.clear();
-				return;
-			}
-		};
-
-		let knowledge = consensus.knowledge.lock();
-		let mut new_pending = Vec::new();
-		for mut pending in ::std::mem::replace(&mut self.pending, Vec::new()) {
-			if pending.consensus_parent != consensus.parent_hash { continue }
-
-			if let Some(entry) = knowledge.candidates.get(&pending.candidate_hash) {
-				// answer locally
-				if let Some(ref data) = entry.block_data {
-					let _ = pending.sender.send(data.clone());
-					continue;
-				}
-
-				let validator_keys = &mut self.validators;
-				let next_peer = entry.knows_block_data.iter()
-					.filter_map(|x| validator_keys.get(x).map(|id| (*x, *id)))
-					.find(|&(ref key, _)| pending.attempted_peers.insert(*key))
-					.map(|(_, id)| id);
-
-				// dispatch to peer
-				if let Some(who) = next_peer {
-					let req_id = self.next_req_id;
-					self.next_req_id += 1;
-
-					send_polkadot_message(
-						ctx,
-						who,
-						Message::RequestBlockData(req_id, pending.consensus_parent, pending.candidate_hash)
-					);
-
-					self.in_flight.insert((req_id, who), pending);
-
-					continue;
-				}
-			}
-
-			new_pending.push(pending);
-		}
-
-		self.pending = new_pending;
-	}
-
-	fn on_polkadot_message(&mut self, ctx: &mut Context<Block>, who: NodeIndex, raw: Vec<u8>, msg: Message) {
-		trace!(target: "p_net", "Polkadot message from {}: {:?}", who, msg);
-		match msg {
-			Message::Statement(parent_hash, _statement) =>
-				self.consensus_gossip.on_chain_specific(ctx, who, raw, parent_hash),
-			Message::SessionKey(key) => self.on_session_key(ctx, who, key),
-			Message::RequestBlockData(req_id, relay_parent, candidate_hash) => {
-				let block_data = self.live_consensus.as_ref()
-					.and_then(|c| c.block_data(&relay_parent, &candidate_hash))
-					.or_else(|| self.extrinsic_store.as_ref()
-						.and_then(|s| s.block_data(relay_parent, candidate_hash))
-					);
-
-				send_polkadot_message(ctx, who, Message::BlockData(req_id, block_data));
-			}
-			Message::BlockData(req_id, data) => self.on_block_data(ctx, who, req_id, data),
-			Message::Collation(relay_parent, collation) => self.on_collation(ctx, who, relay_parent, collation),
-			Message::CollatorRole(role) => self.on_new_role(ctx, who, role),
-		}
-	}
-
-	fn on_session_key(&mut self, ctx: &mut Context<Block>, who: NodeIndex, key: SessionKey) {
-		{
-			let info = match self.peers.get_mut(&who) {
-				Some(peer) => peer,
-				None => {
-					trace!(target: "p_net", "Network inconsistency: message received from unconnected peer {}", who);
-					return
-				}
-			};
-
-			if !info.claimed_validator {
-				ctx.report_peer(who, Severity::Bad("Session key broadcasted without setting authority role"));
-				return;
-			}
-
-			if let Some(old_key) = ::std::mem::replace(&mut info.validator_key, Some(key)) {
-				self.validators.remove(&old_key);
-
-				for (relay_parent, collation) in self.local_collations.fresh_key(&old_key, &key) {
-					send_polkadot_message(
-						ctx,
-						who,
-						Message::Collation(relay_parent, collation),
-					)
-				}
-
-			}
-			self.validators.insert(key, who);
-		}
-
-		self.dispatch_pending_requests(ctx);
-	}
-
-	fn on_block_data(&mut self, ctx: &mut Context<Block>, who: NodeIndex, req_id: RequestId, data: Option<BlockData>) {
-		match self.in_flight.remove(&(req_id, who)) {
-			Some(req) => {
-				if let Some(data) = data {
-					if data.hash() == req.block_data_hash {
-						let _ = req.sender.send(data);
-						return
-					}
-				}
-
-				self.pending.push(req);
-				self.dispatch_pending_requests(ctx);
-			}
-			None => ctx.report_peer(who, Severity::Bad("Unexpected block data response")),
-		}
-	}
-
-	// when a validator sends us (a collator) a new role.
-	fn on_new_role(&mut self, ctx: &mut Context<Block>, who: NodeIndex, role: Role) {
-		let info = match self.peers.get(&who) {
-			Some(peer) => peer,
-			None => {
-				trace!(target: "p_net", "Network inconsistency: message received from unconnected peer {}", who);
-				return
-			}
-		};
-
-		debug!(target: "p_net", "New collator role {:?} from {}", role, who);
-
-		match info.validator_key {
-			None => ctx.report_peer(
-				who,
-				Severity::Bad("Sent collator role without registering first as validator"),
-			),
-			Some(key) => for (relay_parent, collation) in self.local_collations.note_validator_role(key, role) {
-				debug!(target: "p_net", "Broadcasting collation on relay parent {:?}", relay_parent);
-				send_polkadot_message(
-					ctx,
-					who,
-					Message::Collation(relay_parent, collation),
-				)
-			},
-		}
-	}
-}
-
-impl Specialization<Block> for PolkadotProtocol {
-	fn status(&self) -> Vec<u8> {
-		Status { collating_for: self.collating_for.clone() }.encode()
-	}
-
-	fn on_connect(&mut self, ctx: &mut Context<Block>, who: NodeIndex, status: FullStatus) {
-		let local_status = match Status::decode(&mut &status.chain_status[..]) {
-			Some(status) => status,
-			None => {
-				Status { collating_for: None }
-			}
-		};
-
-		let validator = status.roles.contains(substrate_network::Roles::AUTHORITY);
-		let send_key = validator || local_status.collating_for.is_some();
-
-		let mut peer_info = PeerInfo {
-			collating_for: local_status.collating_for,
-			validator_key: None,
-			claimed_validator: validator,
-			collator_state: CollatorState::Fresh,
-		};
-
-		if let Some((ref acc_id, ref para_id)) = local_status.collating_for {
-			if self.collator_peer(acc_id.clone()).is_some() {
-				ctx.report_peer(who, Severity::Useless("Unknown Polkadot-specific reason"));
-				return
-			}
-
-			let collator_role = self.collators.on_new_collator(acc_id.clone(), para_id.clone());
-
-			peer_info.collator_state.set_role(collator_role, |msg| send_polkadot_message(
-				ctx,
-				who,
-				msg,
-			));
-		}
-
-		if let (true, &Some(ref consensus)) = (send_key, &self.live_consensus) {
-			peer_info.collator_state.send_key(consensus.local_session_key, |msg| send_polkadot_message(
-				ctx,
-				who,
-				msg,
-			));
-		}
-
-		self.peers.insert(who, peer_info);
-		self.consensus_gossip.new_peer(ctx, who, status.roles);
-		self.dispatch_pending_requests(ctx);
-	}
-
-	fn on_disconnect(&mut self, ctx: &mut Context<Block>, who: NodeIndex) {
-		if let Some(info) = self.peers.remove(&who) {
-			if let Some((acc_id, _)) = info.collating_for {
-				let new_primary = self.collators.on_disconnect(acc_id)
-					.and_then(|new_primary| self.collator_peer(new_primary));
-
-				if let Some((new_primary, primary_info)) = new_primary {
-					primary_info.collator_state.set_role(Role::Primary, |msg| send_polkadot_message(
-						ctx,
-						new_primary,
-						msg,
-					));
-				}
-			}
-
-			if let Some(validator_key) = info.validator_key {
-				self.validators.remove(&validator_key);
-				self.local_collations.on_disconnect(&validator_key);
-			}
-
-			{
-				let pending = &mut self.pending;
-				self.in_flight.retain(|&(_, ref peer), val| {
-					let retain = peer != &who;
-					if !retain {
-						let (sender, _) = oneshot::channel();
-						pending.push(::std::mem::replace(val, BlockDataRequest {
-							attempted_peers: Default::default(),
-							consensus_parent: Default::default(),
-							candidate_hash: Default::default(),
-							block_data_hash: Default::default(),
-							sender,
-						}));
-					}
-
-					retain
-				});
-			}
-			self.consensus_gossip.peer_disconnected(ctx, who);
-			self.dispatch_pending_requests(ctx);
-		}
-	}
-
-	fn on_message(&mut self, ctx: &mut Context<Block>, who: NodeIndex, message: message::Message<Block>) {
-		match message {
-			generic_message::Message::BftMessage(msg) => {
-				trace!(target: "p_net", "Polkadot BFT message from {}: {:?}", who, msg);
-				// TODO: check signature here? what if relevant block is unknown?
-				self.consensus_gossip.on_bft_message(ctx, who, msg)
-			}
-			generic_message::Message::ChainSpecific(raw) => {
-				match Message::decode(&mut raw.as_slice()) {
-					Some(msg) => self.on_polkadot_message(ctx, who, raw, msg),
-					None => {
-						trace!(target: "p_net", "Bad message from {}", who);
-						ctx.report_peer(who, Severity::Bad("Invalid polkadot protocol message format"));
-					}
-				}
-			}
-			_ => {}
-		}
-	}
-
-	fn on_abort(&mut self) {
-		self.consensus_gossip.abort();
-	}
-
-	fn maintain_peers(&mut self, ctx: &mut Context<Block>) {
-		self.consensus_gossip.collect_garbage(None);
-		self.collators.collect_garbage(None);
-		self.local_collations.collect_garbage(None);
-		self.dispatch_pending_requests(ctx);
-
-		for collator_action in self.collators.maintain_peers() {
-			match collator_action {
-				Action::Disconnect(collator) => self.disconnect_bad_collator(ctx, collator),
-				Action::NewRole(account_id, role) => if let Some((collator, info)) = self.collator_peer(account_id) {
-					info.collator_state.set_role(role, |msg| send_polkadot_message(
-						ctx,
-						collator,
-						msg,
-					))
-				},
-			}
-		}
-	}
-
-	fn on_block_imported(&mut self, _ctx: &mut Context<Block>, hash: Hash, header: &Header) {
-		self.collators.collect_garbage(Some(&hash));
-		self.local_collations.collect_garbage(Some(&header.parent_hash));
-	}
-}
-
-impl PolkadotProtocol {
-	// we received a collation from a peer
-	fn on_collation(&mut self, ctx: &mut Context<Block>, from: NodeIndex, relay_parent: Hash, collation: Collation) {
-		let collation_para = collation.receipt.parachain_index;
-		let collated_acc = collation.receipt.collator;
-
-		match self.peers.get(&from) {
-			None => ctx.report_peer(from, Severity::Useless("Unknown Polkadot specific reason")),
-			Some(peer_info) => match peer_info.collating_for {
-				None => ctx.report_peer(from, Severity::Bad("Sent collation without registering collator intent")),
-				Some((ref acc_id, ref para_id)) => {
-					let structurally_valid = para_id == &collation_para && acc_id == &collated_acc;
-					if structurally_valid && collation.receipt.check_signature().is_ok() {
-						debug!(target: "p_net", "Received collation for parachain {:?} from peer {}", para_id, from);
-						self.collators.on_collation(acc_id.clone(), relay_parent, collation)
-					} else {
-						ctx.report_peer(from, Severity::Bad("Sent malformed collation"))
-					};
-				}
-			},
-		}
-	}
-
-	fn await_collation(&mut self, relay_parent: Hash, para_id: ParaId) -> oneshot::Receiver<Collation> {
-		let (tx, rx) = oneshot::channel();
-		debug!(target: "p_net", "Attempting to get collation for parachain {:?} on relay parent {:?}", para_id, relay_parent);
-		self.collators.await_collation(relay_parent, para_id, tx);
-		rx
-	}
-
-	// get connected peer with given account ID for collation.
-	fn collator_peer(&mut self, account_id: AccountId) -> Option<(NodeIndex, &mut PeerInfo)> {
-		let check_info = |info: &PeerInfo| info
-			.collating_for
-			.as_ref()
-			.map_or(false, |&(ref acc_id, _)| acc_id == &account_id);
-
-		self.peers
-			.iter_mut()
-			.filter(|&(_, ref info)| check_info(&**info))
-			.map(|(who, info)| (*who, info))
-			.next()
-	}
-
-	// disconnect a collator by account-id.
-	fn disconnect_bad_collator(&mut self, ctx: &mut Context<Block>, account_id: AccountId) {
-		if let Some((who, _)) = self.collator_peer(account_id) {
-			ctx.report_peer(who, Severity::Bad("Consensus layer determined the given collator misbehaved"))
-		}
-	}
-}
-
-impl PolkadotProtocol {
-	/// Add a local collation and broadcast it to the necessary peers.
-	pub fn add_local_collation(
-		&mut self,
-		ctx: &mut Context<Block>,
-		relay_parent: Hash,
-		targets: HashSet<SessionKey>,
-		collation: Collation,
-	) {
-		debug!(target: "p_net", "Importing local collation on relay parent {:?} and parachain {:?}",
-			relay_parent, collation.receipt.parachain_index);
-
-		for (primary, cloned_collation) in self.local_collations.add_collation(relay_parent, targets, collation.clone()) {
-			match self.validators.get(&primary) {
-				Some(who) => {
-					debug!(target: "p_net", "Sending local collation to {:?}", primary);
-					send_polkadot_message(
-						ctx,
-						*who,
-						Message::Collation(relay_parent, cloned_collation),
-					)
-				},
-				None =>
-					warn!(target: "polkadot_network", "Encountered tracked but disconnected validator {:?}", primary),
-			}
-		}
-	}
-
-	/// register availability store.
-	pub fn register_availability_store(&mut self, extrinsic_store: ::av_store::Store) {
-		self.extrinsic_store = Some(extrinsic_store);
-	}
-}
diff --git a/substrate/polkadot/network/src/local_collations.rs b/substrate/polkadot/network/src/local_collations.rs
deleted file mode 100644
index 2902ed5f0e710056c3645b063ef30abd44d88e0f..0000000000000000000000000000000000000000
--- a/substrate/polkadot/network/src/local_collations.rs
+++ /dev/null
@@ -1,199 +0,0 @@
-// Copyright 2018 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Local collations to be circulated to validators.
-//!
-//! Collations are attempted to be repropagated when a new validator connects,
-//! a validator changes his session key, or when they are generated.
-
-use polkadot_primitives::{Hash, SessionKey};
-
-use collator_pool::Role;
-
-use std::collections::{HashMap, HashSet};
-use std::time::{Duration, Instant};
-
-const LIVE_FOR: Duration = Duration::from_secs(60 * 5);
-
-struct LocalCollation<C> {
-	targets: HashSet<SessionKey>,
-	collation: C,
-	live_since: Instant,
-}
-
-/// Tracker for locally collated values and which validators to send them to.
-pub struct LocalCollations<C> {
-	primary_for: HashSet<SessionKey>,
-	local_collations: HashMap<Hash, LocalCollation<C>>,
-}
-
-impl<C: Clone> LocalCollations<C> {
-	/// Create a new `LocalCollations` tracker.
-	pub fn new() -> Self {
-		LocalCollations {
-			primary_for: HashSet::new(),
-			local_collations: HashMap::new(),
-		}
-	}
-
-	/// Validator gave us a new role. If the new role is "primary", this function might return
-	/// a set of collations to send to that validator.
-	pub fn note_validator_role(&mut self, key: SessionKey, role: Role) -> Vec<(Hash, C)> {
-		match role {
-			Role::Backup => {
-				self.primary_for.remove(&key);
-				Vec::new()
-			}
-			Role::Primary => {
-				let new_primary = self.primary_for.insert(key);
-				if new_primary {
-					self.collations_targeting(&key)
-				} else {
-					Vec::new()
-				}
-			}
-		}
-	}
-
-	/// Fresh session key from a validator. Returns a vector of collations to send
-	/// to the validator.
-	pub fn fresh_key(&mut self, old_key: &SessionKey, new_key: &SessionKey) -> Vec<(Hash, C)> {
-		if self.primary_for.remove(old_key) {
-			self.primary_for.insert(*new_key);
-
-			self.collations_targeting(new_key)
-		} else {
-			Vec::new()
-		}
-	}
-
-	/// Validator disconnected.
-	pub fn on_disconnect(&mut self, key: &SessionKey) {
-		self.primary_for.remove(key);
-	}
-
-	/// Mark collations relevant to the given parent hash as obsolete.
-	pub fn collect_garbage(&mut self, relay_parent: Option<&Hash>) {
-		if let Some(relay_parent) = relay_parent {
-			self.local_collations.remove(relay_parent);
-		}
-
-		let now = Instant::now();
-		self.local_collations.retain(|_, v| v.live_since + LIVE_FOR > now);
-	}
-
-	/// Add a collation. Returns an iterator of session keys to send to and lazy copies of the collation.
-	pub fn add_collation<'a>(
-		&'a mut self,
-		relay_parent: Hash,
-		targets: HashSet<SessionKey>,
-		collation: C
-	)
-		-> impl Iterator<Item=(SessionKey, C)> + 'a
-	{
-		self.local_collations.insert(relay_parent, LocalCollation {
-			targets,
-			collation,
-			live_since: Instant::now(),
-		});
-
-		let local = self.local_collations.get(&relay_parent)
-			.expect("just inserted to this key; qed");
-
-		let borrowed_collation = &local.collation;
-		local.targets
-			.intersection(&self.primary_for)
-			.map(move |k| (*k, borrowed_collation.clone()))
-	}
-
-	fn collations_targeting(&self, key: &SessionKey) -> Vec<(Hash, C)> {
-		self.local_collations.iter()
-			.filter(|&(_, ref v)| v.targets.contains(key))
-			.map(|(h, v)| (*h, v.collation.clone()))
-			.collect()
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-
-	#[test]
-	fn add_validator_with_ready_collation() {
-		let key = [1; 32].into();
-		let relay_parent = [2; 32].into();
-		let targets = {
-			let mut set = HashSet::new();
-			set.insert(key);
-			set
-		};
-
-		let mut tracker = LocalCollations::new();
-		assert!(tracker.add_collation(relay_parent, targets, 5).next().is_none());
-		assert_eq!(tracker.note_validator_role(key, Role::Primary), vec![(relay_parent, 5)]);
-	}
-
-	#[test]
-	fn rename_with_ready() {
-		let orig_key = [1; 32].into();
-		let new_key  = [2; 32].into();
-		let relay_parent = [255; 32].into();
-		let targets = {
-			let mut set = HashSet::new();
-			set.insert(new_key);
-			set
-		};
-
-		let mut tracker: LocalCollations<u8> = LocalCollations::new();
-		assert!(tracker.add_collation(relay_parent, targets, 5).next().is_none());
-		assert!(tracker.note_validator_role(orig_key, Role::Primary).is_empty());
-		assert_eq!(tracker.fresh_key(&orig_key, &new_key), vec![(relay_parent, 5u8)]);
-	}
-
-	#[test]
-	fn collecting_garbage() {
-		let relay_parent_a = [255; 32].into();
-		let relay_parent_b = [222; 32].into();
-
-		let mut tracker: LocalCollations<u8> = LocalCollations::new();
-		assert!(tracker.add_collation(relay_parent_a, HashSet::new(), 5).next().is_none());
-		assert!(tracker.add_collation(relay_parent_b, HashSet::new(), 69).next().is_none());
-
-		let live_since = Instant::now() - LIVE_FOR - Duration::from_secs(10);
-		tracker.local_collations.get_mut(&relay_parent_b).unwrap().live_since = live_since;
-
-		tracker.collect_garbage(Some(&relay_parent_a));
-
-		// first one pruned because of relay parent, other because of time.
-		assert!(tracker.local_collations.is_empty());
-	}
-
-	#[test]
-	fn add_collation_with_connected_target() {
-		let key = [1; 32].into();
-		let relay_parent = [2; 32].into();
-		let targets = {
-			let mut set = HashSet::new();
-			set.insert(key);
-			set
-		};
-
-		let mut tracker = LocalCollations::new();
-		assert!(tracker.note_validator_role(key, Role::Primary).is_empty());
-		assert_eq!(tracker.add_collation(relay_parent, targets, 5).next(), Some((key, 5)));
-
-	}
-}
diff --git a/substrate/polkadot/network/src/router.rs b/substrate/polkadot/network/src/router.rs
deleted file mode 100644
index 79a50f42831aa5aad4a886bfddefdf2366a7b913..0000000000000000000000000000000000000000
--- a/substrate/polkadot/network/src/router.rs
+++ /dev/null
@@ -1,342 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Statement routing and consensus table router implementation.
-//!
-//! During the consensus process, validators exchange statements on validity and availability
-//! of parachain candidates.
-//! The `Router` in this file hooks into the underlying network to fulfill
-//! the `TableRouter` trait from `polkadot-consensus`, which is expected to call into a shared statement table
-//! and dispatch evaluation work as necessary when new statements come in.
-
-use polkadot_api::{PolkadotApi, LocalPolkadotApi};
-use polkadot_consensus::{SharedTable, TableRouter, SignedStatement, GenericStatement, StatementProducer};
-use polkadot_primitives::{Hash, BlockId, SessionKey};
-use polkadot_primitives::parachain::{BlockData, Extrinsic, CandidateReceipt};
-
-use futures::prelude::*;
-use tokio::runtime::TaskExecutor;
-use parking_lot::Mutex;
-
-use std::collections::{HashMap, HashSet};
-use std::io;
-use std::sync::Arc;
-
-use super::{NetworkService, Knowledge};
-
-/// Table routing implementation.
-pub struct Router<P: PolkadotApi> {
-	table: Arc<SharedTable>,
-	network: Arc<NetworkService>,
-	api: Arc<P>,
-	task_executor: TaskExecutor,
-	parent_hash: Hash,
-	knowledge: Arc<Mutex<Knowledge>>,
-	deferred_statements: Arc<Mutex<DeferredStatements>>,
-}
-
-impl<P: PolkadotApi> Router<P> {
-	pub(crate) fn new(
-		table: Arc<SharedTable>,
-		network: Arc<NetworkService>,
-		api: Arc<P>,
-		task_executor: TaskExecutor,
-		parent_hash: Hash,
-		knowledge: Arc<Mutex<Knowledge>>,
-	) -> Self {
-		Router {
-			table,
-			network,
-			api,
-			task_executor,
-			parent_hash,
-			knowledge,
-			deferred_statements: Arc::new(Mutex::new(DeferredStatements::new())),
-		}
-	}
-
-	pub(crate) fn session_key(&self) -> SessionKey {
-		self.table.session_key()
-	}
-}
-
-impl<P: PolkadotApi> Clone for Router<P> {
-	fn clone(&self) -> Self {
-		Router {
-			table: self.table.clone(),
-			network: self.network.clone(),
-			api: self.api.clone(),
-			task_executor: self.task_executor.clone(),
-			parent_hash: self.parent_hash.clone(),
-			deferred_statements: self.deferred_statements.clone(),
-			knowledge: self.knowledge.clone(),
-		}
-	}
-}
-
-impl<P: LocalPolkadotApi + Send + Sync + 'static> Router<P> {
-	/// Import a statement whose signature has been checked already.
-	pub(crate) fn import_statement(&self, statement: SignedStatement) {
-		trace!(target: "p_net", "importing consensus statement {:?}", statement.statement);
-
-		// defer any statements for which we haven't imported the candidate yet
-		let c_hash = {
-			let candidate_data = match statement.statement {
-				GenericStatement::Candidate(ref c) => Some(c.hash()),
-				GenericStatement::Valid(ref hash)
-					| GenericStatement::Invalid(ref hash)
-					| GenericStatement::Available(ref hash)
-					=> self.table.with_candidate(hash, |c| c.map(|_| *hash)),
-			};
-			match candidate_data {
-				Some(x) => x,
-				None => {
-					self.deferred_statements.lock().push(statement);
-					return;
-				}
-			}
-		};
-
-		// import all statements pending on this candidate
-		let (mut statements, _traces) = if let GenericStatement::Candidate(_) = statement.statement {
-			self.deferred_statements.lock().get_deferred(&c_hash)
-		} else {
-			(Vec::new(), Vec::new())
-		};
-
-		// prepend the candidate statement.
-		debug!(target: "consensus", "Importing statements about candidate {:?}", c_hash);
-		statements.insert(0, statement);
-		let producers: Vec<_> = self.table.import_remote_statements(
-			self,
-			statements.iter().cloned(),
-		);
-		// dispatch future work as necessary.
-		for (producer, statement) in producers.into_iter().zip(statements) {
-			self.knowledge.lock().note_statement(statement.sender, &statement.statement);
-
-			if let Some(producer) = producer {
-				trace!(target: "consensus", "driving statement work to completion");
-				self.dispatch_work(c_hash, producer);
-			}
-		}
-	}
-
-	fn dispatch_work<D, E>(&self, candidate_hash: Hash, producer: StatementProducer<D, E>) where
-		D: Future<Item=BlockData,Error=io::Error> + Send + 'static,
-		E: Future<Item=Extrinsic,Error=io::Error> + Send + 'static,
-	{
-		let parent_hash = self.parent_hash.clone();
-
-		let api = self.api.clone();
-		let validate = move |collation| -> Option<bool> {
-			let id = BlockId::hash(parent_hash);
-			match ::polkadot_consensus::validate_collation(&*api, &id, &collation) {
-				Ok(()) => Some(true),
-				Err(e) => {
-					debug!(target: "p_net", "Encountered bad collation: {}", e);
-					Some(false)
-				}
-			}
-		};
-
-		let table = self.table.clone();
-		let network = self.network.clone();
-		let knowledge = self.knowledge.clone();
-
-		let work = producer.prime(validate)
-			.map(move |produced| {
-				// store the data before broadcasting statements, so other peers can fetch.
-				knowledge.lock().note_candidate(
-					candidate_hash,
-					produced.block_data,
-					produced.extrinsic
-				);
-
-				// propagate the statements
-				if let Some(validity) = produced.validity {
-					let signed = table.sign_and_import(validity.clone()).0;
-					network.with_spec(|spec, ctx| spec.gossip_statement(ctx, parent_hash, signed));
-				}
-
-				if let Some(availability) = produced.availability {
-					let signed = table.sign_and_import(availability).0;
-					network.with_spec(|spec, ctx| spec.gossip_statement(ctx, parent_hash, signed));
-				}
-			})
-			.map_err(|e| debug!(target: "p_net", "Failed to produce statements: {:?}", e));
-
-		self.task_executor.spawn(work);
-	}
-}
-
-impl<P: LocalPolkadotApi + Send> TableRouter for Router<P> {
-	type Error = io::Error;
-	type FetchCandidate = BlockDataReceiver;
-	type FetchExtrinsic = Result<Extrinsic, Self::Error>;
-
-	fn local_candidate(&self, receipt: CandidateReceipt, block_data: BlockData, extrinsic: Extrinsic) {
-		// give to network to make available.
-		let hash = receipt.hash();
-		let (candidate, availability) = self.table.sign_and_import(GenericStatement::Candidate(receipt));
-
-		self.knowledge.lock().note_candidate(hash, Some(block_data), Some(extrinsic));
-		self.network.with_spec(|spec, ctx| {
-			spec.gossip_statement(ctx, self.parent_hash, candidate);
-			if let Some(availability) = availability {
-				spec.gossip_statement(ctx, self.parent_hash, availability);
-			}
-		});
-	}
-
-	fn fetch_block_data(&self, candidate: &CandidateReceipt) -> BlockDataReceiver {
-		let parent_hash = self.parent_hash;
-		let rx = self.network.with_spec(|spec, ctx| { spec.fetch_block_data(ctx, candidate, parent_hash) });
-		BlockDataReceiver { inner: rx }
-	}
-
-	fn fetch_extrinsic_data(&self, _candidate: &CandidateReceipt) -> Self::FetchExtrinsic {
-		Ok(Extrinsic)
-	}
-}
-
-/// Receiver for block data.
-pub struct BlockDataReceiver {
-	inner: Option<::futures::sync::oneshot::Receiver<BlockData>>,
-}
-
-impl Future for BlockDataReceiver {
-	type Item = BlockData;
-	type Error = io::Error;
-
-	fn poll(&mut self) -> Poll<BlockData, io::Error> {
-		match self.inner {
-			Some(ref mut inner) => inner.poll().map_err(|_| io::Error::new(
-				io::ErrorKind::Other,
-				"Sending end of channel hung up",
-			)),
-			None => return Err(io::Error::new(
-				io::ErrorKind::Other,
-				"Network service is unavailable",
-			)),
-		}
-	}
-}
-
-// A unique trace for valid statements issued by a validator.
-#[derive(Hash, PartialEq, Eq, Clone, Debug)]
-enum StatementTrace {
-	Valid(SessionKey, Hash),
-	Invalid(SessionKey, Hash),
-	Available(SessionKey, Hash),
-}
-
-// helper for deferring statements whose associated candidate is unknown.
-struct DeferredStatements {
-	deferred: HashMap<Hash, Vec<SignedStatement>>,
-	known_traces: HashSet<StatementTrace>,
-}
-
-impl DeferredStatements {
-	fn new() -> Self {
-		DeferredStatements {
-			deferred: HashMap::new(),
-			known_traces: HashSet::new(),
-		}
-	}
-
-	fn push(&mut self, statement: SignedStatement) {
-		let (hash, trace) = match statement.statement {
-			GenericStatement::Candidate(_) => return,
-			GenericStatement::Valid(hash) => (hash, StatementTrace::Valid(statement.sender, hash)),
-			GenericStatement::Invalid(hash) => (hash, StatementTrace::Invalid(statement.sender, hash)),
-			GenericStatement::Available(hash) => (hash, StatementTrace::Available(statement.sender, hash)),
-		};
-
-		if self.known_traces.insert(trace) {
-			self.deferred.entry(hash).or_insert_with(Vec::new).push(statement);
-		}
-	}
-
-	fn get_deferred(&mut self, hash: &Hash) -> (Vec<SignedStatement>, Vec<StatementTrace>) {
-		match self.deferred.remove(hash) {
-			None => (Vec::new(), Vec::new()),
-			Some(deferred) => {
-				let mut traces = Vec::new();
-				for statement in deferred.iter() {
-					let trace = match statement.statement {
-						GenericStatement::Candidate(_) => continue,
-						GenericStatement::Valid(hash) => StatementTrace::Valid(statement.sender, hash),
-						GenericStatement::Invalid(hash) => StatementTrace::Invalid(statement.sender, hash),
-						GenericStatement::Available(hash) => StatementTrace::Available(statement.sender, hash),
-					};
-
-					self.known_traces.remove(&trace);
-					traces.push(trace);
-				}
-
-				(deferred, traces)
-			}
-		}
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use substrate_primitives::H512;
-
-	#[test]
-	fn deferred_statements_works() {
-		let mut deferred = DeferredStatements::new();
-		let hash = [1; 32].into();
-		let sig = H512([2; 64]).into();
-		let sender = [255; 32].into();
-
-		let statement = SignedStatement {
-			statement: GenericStatement::Valid(hash),
-			sender,
-			signature: sig,
-		};
-
-		// pre-push.
-		{
-			let (signed, traces) = deferred.get_deferred(&hash);
-			assert!(signed.is_empty());
-			assert!(traces.is_empty());
-		}
-
-		deferred.push(statement.clone());
-		deferred.push(statement.clone());
-
-		// draining: second push should have been ignored.
-		{
-			let (signed, traces) = deferred.get_deferred(&hash);
-			assert_eq!(signed.len(), 1);
-
-			assert_eq!(traces.len(), 1);
-			assert_eq!(signed[0].clone(), statement);
-			assert_eq!(traces[0].clone(), StatementTrace::Valid(sender, hash));
-		}
-
-		// after draining
-		{
-			let (signed, traces) = deferred.get_deferred(&hash);
-			assert!(signed.is_empty());
-			assert!(traces.is_empty());
-		}
-	}
-}
diff --git a/substrate/polkadot/network/src/tests.rs b/substrate/polkadot/network/src/tests.rs
deleted file mode 100644
index f5ad78dae9093ae9b952b8fb9eede9c06272cce8..0000000000000000000000000000000000000000
--- a/substrate/polkadot/network/src/tests.rs
+++ /dev/null
@@ -1,277 +0,0 @@
-// Copyright 2018 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Tests for polkadot and consensus network.
-
-use super::{PolkadotProtocol, Status, CurrentConsensus, Knowledge, Message, FullStatus};
-
-use parking_lot::Mutex;
-use polkadot_consensus::GenericStatement;
-use polkadot_primitives::{Block, Hash, SessionKey};
-use polkadot_primitives::parachain::{CandidateReceipt, HeadData, BlockData};
-use substrate_primitives::H512;
-use codec::Encode;
-use substrate_network::{Severity, NodeIndex, PeerInfo, ClientHandle, Context, Roles, message::Message as SubstrateMessage, specialization::Specialization, generic_message::Message as GenericMessage};
-
-use std::sync::Arc;
-use futures::Future;
-
-#[derive(Default)]
-struct TestContext {
-	disabled: Vec<NodeIndex>,
-	disconnected: Vec<NodeIndex>,
-	messages: Vec<(NodeIndex, SubstrateMessage<Block>)>,
-}
-
-impl Context<Block> for TestContext {
-	fn client(&self) -> &ClientHandle<Block> {
-		unimplemented!()
-	}
-
-	fn report_peer(&mut self, peer: NodeIndex, reason: Severity) {
-		match reason {
-			Severity::Bad(_) => self.disabled.push(peer),
-			_ => self.disconnected.push(peer),
-		}
-	}
-
-	fn peer_info(&self, _peer: NodeIndex) -> Option<PeerInfo<Block>> {
-		unimplemented!()
-	}
-
-	fn send_message(&mut self, who: NodeIndex, data: SubstrateMessage<Block>) {
-		self.messages.push((who, data))
-	}
-}
-
-impl TestContext {
-	fn has_message(&self, to: NodeIndex, message: Message) -> bool {
-		use substrate_network::generic_message::Message as GenericMessage;
-
-		let encoded = message.encode();
-		self.messages.iter().any(|&(ref peer, ref msg)| match msg {
-			GenericMessage::ChainSpecific(ref data) => peer == &to && data == &encoded,
-			_ => false,
-		})
-	}
-}
-
-fn make_status(status: &Status, roles: Roles) -> FullStatus {
-	FullStatus {
-		version: 1,
-		roles,
-		best_number: 0,
-		best_hash: Default::default(),
-		genesis_hash: Default::default(),
-		chain_status: status.encode(),
-	}
-}
-
-fn make_consensus(parent_hash: Hash, local_key: SessionKey) -> (CurrentConsensus, Arc<Mutex<Knowledge>>) {
-	let knowledge = Arc::new(Mutex::new(Knowledge::new()));
-	let c = CurrentConsensus {
-		knowledge: knowledge.clone(),
-		parent_hash,
-		local_session_key: local_key,
-	};
-
-	(c, knowledge)
-}
-
-fn on_message(protocol: &mut PolkadotProtocol, ctx: &mut TestContext, from: NodeIndex, message: Message) {
-	let encoded = message.encode();
-	protocol.on_message(ctx, from, GenericMessage::ChainSpecific(encoded));
-}
-
-#[test]
-fn sends_session_key() {
-	let mut protocol = PolkadotProtocol::new(None);
-
-	let peer_a = 1;
-	let peer_b = 2;
-	let parent_hash = [0; 32].into();
-	let local_key = [1; 32].into();
-
-	let validator_status = Status { collating_for: None };
-	let collator_status = Status { collating_for: Some(([2; 32].into(), 5.into())) };
-
-	{
-		let mut ctx = TestContext::default();
-		protocol.on_connect(&mut ctx, peer_a, make_status(&validator_status, Roles::AUTHORITY));
-		assert!(ctx.messages.is_empty());
-	}
-
-	{
-		let mut ctx = TestContext::default();
-		let (consensus, _knowledge) = make_consensus(parent_hash, local_key);
-		protocol.new_consensus(&mut ctx, consensus);
-		assert!(ctx.has_message(peer_a, Message::SessionKey(local_key)));
-	}
-
-	{
-		let mut ctx = TestContext::default();
-		protocol.on_connect(&mut ctx, peer_b, make_status(&collator_status, Roles::NONE));
-		assert!(ctx.has_message(peer_b, Message::SessionKey(local_key)));
-	}
-}
-
-#[test]
-fn fetches_from_those_with_knowledge() {
-	let mut protocol = PolkadotProtocol::new(None);
-
-	let peer_a = 1;
-	let peer_b = 2;
-	let parent_hash = [0; 32].into();
-	let local_key = [1; 32].into();
-
-	let block_data = BlockData(vec![1, 2, 3, 4]);
-	let block_data_hash = block_data.hash();
-	let candidate_receipt = CandidateReceipt {
-		parachain_index: 5.into(),
-		collator: [255; 32].into(),
-		head_data: HeadData(vec![9, 9, 9]),
-		signature: H512::from([1; 64]).into(),
-		balance_uploads: Vec::new(),
-		egress_queue_roots: Vec::new(),
-		fees: 1_000_000,
-		block_data_hash,
-	};
-
-	let candidate_hash = candidate_receipt.hash();
-	let a_key = [3; 32].into();
-	let b_key = [4; 32].into();
-
-	let status = Status { collating_for: None };
-
-	let (consensus, knowledge) = make_consensus(parent_hash, local_key);
-	protocol.new_consensus(&mut TestContext::default(), consensus);
-
-	knowledge.lock().note_statement(a_key, &GenericStatement::Valid(candidate_hash));
-	let recv = protocol.fetch_block_data(&mut TestContext::default(), &candidate_receipt, parent_hash);
-
-	// connect peer A
-	{
-		let mut ctx = TestContext::default();
-		protocol.on_connect(&mut ctx, peer_a, make_status(&status, Roles::AUTHORITY));
-		assert!(ctx.has_message(peer_a, Message::SessionKey(local_key)));
-	}
-
-	// peer A gives session key and gets asked for data.
-	{
-		let mut ctx = TestContext::default();
-		on_message(&mut protocol, &mut ctx, peer_a, Message::SessionKey(a_key));
-		assert!(protocol.validators.contains_key(&a_key));
-		assert!(ctx.has_message(peer_a, Message::RequestBlockData(1, parent_hash, candidate_hash)));
-	}
-
-	knowledge.lock().note_statement(b_key, &GenericStatement::Valid(candidate_hash));
-
-	// peer B connects and sends session key. request already assigned to A
-	{
-		let mut ctx = TestContext::default();
-		protocol.on_connect(&mut ctx, peer_b, make_status(&status, Roles::AUTHORITY));
-		on_message(&mut protocol, &mut ctx, peer_b, Message::SessionKey(b_key));
-		assert!(!ctx.has_message(peer_b, Message::RequestBlockData(2, parent_hash, candidate_hash)));
-
-	}
-
-	// peer A disconnects, triggering reassignment
-	{
-		let mut ctx = TestContext::default();
-		protocol.on_disconnect(&mut ctx, peer_a);
-		assert!(!protocol.validators.contains_key(&a_key));
-		assert!(ctx.has_message(peer_b, Message::RequestBlockData(2, parent_hash, candidate_hash)));
-	}
-
-	// peer B comes back with block data.
-	{
-		let mut ctx = TestContext::default();
-		on_message(&mut protocol, &mut ctx, peer_b, Message::BlockData(2, Some(block_data.clone())));
-		drop(protocol);
-		assert_eq!(recv.wait().unwrap(), block_data);
-	}
-}
-
-#[test]
-fn fetches_available_block_data() {
-	let mut protocol = PolkadotProtocol::new(None);
-
-	let peer_a = 1;
-	let parent_hash = [0; 32].into();
-
-	let block_data = BlockData(vec![1, 2, 3, 4]);
-	let block_data_hash = block_data.hash();
-	let para_id = 5.into();
-	let candidate_receipt = CandidateReceipt {
-		parachain_index: para_id,
-		collator: [255; 32].into(),
-		head_data: HeadData(vec![9, 9, 9]),
-		signature: H512::from([1; 64]).into(),
-		balance_uploads: Vec::new(),
-		egress_queue_roots: Vec::new(),
-		fees: 1_000_000,
-		block_data_hash,
-	};
-
-	let candidate_hash = candidate_receipt.hash();
-	let av_store = ::av_store::Store::new_in_memory();
-
-	let status = Status { collating_for: None };
-
-	protocol.register_availability_store(av_store.clone());
-
-	av_store.make_available(::av_store::Data {
-		relay_parent: parent_hash,
-		parachain_id: para_id,
-		candidate_hash,
-		block_data: block_data.clone(),
-		extrinsic: None,
-	}).unwrap();
-
-	// connect peer A
-	{
-		let mut ctx = TestContext::default();
-		protocol.on_connect(&mut ctx, peer_a, make_status(&status, Roles::FULL));
-	}
-
-	// peer A asks for historic block data and gets response
-	{
-		let mut ctx = TestContext::default();
-		on_message(&mut protocol, &mut ctx, peer_a, Message::RequestBlockData(1, parent_hash, candidate_hash));
-		assert!(ctx.has_message(peer_a, Message::BlockData(1, Some(block_data))));
-	}
-}
-
-#[test]
-fn remove_bad_collator() {
-	let mut protocol = PolkadotProtocol::new(None);
-
-	let who = 1;
-	let account_id = [2; 32].into();
-
-	let status = Status { collating_for: Some((account_id, 5.into())) };
-
-	{
-		let mut ctx = TestContext::default();
-		protocol.on_connect(&mut ctx, who, make_status(&status, Roles::NONE));
-	}
-
-	{
-		let mut ctx = TestContext::default();
-		protocol.disconnect_bad_collator(&mut ctx, account_id);
-		assert!(ctx.disabled.contains(&who));
-	}
-}
diff --git a/substrate/polkadot/parachain/Cargo.toml b/substrate/polkadot/parachain/Cargo.toml
deleted file mode 100644
index f9e2b3bf05588d1e8168f6f5e4e9cd0b9eed98f4..0000000000000000000000000000000000000000
--- a/substrate/polkadot/parachain/Cargo.toml
+++ /dev/null
@@ -1,18 +0,0 @@
-[package]
-name = "polkadot-parachain"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-description = "Types and utilities for creating and working with parachains"
-
-[dependencies]
-substrate-codec = { path = "../../substrate/codec", default-features = false }
-substrate-codec-derive = { path = "../../substrate/codec/derive", default-features = false }
-wasmi = { version = "0.4", optional = true }
-error-chain = { version = "0.12", optional = true }
-
-[dev-dependencies]
-tiny-keccak = "1.4"
-
-[features]
-default = ["std"]
-std = ["substrate-codec/std", "wasmi", "error-chain"]
diff --git a/substrate/polkadot/parachain/README.adoc b/substrate/polkadot/parachain/README.adoc
deleted file mode 100644
index fbce59a188f42e2357e9056bb6854de15a79d2d0..0000000000000000000000000000000000000000
--- a/substrate/polkadot/parachain/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Parachain
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/parachain/src/lib.rs b/substrate/polkadot/parachain/src/lib.rs
deleted file mode 100644
index 3854fe2ca8c33022c2f6541a0f560f4b812ecc9f..0000000000000000000000000000000000000000
--- a/substrate/polkadot/parachain/src/lib.rs
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Defines primitive types for creating or validating a parachain.
-//!
-//! When compiled with standard library support, this crate exports a `wasm`
-//! module that can be used to validate parachain WASM.
-//!
-//! ## Parachain WASM
-//!
-//! Polkadot parachain WASM is in the form of a module which imports a memory
-//! instance and exports a function `validate`.
-//!
-//! `validate` accepts as input two `i32` values, representing a pointer/length pair
-//! respectively, that encodes `ValidationParams`.
-//!
-//! `validate` returns an `i32` which is a pointer to a little-endian 32-bit integer denoting a length.
-//! Subtracting the length from the initial pointer will give a new pointer to the actual return data,
-//!
-//! ASCII-diagram demonstrating the return data format:
-//!
-//! ```ignore
-//! [return data][len (LE-u32)]
-//!              ^~~returned pointer
-//! ```
-//!
-//! The `load_params` and `write_result` functions provide utilities for setting up
-//! a parachain WASM module in Rust.
-
-#![cfg_attr(not(feature = "std"), no_std)]
-#![cfg_attr(not(feature = "std"), feature(alloc))]
-
-/// Re-export of substrate-codec.
-pub extern crate substrate_codec as codec;
-
-#[macro_use]
-extern crate substrate_codec_derive;
-
-#[cfg(not(feature = "std"))]
-extern crate alloc;
-
-#[cfg(feature = "std")]
-extern crate core;
-
-#[cfg(feature = "std")]
-extern crate wasmi;
-
-#[cfg(feature = "std")]
-#[macro_use]
-extern crate error_chain;
-
-#[cfg(not(feature = "std"))]
-use alloc::vec::Vec;
-use codec::{Encode, Decode};
-
-#[cfg(feature = "std")]
-pub mod wasm;
-
-/// Validation parameters for evaluating the parachain validity function.
-// TODO: consolidated ingress and balance downloads
-#[derive(PartialEq, Eq, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Debug))]
-pub struct ValidationParams {
-	/// The collation body.
-	pub block_data: Vec<u8>,
-	/// Previous head-data.
-	pub parent_head: Vec<u8>,
-}
-
-/// The result of parachain validation.
-// TODO: egress and balance uploads
-#[derive(PartialEq, Eq, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Debug))]
-pub struct ValidationResult {
-	/// New head data that should be included in the relay chain state.
-	pub head_data: Vec<u8>
-}
-
-/// Load the validation params from memory when implementing a Rust parachain.
-///
-/// Offset and length must have been provided by the validation
-/// function's entry point.
-pub unsafe fn load_params(offset: usize, len: usize) -> ValidationParams {
-	let mut slice = ::core::slice::from_raw_parts(offset as *const u8, len);
-
-	ValidationParams::decode(&mut slice).expect("Invalid input data")
-}
-
-/// Allocate the validation result in memory, getting the return-pointer back.
-///
-/// As described in the crate docs, this is a pointer to the appended length
-/// of the vector.
-pub fn write_result(result: ValidationResult) -> usize {
-	let mut encoded = result.encode();
-	let len = encoded.len();
-
-	assert!(len <= u32::max_value() as usize, "Len too large for parachain-WASM abi");
-	(len as u32).using_encoded(|s| encoded.extend(s));
-
-	// do not alter `encoded` beyond this point. may reallocate.
-	let end_ptr = &encoded[len] as *const u8 as usize;
-
-	// leak so it doesn't get zeroed.
-	::core::mem::forget(encoded);
-	end_ptr
-}
diff --git a/substrate/polkadot/parachain/src/wasm.rs b/substrate/polkadot/parachain/src/wasm.rs
deleted file mode 100644
index 73ccfdfdaff365e054d06eca92bf1bac1f083478..0000000000000000000000000000000000000000
--- a/substrate/polkadot/parachain/src/wasm.rs
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! WASM re-execution of a parachain candidate.
-//! In the context of relay-chain candidate evaluation, there are some additional
-//! steps to ensure that the provided input parameters are correct.
-//! Assuming the parameters are correct, this module provides a wrapper around
-//! a WASM VM for re-execution of a parachain candidate.
-
-use codec::{Decode, Encode};
-
-use wasmi::{self, Module, ModuleInstance,  MemoryInstance, MemoryDescriptor, MemoryRef, ModuleImportResolver};
-use wasmi::{memory_units, RuntimeValue};
-use wasmi::Error as WasmError;
-use wasmi::memory_units::{Bytes, Pages, RoundUpTo};
-
-use super::{ValidationParams, ValidationResult};
-
-use std::cell::RefCell;
-
-error_chain! {
-	types { Error, ErrorKind, ResultExt; }
-	foreign_links {
-		Wasm(WasmError);
-	}
-	errors {
-		/// Call data too big. WASM32 only has a 32-bit address space.
-		ParamsTooLarge(len: usize) {
-			description("Validation parameters took up too much space to execute in WASM"),
-			display("Validation parameters took up {} bytes, max allowed by WASM is {}", len, i32::max_value()),
-		}
-		/// Bad return data or type.
-		BadReturn {
-			description("Validation function returned invalid data."),
-			display("Validation function returned invalid data."),
-		}
-	}
-}
-
-struct Resolver {
-	max_memory: u32, // in pages.
-	memory: RefCell<Option<MemoryRef>>,
-}
-
-impl ModuleImportResolver for Resolver {
-	fn resolve_memory(
-		&self,
-		field_name: &str,
-		descriptor: &MemoryDescriptor,
-	) -> Result<MemoryRef, WasmError> {
-		if field_name == "memory" {
-			let effective_max = descriptor.maximum().unwrap_or(self.max_memory);
-			if descriptor.initial() > self.max_memory || effective_max > self.max_memory {
-				Err(WasmError::Instantiation("Module requested too much memory".to_owned()))
-			} else {
-				let mem = MemoryInstance::alloc(
-					memory_units::Pages(descriptor.initial() as usize),
-					descriptor.maximum().map(|x| memory_units::Pages(x as usize)),
-				)?;
-				*self.memory.borrow_mut() = Some(mem.clone());
-				Ok(mem)
-			}
-		} else {
-			Err(WasmError::Instantiation("Memory imported under unknown name".to_owned()))
-		}
-	}
-}
-
-/// Validate a candidate under the given validation code.
-///
-/// This will fail if the validation code is not a proper parachain validation module.
-pub fn validate_candidate(validation_code: &[u8], params: ValidationParams) -> Result<ValidationResult, Error> {
-	use wasmi::LINEAR_MEMORY_PAGE_SIZE;
-
-	// maximum memory in bytes
-	const MAX_MEM: u32 = 1024 * 1024 * 1024; // 1 GiB
-
-	// instantiate the module.
-	let (module, memory) = {
-		let module = Module::from_buffer(validation_code)?;
-
-		let module_resolver = Resolver {
-			max_memory: MAX_MEM / LINEAR_MEMORY_PAGE_SIZE.0 as u32,
-			memory: RefCell::new(None),
-		};
-
-		let module = ModuleInstance::new(
-			&module,
-			&wasmi::ImportsBuilder::new().with_resolver("env", &module_resolver),
-		)?.run_start(&mut wasmi::NopExternals).map_err(WasmError::Trap)?;
-
-		let memory = module_resolver.memory.borrow()
-			.as_ref()
-			.ok_or_else(|| WasmError::Instantiation("No imported memory instance".to_owned()))?
-			.clone();
-
-		(module, memory)
-	};
-
-	// allocate call data in memory.
-	let (offset, len) = {
-		let encoded_call_data = params.encode();
-
-		// hard limit from WASM.
-		if encoded_call_data.len() > i32::max_value() as usize {
-			bail!(ErrorKind::ParamsTooLarge(encoded_call_data.len()));
-		}
-
-		// allocate sufficient amount of wasm pages to fit encoded call data.
-		let call_data_pages: Pages = Bytes(encoded_call_data.len()).round_up_to();
-		let allocated_mem_start: Bytes = memory.grow(call_data_pages)?.into();
-
-		memory.set(allocated_mem_start.0 as u32, &encoded_call_data)
-			.expect(
-				"enough memory allocated just before this; \
-				copying never fails if memory is large enough; qed"
-			);
-
-		(allocated_mem_start.0, encoded_call_data.len())
-	};
-
-	let output = module.invoke_export(
-		"validate",
-		&[RuntimeValue::I32(offset as i32), RuntimeValue::I32(len as i32)],
-		&mut wasmi::NopExternals,
-	)?;
-
-	match output {
-		Some(RuntimeValue::I32(len_offset)) => {
-			let len_offset = len_offset as u32;
-
-			let mut len_bytes = [0u8; 4];
-			memory.get_into(len_offset, &mut len_bytes)?;
-
-			let len = u32::decode(&mut &len_bytes[..])
-				.ok_or_else(|| ErrorKind::BadReturn)?;
-
-			let return_offset = if len > len_offset {
-				bail!(ErrorKind::BadReturn);
-			} else {
-				len_offset - len
-			};
-
-			// TODO: optimize when `wasmi` lets you inspect memory with a closure.
-			let raw_return = memory.get(return_offset, len as usize)?;
-			ValidationResult::decode(&mut &raw_return[..])
-				.ok_or_else(|| ErrorKind::BadReturn)
-				.map_err(Into::into)
-		}
-		_ => bail!(ErrorKind::BadReturn),
-	}
-}
diff --git a/substrate/polkadot/parachain/tests/adder.rs b/substrate/polkadot/parachain/tests/adder.rs
deleted file mode 100644
index 7ba3ff04fe843a4efaa267700259d3842cab0951..0000000000000000000000000000000000000000
--- a/substrate/polkadot/parachain/tests/adder.rs
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Basic parachain that adds a number as part of its state.
-
-#[macro_use]
-extern crate substrate_codec_derive;
-extern crate substrate_codec as codec;
-extern crate polkadot_parachain as parachain;
-extern crate tiny_keccak;
-
-use parachain::ValidationParams;
-use codec::{Decode, Encode};
-
-/// Head data for this parachain.
-#[derive(Default, Clone, Encode, Decode)]
-struct HeadData {
-	/// Block number
-	number: u64,
-	/// parent block keccak256
-	parent_hash: [u8; 32],
-	/// hash of post-execution state.
-	post_state: [u8; 32],
-}
-
-/// Block data for this parachain.
-#[derive(Default, Clone, Encode, Decode)]
-struct BlockData {
-	/// State to begin from.
-	state: u64,
-	/// Amount to add (overflowing)
-	add: u64,
-}
-
-const TEST_CODE: &[u8] = include_bytes!("res/adder.wasm");
-
-fn hash_state(state: u64) -> [u8; 32] {
-	::tiny_keccak::keccak256(state.encode().as_slice())
-}
-
-fn hash_head(head: &HeadData) -> [u8; 32] {
-	::tiny_keccak::keccak256(head.encode().as_slice())
-}
-
-#[test]
-fn execute_good_on_parent() {
-	let parent_head = HeadData {
-		number: 0,
-		parent_hash: [0; 32],
-		post_state: hash_state(0),
-	};
-
-	let block_data = BlockData {
-		state: 0,
-		add: 512,
-	};
-
-	let ret = parachain::wasm::validate_candidate(TEST_CODE, ValidationParams {
-		parent_head: parent_head.encode(),
-		block_data: block_data.encode(),
-	}).unwrap();
-
-	let new_head = HeadData::decode(&mut &ret.head_data[..]).unwrap();
-
-	assert_eq!(new_head.number, 1);
-	assert_eq!(new_head.parent_hash, hash_head(&parent_head));
-	assert_eq!(new_head.post_state, hash_state(512));
-}
-
-#[test]
-fn execute_good_chain_on_parent() {
-	let mut number = 0;
-	let mut parent_hash = [0; 32];
-	let mut last_state = 0;
-
-	for add in 0..10 {
-		let parent_head = HeadData {
-			number,
-			parent_hash,
-			post_state: hash_state(last_state),
-		};
-
-		let block_data = BlockData {
-			state: last_state,
-			add,
-		};
-
-		let ret = parachain::wasm::validate_candidate(TEST_CODE, ValidationParams {
-			parent_head: parent_head.encode(),
-			block_data: block_data.encode(),
-		}).unwrap();
-
-		let new_head = HeadData::decode(&mut &ret.head_data[..]).unwrap();
-
-		assert_eq!(new_head.number, number + 1);
-		assert_eq!(new_head.parent_hash, hash_head(&parent_head));
-		assert_eq!(new_head.post_state, hash_state(last_state + add));
-
-		number += 1;
-		parent_hash = hash_head(&new_head);
-		last_state += add;
-	}
-}
-
-#[test]
-fn execute_bad_on_parent() {
-	let parent_head = HeadData {
-		number: 0,
-		parent_hash: [0; 32],
-		post_state: hash_state(0),
-	};
-
-	let block_data = BlockData {
-		state: 256, // start state is wrong.
-		add: 256,
-	};
-
-	let _ret = parachain::wasm::validate_candidate(TEST_CODE, ValidationParams {
-		parent_head: parent_head.encode(),
-		block_data: block_data.encode(),
-	}).unwrap_err();
-}
diff --git a/substrate/polkadot/parachain/tests/res/adder.wasm b/substrate/polkadot/parachain/tests/res/adder.wasm
deleted file mode 100644
index 9f0145a78b1ba6bedc78efb63e862e61f91f29bd..0000000000000000000000000000000000000000
Binary files a/substrate/polkadot/parachain/tests/res/adder.wasm and /dev/null differ
diff --git a/substrate/polkadot/primitives/Cargo.toml b/substrate/polkadot/primitives/Cargo.toml
deleted file mode 100644
index b277f074c3fe5f3548ed909f552f54bfda2d4489..0000000000000000000000000000000000000000
--- a/substrate/polkadot/primitives/Cargo.toml
+++ /dev/null
@@ -1,28 +0,0 @@
-[package]
-name = "polkadot-primitives"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-serde = { version = "1.0", default_features = false }
-serde_derive = { version = "1.0", optional = true }
-substrate-codec = { path = "../../substrate/codec", default_features = false }
-substrate-codec-derive = { path = "../../substrate/codec/derive", default_features = false }
-substrate-primitives = { path = "../../substrate/primitives", default_features = false }
-substrate-runtime-std = { path = "../../substrate/runtime-std", default_features = false }
-substrate-runtime-primitives = { path = "../../substrate/runtime/primitives", default_features = false }
-
-[dev-dependencies]
-substrate-serializer = { path = "../../substrate/serializer" }
-pretty_assertions = "0.4"
-
-[features]
-default = ["std"]
-std = [
-	"substrate-codec/std",
-	"substrate-primitives/std",
-	"substrate-runtime-std/std",
-	"substrate-runtime-primitives/std",
-	"serde_derive",
-	"serde/std",
-]
diff --git a/substrate/polkadot/primitives/README.adoc b/substrate/polkadot/primitives/README.adoc
deleted file mode 100644
index a8468a0cd96121a34face47d966f6b29b4260ac9..0000000000000000000000000000000000000000
--- a/substrate/polkadot/primitives/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot primitives
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/primitives/src/lib.rs b/substrate/polkadot/primitives/src/lib.rs
deleted file mode 100644
index bf3e2fd565368facf51dd08570d6e76270e72b03..0000000000000000000000000000000000000000
--- a/substrate/polkadot/primitives/src/lib.rs
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Shareable Polkadot types.
-
-#![warn(missing_docs)]
-
-#![cfg_attr(not(feature = "std"), no_std)]
-#![cfg_attr(not(feature = "std"), feature(alloc))]
-
-extern crate substrate_codec as codec;
-extern crate substrate_primitives as primitives;
-extern crate substrate_runtime_primitives as runtime_primitives;
-extern crate substrate_runtime_std as rstd;
-
-#[cfg(test)]
-extern crate substrate_serializer;
-
-#[macro_use]
-extern crate substrate_codec_derive;
-
-#[cfg(feature = "std")]
-#[macro_use]
-extern crate serde_derive;
-
-#[cfg(feature = "std")]
-extern crate serde;
-
-#[cfg(feature = "std")]
-use primitives::bytes;
-
-use rstd::prelude::*;
-use runtime_primitives::traits::BlakeTwo256;
-use runtime_primitives::generic;
-
-pub mod parachain;
-
-/// Block header type as expected by this runtime.
-pub type Header = generic::Header<BlockNumber, BlakeTwo256, Log>;
-
-/// Opaque, encoded, unchecked extrinsic.
-pub type UncheckedExtrinsic = Vec<u8>;
-
-/// A "future-proof" block type for Polkadot. This will be resilient to upgrades in transaction
-/// format, because it doesn't attempt to decode extrinsics.
-///
-/// Specialized code needs to link to (at least one version of) the runtime directly
-/// in order to handle the extrinsics within.
-pub type Block = generic::Block<Header, UncheckedExtrinsic>;
-
-/// An index to a block.
-/// 32-bits will allow for 136 years of blocks assuming 1 block per second.
-/// TODO: switch to u32
-pub type BlockNumber = u64;
-
-/// Alias to Ed25519 pubkey that identifies an account on the relay chain.
-pub type AccountId = primitives::hash::H256;
-
-/// The type for looking up accounts. We don't expect more than 4 billion of them, but you
-/// never know...
-pub type AccountIndex = u64;
-
-/// The Ed25519 pub key of an session that belongs to an authority of the relay chain. This is
-/// exactly equivalent to what the substrate calls an "authority".
-pub type SessionKey = primitives::AuthorityId;
-
-/// Indentifier for a chain. 32-bit should be plenty.
-pub type ChainId = u32;
-
-/// A hash of some data used by the relay chain.
-pub type Hash = primitives::H256;
-
-/// Index of a transaction in the relay chain. 32-bit should be plenty.
-pub type Index = u32;
-
-/// Alias to 512-bit hash when used in the context of a signature on the relay chain.
-/// Equipped with logic for possibly "unsigned" messages.
-pub type Signature = runtime_primitives::MaybeUnsigned<runtime_primitives::Ed25519Signature>;
-
-/// A timestamp: seconds since the unix epoch.
-pub type Timestamp = u64;
-
-/// The balance of an account.
-/// 128-bits (or 38 significant decimal figures) will allow for 10m currency (10^7) at a resolution
-/// to all for one second's worth of an annualised 50% reward be paid to a unit holder (10^11 unit
-/// denomination), or 10^18 total atomic units, to grow at 50%/year for 51 years (10^9 multiplier)
-/// for an eventual total of 10^27 units (27 significant decimal figures).
-/// We round denomination to 10^12 (12 sdf), and leave the other redundancy at the upper end so
-/// that 32 bits may be multiplied with a balance in 128 bits without worrying about overflow.
-pub type Balance = u128;
-
-/// "generic" block ID for the future-proof block type.
-// TODO: parameterize blockid only as necessary.
-pub type BlockId = generic::BlockId<Block>;
-
-/// A log entry in the block.
-#[derive(PartialEq, Eq, Clone, Default, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct Log(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec<u8>);
-
-/// Inherent data to include in a block.
-#[derive(Encode, Decode)]
-pub struct InherentData {
-	/// Current timestamp.
-	pub timestamp: Timestamp,
-	/// Parachain heads update.
-	pub parachain_heads: Vec<::parachain::CandidateReceipt>,
-	/// Indices of offline validators.
-	pub offline_indices: Vec<u32>,
-}
diff --git a/substrate/polkadot/primitives/src/parachain.rs b/substrate/polkadot/primitives/src/parachain.rs
deleted file mode 100644
index 8ceec3f9fd5f50c4ad204f9bd6b282b18db1c721..0000000000000000000000000000000000000000
--- a/substrate/polkadot/primitives/src/parachain.rs
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Polkadot parachain types.
-
-use rstd::prelude::*;
-use rstd::cmp::Ordering;
-use super::Hash;
-
-#[cfg(feature = "std")]
-use primitives::bytes;
-
-/// Signature on candidate's block data by a collator.
-pub type CandidateSignature = ::runtime_primitives::Ed25519Signature;
-
-/// Unique identifier of a parachain.
-#[derive(PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct Id(u32);
-
-impl From<Id> for u32 {
-	fn from(x: Id) -> Self { x.0 }
-}
-
-impl From<u32> for Id {
-	fn from(x: u32) -> Self { Id(x) }
-}
-
-impl Id {
-	/// Convert this Id into its inner representation.
-	pub fn into_inner(self) -> u32 {
-		self.0
-	}
-}
-
-/// Identifier for a chain, either one of a number of parachains or the relay chain.
-#[derive(Copy, Clone, PartialEq, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Debug))]
-pub enum Chain {
-	/// The relay chain.
-	Relay,
-	/// A parachain of the given index.
-	Parachain(Id),
-}
-
-/// The duty roster specifying what jobs each validator must do.
-#[derive(Clone, PartialEq, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Default, Debug))]
-pub struct DutyRoster {
-	/// Lookup from validator index to chain on which that validator has a duty to validate.
-	pub validator_duty: Vec<Chain>,
-	/// Lookup from validator index to chain on which that validator has a duty to guarantee
-	/// availability.
-	pub guarantor_duty: Vec<Chain>,
-}
-
-/// Extrinsic data for a parachain.
-#[derive(PartialEq, Eq, Clone)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))]
-#[cfg_attr(feature = "std", serde(deny_unknown_fields))]
-pub struct Extrinsic;
-
-/// Candidate receipt type.
-#[derive(PartialEq, Eq, Clone, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))]
-#[cfg_attr(feature = "std", serde(deny_unknown_fields))]
-pub struct CandidateReceipt {
-	/// The ID of the parachain this is a candidate for.
-	pub parachain_index: Id,
-	/// The collator's relay-chain account ID
-	pub collator: super::AccountId,
-	/// Signature on blake2-256 of the block data by collator.
-	pub signature: CandidateSignature,
-	/// The head-data
-	pub head_data: HeadData,
-	/// Balance uploads to the relay chain.
-	pub balance_uploads: Vec<(super::AccountId, u64)>,
-	/// Egress queue roots.
-	pub egress_queue_roots: Vec<(Id, Hash)>,
-	/// Fees paid from the chain to the relay chain validators
-	pub fees: u64,
-	/// blake2-256 Hash of block data.
-	pub block_data_hash: Hash,
-}
-
-impl CandidateReceipt {
-	/// Get the blake2_256 hash
-	#[cfg(feature = "std")]
-	pub fn hash(&self) -> Hash {
-		use runtime_primitives::traits::{BlakeTwo256, Hash};
-		BlakeTwo256::hash_of(self)
-	}
-
-	/// Check integrity vs. provided block data.
-	pub fn check_signature(&self) -> Result<(), ()> {
-		use runtime_primitives::traits::Verify;
-
-		if self.signature.verify(&self.block_data_hash.0[..], &self.collator) {
-			Ok(())
-		} else {
-			Err(())
-		}
-	}
-}
-
-impl PartialOrd for CandidateReceipt {
-	fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
-		Some(self.cmp(other))
-	}
-}
-
-impl Ord for CandidateReceipt {
-	fn cmp(&self, other: &Self) -> Ordering {
-		// TODO: compare signatures or something more sane
-		self.parachain_index.cmp(&other.parachain_index)
-			.then_with(|| self.head_data.cmp(&other.head_data))
-	}
-}
-
-/// A full collation.
-#[derive(PartialEq, Eq, Clone, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-#[cfg_attr(feature = "std", serde(rename_all = "camelCase"))]
-#[cfg_attr(feature = "std", serde(deny_unknown_fields))]
-pub struct Collation {
-	/// Block data.
-	pub block_data: BlockData,
-	/// Candidate receipt itself.
-	pub receipt: CandidateReceipt,
-}
-
-/// Parachain ingress queue message.
-#[derive(PartialEq, Eq, Clone)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct Message(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec<u8>);
-
-/// Consolidated ingress queue data.
-///
-/// This is just an ordered vector of other parachains' egress queues,
-/// obtained according to the routing rules.
-#[derive(Default, PartialEq, Eq, Clone)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct ConsolidatedIngress(pub Vec<(Id, Vec<Message>)>);
-
-/// Parachain block data.
-///
-/// contains everything required to validate para-block, may contain block and witness data
-#[derive(PartialEq, Eq, Clone, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct BlockData(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec<u8>);
-
-impl BlockData {
-	/// Compute hash of block data.
-	#[cfg(feature = "std")]
-	pub fn hash(&self) -> Hash {
-		use runtime_primitives::traits::{BlakeTwo256, Hash};
-		BlakeTwo256::hash(&self.0[..])
-	}
-}
-/// Parachain header raw bytes wrapper type.
-#[derive(PartialEq, Eq)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct Header(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec<u8>);
-
-/// Parachain head data included in the chain.
-#[derive(PartialEq, Eq, Clone, PartialOrd, Ord, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct HeadData(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec<u8>);
-
-/// Parachain validation code.
-#[derive(PartialEq, Eq)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct ValidationCode(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec<u8>);
-
-/// Activitiy bit field
-#[derive(PartialEq, Eq, Clone, Default, Encode, Decode)]
-#[cfg_attr(feature = "std", derive(Serialize, Deserialize, Debug))]
-pub struct Activity(#[cfg_attr(feature = "std", serde(with="bytes"))] pub Vec<u8>);
-
-/// Statements which can be made about parachain candidates.
-#[derive(Clone, PartialEq, Eq)]
-#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))]
-pub enum Statement {
-	/// Proposal of a parachain candidate.
-	Candidate(CandidateReceipt),
-	/// State that a parachain candidate is valid.
-	Valid(Hash),
-	/// Vote to commit to a candidate.
-	Invalid(Hash),
-	/// Vote to advance round after inactive primary.
-	Available(Hash),
-}
diff --git a/substrate/polkadot/runtime/Cargo.toml b/substrate/polkadot/runtime/Cargo.toml
deleted file mode 100644
index 3a595fef7ca8389dfd0fcbde7304c2026806bb1b..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/Cargo.toml
+++ /dev/null
@@ -1,57 +0,0 @@
-[package]
-name = "polkadot-runtime"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-rustc-hex = "1.0"
-log = { version = "0.3", optional = true }
-serde = { version = "1.0", default_features = false }
-serde_derive = { version = "1.0", optional = true }
-safe-mix = { version = "1.0", default_features = false}
-polkadot-primitives = { path = "../primitives", default_features = false }
-substrate-codec = { path = "../../substrate/codec" }
-substrate-serializer = { path = "../../substrate/serializer" }
-substrate-runtime-std = { path = "../../substrate/runtime-std" }
-substrate-runtime-io = { path = "../../substrate/runtime-io" }
-substrate-runtime-support = { path = "../../substrate/runtime-support" }
-substrate-primitives = { path = "../../substrate/primitives" }
-substrate-keyring = { path = "../../substrate/keyring" }
-substrate-runtime-consensus = { path = "../../substrate/runtime/consensus" }
-substrate-runtime-council = { path = "../../substrate/runtime/council" }
-substrate-runtime-democracy = { path = "../../substrate/runtime/democracy" }
-substrate-runtime-executive = { path = "../../substrate/runtime/executive" }
-substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" }
-substrate-runtime-session = { path = "../../substrate/runtime/session" }
-substrate-runtime-staking = { path = "../../substrate/runtime/staking" }
-substrate-runtime-system = { path = "../../substrate/runtime/system" }
-substrate-runtime-timestamp = { path = "../../substrate/runtime/timestamp" }
-substrate-runtime-version = { path = "../../substrate/runtime/version" }
-
-[dev-dependencies]
-hex-literal = "0.1.0"
-
-[features]
-default = ["std"]
-std = [
-	"polkadot-primitives/std",
-	"substrate-codec/std",
-	"substrate-primitives/std",
-	"substrate-runtime-std/std",
-	"substrate-runtime-io/std",
-	"substrate-runtime-support/std",
-	"substrate-runtime-consensus/std",
-	"substrate-runtime-council/std",
-	"substrate-runtime-democracy/std",
-	"substrate-runtime-executive/std",
-	"substrate-runtime-primitives/std",
-	"substrate-runtime-session/std",
-	"substrate-runtime-staking/std",
-	"substrate-runtime-system/std",
-	"substrate-runtime-timestamp/std",
-	"substrate-runtime-version/std",
-	"serde_derive",
-	"serde/std",
-	"log",
-	"safe-mix/std"
-]
diff --git a/substrate/polkadot/runtime/README.adoc b/substrate/polkadot/runtime/README.adoc
deleted file mode 100644
index 86dc313134a086dee98de0c34a096485102744cd..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Runtime
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/runtime/src/checked_block.rs b/substrate/polkadot/runtime/src/checked_block.rs
deleted file mode 100644
index d193d26963fd03445c898395ff7f1f03b1f88396..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/src/checked_block.rs
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Typesafe block interaction.
-
-use super::{Call, Block, TIMESTAMP_SET_POSITION, PARACHAINS_SET_POSITION, NOTE_OFFLINE_POSITION};
-use timestamp::Call as TimestampCall;
-use parachains::Call as ParachainsCall;
-use session::Call as SessionCall;
-use primitives::parachain::CandidateReceipt;
-
-/// Provides a type-safe wrapper around a structurally valid block.
-pub struct CheckedBlock {
-	inner: Block,
-	file_line: Option<(&'static str, u32)>,
-}
-
-impl CheckedBlock {
-	/// Create a new checked block. Fails if the block is not structurally valid.
-	pub fn new(block: Block) -> Result<Self, Block> {
-		let has_timestamp = block.extrinsics.get(TIMESTAMP_SET_POSITION as usize).map_or(false, |xt| {
-			!xt.is_signed() && match xt.extrinsic.function {
-				Call::Timestamp(TimestampCall::set(_)) => true,
-				_ => false,
-			}
-		});
-
-		if !has_timestamp { return Err(block) }
-
-		let has_heads = block.extrinsics.get(PARACHAINS_SET_POSITION as usize).map_or(false, |xt| {
-			!xt.is_signed() && match xt.extrinsic.function {
-				Call::Parachains(ParachainsCall::set_heads(_)) => true,
-				_ => false,
-			}
-		});
-
-		if !has_heads { return Err(block) }
-
-		Ok(CheckedBlock {
-			inner: block,
-			file_line: None,
-		})
-	}
-
-	// Creates a new checked block, asserting that it is valid.
-	#[doc(hidden)]
-	pub fn new_unchecked(block: Block, file: &'static str, line: u32) -> Self {
-		CheckedBlock {
-			inner: block,
-			file_line: Some((file, line)),
-		}
-	}
-
-	/// Extract the timestamp from the block.
-	pub fn timestamp(&self) -> ::primitives::Timestamp {
-		let x = self.inner.extrinsics.get(TIMESTAMP_SET_POSITION as usize).and_then(|xt| match xt.extrinsic.function {
-			Call::Timestamp(TimestampCall::set(x)) => Some(x),
-			_ => None
-		});
-
-		match x {
-			Some(x) => x,
-			None => panic!("Invalid polkadot block asserted at {:?}", self.file_line),
-		}
-	}
-
-	/// Extract the parachain heads from the block.
-	pub fn parachain_heads(&self) -> &[CandidateReceipt] {
-		let x = self.inner.extrinsics.get(PARACHAINS_SET_POSITION as usize).and_then(|xt| match xt.extrinsic.function {
-			Call::Parachains(ParachainsCall::set_heads(ref x)) => Some(&x[..]),
-			_ => None
-		});
-
-		match x {
-			Some(x) => x,
-			None => panic!("Invalid polkadot block asserted at {:?}", self.file_line),
-		}
-	}
-
-	/// Extract the noted offline validator indices (if any) from the block.
-	pub fn noted_offline(&self) -> &[u32] {
-		self.inner.extrinsics.get(NOTE_OFFLINE_POSITION as usize).and_then(|xt| match xt.extrinsic.function {
-			Call::Session(SessionCall::note_offline(ref x)) => Some(&x[..]),
-			_ => None,
-		}).unwrap_or(&[])
-	}
-
-	/// Convert into inner block.
-	pub fn into_inner(self) -> Block { self.inner }
-}
-
-impl ::std::ops::Deref for CheckedBlock {
-	type Target = Block;
-
-	fn deref(&self) -> &Block { &self.inner }
-}
-
-/// Assert that a block is structurally valid. May lead to panic in the future
-/// in case it isn't.
-#[macro_export]
-macro_rules! assert_polkadot_block {
-	($block: expr) => {
-		$crate::CheckedBlock::new_unchecked($block, file!(), line!())
-	}
-}
diff --git a/substrate/polkadot/runtime/src/lib.rs b/substrate/polkadot/runtime/src/lib.rs
deleted file mode 100644
index 203ac58c6b65158d0ed521d628c103f6fee92c1c..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/src/lib.rs
+++ /dev/null
@@ -1,408 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! The Polkadot runtime. This can be compiled with ``#[no_std]`, ready for Wasm.
-
-#![cfg_attr(not(feature = "std"), no_std)]
-
-#[cfg(feature = "std")]
-#[macro_use]
-extern crate serde_derive;
-
-#[cfg(feature = "std")]
-extern crate serde;
-
-#[macro_use]
-extern crate substrate_runtime_io as runtime_io;
-
-#[macro_use]
-extern crate substrate_runtime_support;
-
-#[macro_use]
-extern crate substrate_runtime_primitives as runtime_primitives;
-
-#[cfg(test)]
-#[macro_use]
-extern crate hex_literal;
-
-#[cfg(test)]
-extern crate substrate_serializer;
-
-extern crate substrate_primitives;
-
-#[macro_use]
-extern crate substrate_runtime_std as rstd;
-
-extern crate polkadot_primitives as primitives;
-extern crate substrate_codec as codec;
-extern crate substrate_runtime_consensus as consensus;
-extern crate substrate_runtime_council as council;
-extern crate substrate_runtime_democracy as democracy;
-extern crate substrate_runtime_executive as executive;
-extern crate substrate_runtime_session as session;
-extern crate substrate_runtime_staking as staking;
-extern crate substrate_runtime_system as system;
-extern crate substrate_runtime_timestamp as timestamp;
-#[macro_use]
-extern crate substrate_runtime_version as version;
-
-#[cfg(feature = "std")]
-mod checked_block;
-mod parachains;
-mod utils;
-
-#[cfg(feature = "std")]
-pub use checked_block::CheckedBlock;
-pub use utils::{inherent_extrinsics, check_extrinsic};
-pub use staking::address::Address as RawAddress;
-
-use primitives::{AccountId, AccountIndex, Balance, BlockNumber, Hash, Index, Log, SessionKey, Signature};
-use runtime_primitives::{generic, traits::{HasPublicAux, BlakeTwo256, Convert}};
-use version::RuntimeVersion;
-
-#[cfg(feature = "std")]
-pub use runtime_primitives::BuildStorage;
-
-pub use consensus::Call as ConsensusCall;
-pub use timestamp::Call as TimestampCall;
-pub use parachains::Call as ParachainsCall;
-pub use primitives::Header;
-
-/// The position of the timestamp set extrinsic.
-pub const TIMESTAMP_SET_POSITION: u32 = 0;
-/// The position of the parachains set extrinsic.
-pub const PARACHAINS_SET_POSITION: u32 = 1;
-/// The position of the offline nodes noting extrinsic.
-pub const NOTE_OFFLINE_POSITION: u32 = 2;
-
-/// The address format for describing accounts.
-pub type Address = staking::Address<Concrete>;
-/// Block Id type for this block.
-pub type BlockId = generic::BlockId<Block>;
-/// Unchecked extrinsic type as expected by this runtime.
-pub type UncheckedExtrinsic = generic::UncheckedExtrinsic<Address, Index, Call, Signature>;
-/// Extrinsic type as expected by this runtime. This is not the type that is signed.
-pub type Extrinsic = generic::Extrinsic<Address, Index, Call>;
-/// Extrinsic type that is signed.
-pub type BareExtrinsic = generic::Extrinsic<AccountId, Index, Call>;
-/// Block type as expected by this runtime.
-pub type Block = generic::Block<Header, UncheckedExtrinsic>;
-
-/// Concrete runtime type used to parameterize the various modules.
-// Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted.
-#[derive(Clone, Copy, PartialEq, Eq)]
-#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))]
-pub struct Concrete;
-
-/// Polkadot runtime version.
-pub const VERSION: RuntimeVersion = RuntimeVersion {
-	spec_name: ver_str!("polkadot"),
-	impl_name: ver_str!("parity-polkadot"),
-	authoring_version: 1,
-	spec_version: 101,
-	impl_version: 0,
-};
-
-impl version::Trait for Concrete {
-	const VERSION: RuntimeVersion = VERSION;
-}
-
-/// Version module for this concrete runtime.
-pub type Version = version::Module<Concrete>;
-
-impl HasPublicAux for Concrete {
-	type PublicAux = AccountId;	// TODO: Option<AccountId>
-}
-
-impl system::Trait for Concrete {
-	type Index = Index;
-	type BlockNumber = BlockNumber;
-	type Hash = Hash;
-	type Hashing = BlakeTwo256;
-	type Digest = generic::Digest<Log>;
-	type AccountId = AccountId;
-	type Header = Header;
-}
-/// System module for this concrete runtime.
-pub type System = system::Module<Concrete>;
-
-impl consensus::Trait for Concrete {
-	type PublicAux = <Concrete as HasPublicAux>::PublicAux;
-	type SessionKey = SessionKey;
-}
-/// Consensus module for this concrete runtime.
-pub type Consensus = consensus::Module<Concrete>;
-
-impl timestamp::Trait for Concrete {
-	const TIMESTAMP_SET_POSITION: u32 = TIMESTAMP_SET_POSITION;
-	type Moment = u64;
-}
-/// Timestamp module for this concrete runtime.
-pub type Timestamp = timestamp::Module<Concrete>;
-
-/// Session key conversion.
-pub struct SessionKeyConversion;
-impl Convert<AccountId, SessionKey> for SessionKeyConversion {
-	fn convert(a: AccountId) -> SessionKey {
-		a.0.into()
-	}
-}
-
-impl session::Trait for Concrete {
-	const NOTE_OFFLINE_POSITION: u32 = NOTE_OFFLINE_POSITION;
-	type ConvertAccountIdToSessionKey = SessionKeyConversion;
-	type OnSessionChange = Staking;
-}
-/// Session module for this concrete runtime.
-pub type Session = session::Module<Concrete>;
-
-impl staking::Trait for Concrete {
-	type Balance = Balance;
-	type AccountIndex = AccountIndex;
-	type OnAccountKill = ();
-}
-/// Staking module for this concrete runtime.
-pub type Staking = staking::Module<Concrete>;
-
-impl democracy::Trait for Concrete {
-	type Proposal = PrivCall;
-}
-/// Democracy module for this concrete runtime.
-pub type Democracy = democracy::Module<Concrete>;
-
-impl council::Trait for Concrete {}
-/// Council module for this concrete runtime.
-pub type Council = council::Module<Concrete>;
-/// Council voting module for this concrete runtime.
-pub type CouncilVoting = council::voting::Module<Concrete>;
-
-impl parachains::Trait for Concrete {
-	const SET_POSITION: u32 = PARACHAINS_SET_POSITION;
-
-	type PublicAux = <Concrete as HasPublicAux>::PublicAux;
-}
-pub type Parachains = parachains::Module<Concrete>;
-
-impl_outer_dispatch! {
-	/// Call type for polkadot transactions.
-	#[derive(Clone, PartialEq, Eq)]
-	#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))]
-	pub enum Call where aux: <Concrete as HasPublicAux>::PublicAux {
-		Consensus = 0,
-		Session = 1,
-		Staking = 2,
-		Timestamp = 3,
-		Democracy = 5,
-		Council = 6,
-		CouncilVoting = 7,
-		Parachains = 8,
-	}
-
-	/// Internal calls.
-	#[derive(Clone, PartialEq, Eq)]
-	#[cfg_attr(feature = "std", derive(Debug, Serialize, Deserialize))]
-	pub enum PrivCall {
-		Consensus = 0,
-		Session = 1,
-		Staking = 2,
-		Democracy = 5,
-		Council = 6,
-		CouncilVoting = 7,
-		Parachains = 8,
-	}
-}
-
-/// Executive: handles dispatch to the various modules.
-pub type Executive = executive::Executive<Concrete, Block, Staking, Staking,
-	(((((((), Parachains), Council), Democracy), Staking), Session), Timestamp)>;
-
-impl_outer_config! {
-	pub struct GenesisConfig for Concrete {
-		ConsensusConfig => consensus,
-		SystemConfig => system,
-		SessionConfig => session,
-		StakingConfig => staking,
-		DemocracyConfig => democracy,
-		CouncilConfig => council,
-		TimestampConfig => timestamp,
-		ParachainsConfig => parachains,
-	}
-}
-
-pub mod api {
-	impl_stubs!(
-		version => |()| super::Version::version(),
-		authorities => |()| super::Consensus::authorities(),
-		initialise_block => |header| super::Executive::initialise_block(&header),
-		apply_extrinsic => |extrinsic| super::Executive::apply_extrinsic(extrinsic),
-		execute_block => |block| super::Executive::execute_block(block),
-		finalise_block => |()| super::Executive::finalise_block(),
-		inherent_extrinsics => |inherent| super::inherent_extrinsics(inherent),
-		validator_count => |()| super::Session::validator_count(),
-		validators => |()| super::Session::validators()
-	);
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use substrate_primitives as primitives;
-	use codec::{Encode, Decode};
-	use substrate_primitives::hexdisplay::HexDisplay;
-	use substrate_serializer as ser;
-	use runtime_primitives::traits::{Digest as DigestT, Header as HeaderT};
-	type Digest = generic::Digest<Log>;
-
-	#[test]
-	fn test_header_serialization() {
-		let header = Header {
-			parent_hash: 5.into(),
-			number: 67,
-			state_root: 3.into(),
-			extrinsics_root: 6.into(),
-			digest: { let mut d = Digest::default(); d.push(Log(vec![1])); d },
-		};
-
-		assert_eq!(ser::to_string_pretty(&header), r#"{
-  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000005",
-  "number": 67,
-  "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000003",
-  "extrinsicsRoot": "0x0000000000000000000000000000000000000000000000000000000000000006",
-  "digest": {
-    "logs": [
-      "0x01"
-    ]
-  }
-}"#);
-
-		let v = header.encode();
-		assert_eq!(Header::decode(&mut &v[..]).unwrap(), header);
-	}
-
-	#[test]
-	fn block_encoding_round_trip() {
-		let mut block = Block {
-			header: Header::new(1, Default::default(), Default::default(), Default::default(), Default::default()),
-			extrinsics: vec![
-				UncheckedExtrinsic::new(
-					generic::Extrinsic {
-						function: Call::Timestamp(timestamp::Call::set(100_000_000)),
-						signed: Default::default(),
-						index: Default::default(),
-					},
-					Default::default(),
-				)
-			],
-		};
-
-		let raw = block.encode();
-		let decoded = Block::decode(&mut &raw[..]).unwrap();
-
-		assert_eq!(block, decoded);
-
-		block.extrinsics.push(UncheckedExtrinsic::new(
-			generic::Extrinsic {
-				function: Call::Staking(staking::Call::stake()),
-				signed: Default::default(),
-				index: 10101,
-			},
-			Default::default(),
-		));
-
-		let raw = block.encode();
-		let decoded = Block::decode(&mut &raw[..]).unwrap();
-
-		assert_eq!(block, decoded);
-	}
-
-	#[test]
-	fn block_encoding_substrate_round_trip() {
-		let mut block = Block {
-			header: Header::new(1, Default::default(), Default::default(), Default::default(), Default::default()),
-			extrinsics: vec![
-				UncheckedExtrinsic::new(
-					generic::Extrinsic {
-						function: Call::Timestamp(timestamp::Call::set(100_000_000)),
-						signed: Default::default(),
-						index: Default::default(),
-					},
-					Default::default(),
-				)
-			],
-		};
-
-		block.extrinsics.push(UncheckedExtrinsic::new(
-			generic::Extrinsic {
-				function: Call::Staking(staking::Call::stake()),
-				signed: Default::default(),
-				index: 10101,
-			},
-			Default::default()
-		));
-
-		let raw = block.encode();
-		let decoded_primitive = ::primitives::Block::decode(&mut &raw[..]).unwrap();
-		let encoded_primitive = decoded_primitive.encode();
-		let decoded = Block::decode(&mut &encoded_primitive[..]).unwrap();
-
-		assert_eq!(block, decoded);
-	}
-
-	#[test]
-	fn serialize_unchecked() {
-		let tx = UncheckedExtrinsic::new(
-			Extrinsic {
-				signed: AccountId::from([1; 32]).into(),
-				index: 999,
-				function: Call::Timestamp(TimestampCall::set(135135)),
-			},
-			runtime_primitives::Ed25519Signature(primitives::hash::H512([0; 64])).into()
-		);
-
-		// 6f000000
-		// ff0101010101010101010101010101010101010101010101010101010101010101
-		// e7030000
-		// 0300
-		// df0f0200
-		// 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-
-		let v = Encode::encode(&tx);
-		assert_eq!(&v[..], &hex!["6f000000ff0101010101010101010101010101010101010101010101010101010101010101e70300000300df0f02000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"][..]);
-		println!("{}", HexDisplay::from(&v));
-		assert_eq!(UncheckedExtrinsic::decode(&mut &v[..]).unwrap(), tx);
-	}
-
-	#[test]
-	fn serialize_checked() {
-		let xt = Extrinsic {
-			signed: AccountId::from(hex!["0d71d1a9cad6f2ab773435a7dec1bac019994d05d1dd5eb3108211dcf25c9d1e"]).into(),
-			index: 0,
-			function: Call::CouncilVoting(council::voting::Call::propose(Box::new(
-				PrivCall::Consensus(consensus::PrivCall::set_code(
-					vec![]
-				))
-			))),
-		};
-		let v = Encode::encode(&xt);
-		assert_eq!(Extrinsic::decode(&mut &v[..]).unwrap(), xt);
-	}
-
-	#[test]
-	fn parachain_calls_are_privcall() {
-		let _register = PrivCall::Parachains(parachains::PrivCall::register_parachain(0.into(), vec![1, 2, 3], vec![]));
-		let _deregister = PrivCall::Parachains(parachains::PrivCall::deregister_parachain(0.into()));
-	}
-}
diff --git a/substrate/polkadot/runtime/src/parachains.rs b/substrate/polkadot/runtime/src/parachains.rs
deleted file mode 100644
index 677b86e847cc825228a3945d21cc08553a673a36..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/src/parachains.rs
+++ /dev/null
@@ -1,380 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Main parachains logic. For now this is just the determination of which validators do what.
-
-use rstd::prelude::*;
-use codec::Decode;
-
-use runtime_primitives::traits::{Hash, BlakeTwo256, Executable, RefInto, MaybeEmpty};
-use primitives::parachain::{Id, Chain, DutyRoster, CandidateReceipt};
-use {system, session};
-
-use substrate_runtime_support::{StorageValue, StorageMap};
-use substrate_runtime_support::dispatch::Result;
-
-#[cfg(any(feature = "std", test))]
-use rstd::marker::PhantomData;
-
-#[cfg(any(feature = "std", test))]
-use {runtime_io, runtime_primitives};
-
-pub trait Trait: system::Trait<Hash = ::primitives::Hash> + session::Trait {
-	/// The position of the set_heads call in the block.
-	const SET_POSITION: u32;
-
-	type PublicAux: RefInto<Self::AccountId> + MaybeEmpty;
-}
-
-decl_module! {
-	/// Parachains module.
-	pub struct Module<T: Trait>;
-	/// Call type for parachains.
-	#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
-	pub enum Call where aux: <T as Trait>::PublicAux {
-		// provide candidate receipts for parachains, in ascending order by id.
-		fn set_heads(aux, heads: Vec<CandidateReceipt>) -> Result = 0;
-	}
-
-	/// Private calls for parachains.
-	#[cfg_attr(feature = "std", derive(Serialize, Deserialize))]
-	pub enum PrivCall {
-		fn register_parachain(id: Id, code: Vec<u8>, initial_head_data: Vec<u8>) -> Result = 0;
-		fn deregister_parachain(id: Id) -> Result = 1;
-	}
-}
-
-decl_storage! {
-	trait Store for Module<T: Trait>;
-	// Vector of all parachain IDs.
-	pub Parachains get(active_parachains): b"para:chains" => default Vec<Id>;
-	// The parachains registered at present.
-	pub Code get(parachain_code): b"para:code" => map [ Id => Vec<u8> ];
-	// The heads of the parachains registered at present. these are kept sorted.
-	pub Heads get(parachain_head): b"para:head" => map [ Id => Vec<u8> ];
-
-	// Did the parachain heads get updated in this block?
-	DidUpdate: b"para:did" => default bool;
-}
-
-impl<T: Trait> Module<T> {
-	/// Calculate the current block's duty roster using system's random seed.
-	pub fn calculate_duty_roster() -> DutyRoster {
-		let parachains = Self::active_parachains();
-		let parachain_count = parachains.len();
-		let validator_count = <session::Module<T>>::validator_count() as usize;
-		let validators_per_parachain = if parachain_count != 0 { (validator_count - 1) / parachain_count } else { 0 };
-
-		let mut roles_val = (0..validator_count).map(|i| match i {
-			i if i < parachain_count * validators_per_parachain => {
-				let idx = i / validators_per_parachain;
-				Chain::Parachain(parachains[idx].clone())
-			}
-			_ => Chain::Relay,
-		}).collect::<Vec<_>>();
-
-		let mut roles_gua = roles_val.clone();
-
-		let mut random_seed = system::Module::<T>::random_seed().to_vec();
-		random_seed.extend(b"validator_role_pairs");
-		let mut seed = BlakeTwo256::hash(&random_seed);
-
-		// shuffle
-		for i in 0..(validator_count - 1) {
-			// 8 bytes of entropy used per cycle, 32 bytes entropy per hash
-			let offset = (i * 8 % 32) as usize;
-
-			// number of roles remaining to select from.
-			let remaining = (validator_count - i) as usize;
-
-			// 4 * 2 32-bit ints per 256-bit seed.
-			let val_index = u32::decode(&mut &seed[offset..offset + 4]).expect("using 4 bytes for a 32-bit quantity") as usize % remaining;
-			let gua_index = u32::decode(&mut &seed[offset + 4..offset + 8]).expect("using 4 bytes for a 32-bit quantity") as usize % remaining;
-
-			if offset == 24 {
-				// into the last 8 bytes - rehash to gather new entropy
-				seed = BlakeTwo256::hash(&seed);
-			}
-
-			// exchange last item with randomly chosen first.
-			roles_val.swap(remaining - 1, val_index);
-			roles_gua.swap(remaining - 1, gua_index);
-		}
-
-		DutyRoster {
-			validator_duty: roles_val,
-			guarantor_duty: roles_gua,
-		}
-	}
-
-	/// Register a parachain with given code.
-	/// Fails if given ID is already used.
-	pub fn register_parachain(id: Id, code: Vec<u8>, initial_head_data: Vec<u8>) -> Result {
-		let mut parachains = Self::active_parachains();
-		match parachains.binary_search(&id) {
-			Ok(_) => fail!("Parachain already exists"),
-			Err(idx) => parachains.insert(idx, id),
-		}
-
-		<Code<T>>::insert(id, code);
-		<Parachains<T>>::put(parachains);
-		<Heads<T>>::insert(id, initial_head_data);
-
-		Ok(())
-	}
-
-	/// Deregister a parachain with given id
-	pub fn deregister_parachain(id: Id) -> Result {
-		let mut parachains = Self::active_parachains();
-		match parachains.binary_search(&id) {
-			Ok(idx) => { parachains.remove(idx); }
-			Err(_) => {}
-		}
-
-		<Code<T>>::remove(id);
-		<Heads<T>>::remove(id);
-		<Parachains<T>>::put(parachains);
-		Ok(())
-	}
-
-	fn set_heads(aux: &<T as Trait>::PublicAux, heads: Vec<CandidateReceipt>) -> Result {
-		ensure!(aux.is_empty(), "set_heads must not be signed");
-		ensure!(!<DidUpdate<T>>::exists(), "Parachain heads must be updated only once in the block");
-		ensure!(
-			<system::Module<T>>::extrinsic_index() == T::SET_POSITION,
-			"Parachain heads update extrinsic must be at position {} in the block"
-//			, T::SET_POSITION
-		);
-
-		let active_parachains = Self::active_parachains();
-		let mut iter = active_parachains.iter();
-
-		// perform this check before writing to storage.
-		for head in &heads {
-			ensure!(
-				iter.find(|&p| p == &head.parachain_index).is_some(),
-				"Submitted candidate for unregistered or out-of-order parachain {}"
-//				, head.parachain_index.into_inner()
-			);
-		}
-
-		for head in heads {
-			let id = head.parachain_index.clone();
-			<Heads<T>>::insert(id, head.head_data.0);
-		}
-
-		<DidUpdate<T>>::put(true);
-
-		Ok(())
-	}
-}
-
-impl<T: Trait> Executable for Module<T> {
-	fn execute() {
-		assert!(<Self as Store>::DidUpdate::take(), "Parachain heads must be updated once in the block");
-	}
-}
-
-/// Parachains module genesis configuration.
-#[cfg(any(feature = "std", test))]
-#[derive(Serialize, Deserialize)]
-#[serde(rename_all = "camelCase")]
-#[serde(deny_unknown_fields)]
-pub struct GenesisConfig<T: Trait> {
-	/// The initial parachains, mapped to code and initial head data
-	pub parachains: Vec<(Id, Vec<u8>, Vec<u8>)>,
-	/// Phantom data.
-	#[serde(skip)]
-	pub phantom: PhantomData<T>,
-}
-
-#[cfg(any(feature = "std", test))]
-impl<T: Trait> Default for GenesisConfig<T> {
-	fn default() -> Self {
-		GenesisConfig {
-			parachains: Vec::new(),
-			phantom: PhantomData,
-		}
-	}
-}
-
-#[cfg(any(feature = "std", test))]
-impl<T: Trait> runtime_primitives::BuildStorage for GenesisConfig<T>
-{
-	fn build_storage(mut self) -> ::std::result::Result<runtime_io::TestExternalities, String> {
-		use std::collections::HashMap;
-		use codec::Encode;
-
-		self.parachains.sort_unstable_by_key(|&(ref id, _, _)| id.clone());
-		self.parachains.dedup_by_key(|&mut (ref id, _, _)| id.clone());
-
-		let only_ids: Vec<_> = self.parachains.iter().map(|&(ref id, _, _)| id).cloned().collect();
-
-		let mut map: HashMap<_, _> = map![
-			Self::hash(<Parachains<T>>::key()).to_vec() => only_ids.encode()
-		];
-
-		for (id, code, genesis) in self.parachains {
-			let code_key = Self::hash(&<Code<T>>::key_for(&id)).to_vec();
-			let head_key = Self::hash(&<Heads<T>>::key_for(&id)).to_vec();
-
-			map.insert(code_key, code.encode());
-			map.insert(head_key, genesis.encode());
-		}
-
-		Ok(map.into())
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use runtime_io::with_externalities;
-	use substrate_primitives::H256;
-	use runtime_primitives::BuildStorage;
-	use runtime_primitives::traits::{HasPublicAux, Identity, BlakeTwo256};
-	use runtime_primitives::testing::{Digest, Header};
-	use {consensus, timestamp};
-
-	#[derive(Clone, Eq, PartialEq)]
-	pub struct Test;
-	impl HasPublicAux for Test {
-		type PublicAux = u64;
-	}
-	impl consensus::Trait for Test {
-		type PublicAux = <Self as HasPublicAux>::PublicAux;
-		type SessionKey = u64;
-	}
-	impl system::Trait for Test {
-		type Index = u64;
-		type BlockNumber = u64;
-		type Hash = H256;
-		type Hashing = BlakeTwo256;
-		type Digest = Digest;
-		type AccountId = u64;
-		type Header = Header;
-	}
-	impl session::Trait for Test {
-		const NOTE_OFFLINE_POSITION: u32 = 1;
-		type ConvertAccountIdToSessionKey = Identity;
-		type OnSessionChange = ();
-	}
-	impl timestamp::Trait for Test {
-		const TIMESTAMP_SET_POSITION: u32 = 0;
-		type Moment = u64;
-	}
-	impl Trait for Test {
-		const SET_POSITION: u32 = 0;
-
-		type PublicAux = <Self as HasPublicAux>::PublicAux;
-	}
-
-	type Parachains = Module<Test>;
-
-	fn new_test_ext(parachains: Vec<(Id, Vec<u8>, Vec<u8>)>) -> runtime_io::TestExternalities {
-		let mut t = system::GenesisConfig::<Test>::default().build_storage().unwrap();
-		t.extend(consensus::GenesisConfig::<Test>{
-			code: vec![],
-			authorities: vec![1, 2, 3],
-		}.build_storage().unwrap());
-		t.extend(session::GenesisConfig::<Test>{
-			session_length: 1000,
-			validators: vec![1, 2, 3, 4, 5, 6, 7, 8],
-			broken_percent_late: 100,
-		}.build_storage().unwrap());
-		t.extend(GenesisConfig::<Test>{
-			parachains: parachains,
-			phantom: PhantomData,
-		}.build_storage().unwrap());
-		t
-	}
-
-	#[test]
-	fn active_parachains_should_work() {
-		let parachains = vec![
-			(5u32.into(), vec![1,2,3], vec![1]),
-			(100u32.into(), vec![4,5,6], vec![2]),
-		];
-
-		with_externalities(&mut new_test_ext(parachains), || {
-			assert_eq!(Parachains::active_parachains(), vec![5u32.into(), 100u32.into()]);
-			assert_eq!(Parachains::parachain_code(&5u32.into()), Some(vec![1,2,3]));
-			assert_eq!(Parachains::parachain_code(&100u32.into()), Some(vec![4,5,6]));
-		});
-	}
-
-	#[test]
-	fn register_deregister() {
-		let parachains = vec![
-			(5u32.into(), vec![1,2,3], vec![1]),
-			(100u32.into(), vec![4,5,6], vec![2,]),
-		];
-
-		with_externalities(&mut new_test_ext(parachains), || {
-			assert_eq!(Parachains::active_parachains(), vec![5u32.into(), 100u32.into()]);
-
-			assert_eq!(Parachains::parachain_code(&5u32.into()), Some(vec![1,2,3]));
-			assert_eq!(Parachains::parachain_code(&100u32.into()), Some(vec![4,5,6]));
-
-			Parachains::register_parachain(99u32.into(), vec![7,8,9], vec![1, 1, 1]).unwrap();
-
-			assert_eq!(Parachains::active_parachains(), vec![5u32.into(), 99u32.into(), 100u32.into()]);
-			assert_eq!(Parachains::parachain_code(&99u32.into()), Some(vec![7,8,9]));
-
-			Parachains::deregister_parachain(5u32.into()).unwrap();
-
-			assert_eq!(Parachains::active_parachains(), vec![99u32.into(), 100u32.into()]);
-			assert_eq!(Parachains::parachain_code(&5u32.into()), None);
-		});
-	}
-
-	#[test]
-	fn duty_roster_works() {
-		let parachains = vec![
-			(0u32.into(), vec![], vec![]),
-			(1u32.into(), vec![], vec![]),
-		];
-
-		with_externalities(&mut new_test_ext(parachains), || {
-			let check_roster = |duty_roster: &DutyRoster| {
-				assert_eq!(duty_roster.validator_duty.len(), 8);
-				assert_eq!(duty_roster.guarantor_duty.len(), 8);
-				for i in (0..2).map(Id::from) {
-					assert_eq!(duty_roster.validator_duty.iter().filter(|&&j| j == Chain::Parachain(i)).count(), 3);
-					assert_eq!(duty_roster.guarantor_duty.iter().filter(|&&j| j == Chain::Parachain(i)).count(), 3);
-				}
-				assert_eq!(duty_roster.validator_duty.iter().filter(|&&j| j == Chain::Relay).count(), 2);
-				assert_eq!(duty_roster.guarantor_duty.iter().filter(|&&j| j == Chain::Relay).count(), 2);
-			};
-
-			system::Module::<Test>::set_random_seed([0u8; 32].into());
-			let duty_roster_0 = Parachains::calculate_duty_roster();
-			check_roster(&duty_roster_0);
-
-			system::Module::<Test>::set_random_seed([1u8; 32].into());
-			let duty_roster_1 = Parachains::calculate_duty_roster();
-			check_roster(&duty_roster_1);
-			assert!(duty_roster_0 != duty_roster_1);
-
-
-			system::Module::<Test>::set_random_seed([2u8; 32].into());
-			let duty_roster_2 = Parachains::calculate_duty_roster();
-			check_roster(&duty_roster_2);
-			assert!(duty_roster_0 != duty_roster_2);
-			assert!(duty_roster_1 != duty_roster_2);
-		});
-	}
-}
diff --git a/substrate/polkadot/runtime/src/utils.rs b/substrate/polkadot/runtime/src/utils.rs
deleted file mode 100644
index acef06092539ff6e6163c46ca74a2e17a5c1d7fb..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/src/utils.rs
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Utils for block interaction.
-
-use rstd::prelude::*;
-use super::{Call, UncheckedExtrinsic, Extrinsic, Staking};
-use runtime_primitives::traits::{Checkable, AuxLookup};
-use timestamp::Call as TimestampCall;
-use parachains::Call as ParachainsCall;
-use session::Call as SessionCall;
-
-/// Produces the list of inherent extrinsics.
-pub fn inherent_extrinsics(data: ::primitives::InherentData) -> Vec<UncheckedExtrinsic> {
-	let make_inherent = |function|	UncheckedExtrinsic::new(
-		Extrinsic {
-			signed: Default::default(),
-			function,
-			index: 0,
-		},
-		Default::default(),
-	);
-
-	let mut inherent = vec![
-		make_inherent(Call::Timestamp(TimestampCall::set(data.timestamp))),
-		make_inherent(Call::Parachains(ParachainsCall::set_heads(data.parachain_heads))),
-	];
-
-	if !data.offline_indices.is_empty() {
-		inherent.push(make_inherent(
-			Call::Session(SessionCall::note_offline(data.offline_indices))
-		));
-	}
-
-	inherent
-}
-
-/// Checks an unchecked extrinsic for validity.
-pub fn check_extrinsic(xt: UncheckedExtrinsic) -> bool {
-	xt.check_with(Staking::lookup).is_ok()
-}
diff --git a/substrate/polkadot/runtime/wasm/Cargo.lock b/substrate/polkadot/runtime/wasm/Cargo.lock
deleted file mode 100644
index 7f6ce977734ebe9d5ad33cfa505bafc6347cf006..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/wasm/Cargo.lock
+++ /dev/null
@@ -1,1256 +0,0 @@
-[[package]]
-name = "aho-corasick"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ansi_term"
-version = "0.10.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "arrayvec"
-version = "0.4.7"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "atty"
-version = "0.2.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.41 (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.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "base58"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "bitflags"
-version = "1.0.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "blake2-rfc"
-version = "0.2.18"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
- "constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "byteorder"
-version = "1.2.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "cc"
-version = "1.0.17"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "cfg-if"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "constant_time_eq"
-version = "0.1.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "crossbeam-deque"
-version = "0.2.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-epoch"
-version = "0.3.1"
-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.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
- "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crossbeam-utils"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "crunchy"
-version = "0.1.6"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "ed25519"
-version = "0.1.0"
-dependencies = [
- "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-primitives 0.1.0",
- "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "elastic-array"
-version = "0.10.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "env_logger"
-version = "0.4.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "environmental"
-version = "0.1.0"
-
-[[package]]
-name = "ethbloom"
-version = "0.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)",
- "ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "fixed-hash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ethcore-bytes"
-version = "0.1.0"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-
-[[package]]
-name = "ethcore-logger"
-version = "1.12.0"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-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.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ethereum-types"
-version = "0.3.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethbloom 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "fixed-hash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "uint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ethereum-types-serialize"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "fixed-hash"
-version = "0.1.3"
-source = "git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm#8dc457899afdaf968ff7f16140b03d1e37b01d71"
-dependencies = [
- "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "fixed-hash"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-hex 1.0.0 (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.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)",
-]
-
-[[package]]
-name = "fuchsia-zircon-sys"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "gcc"
-version = "0.3.54"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "hashdb"
-version = "0.1.1"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-dependencies = [
- "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "heapsize"
-version = "0.4.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "hex-literal"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "hex-literal-impl"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "integer-sqrt"
-version = "0.1.0"
-source = "git+https://github.com/paritytech/integer-sqrt-rs.git#886e9cb983c46498003878afe965d55caa762025"
-
-[[package]]
-name = "keccak-hash"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "keccak-hash"
-version = "0.1.2"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-dependencies = [
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "lazy_static"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "lazy_static"
-version = "1.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "libc"
-version = "0.2.41"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "log"
-version = "0.3.9"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "log"
-version = "0.4.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "memchr"
-version = "2.0.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "memoffset"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "memory_units"
-version = "0.3.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "memorydb"
-version = "0.1.1"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-dependencies = [
- "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "hashdb 0.1.1 (git+https://github.com/paritytech/parity.git)",
- "heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "keccak-hash 0.1.2 (git+https://github.com/paritytech/parity.git)",
- "plain_hasher 0.1.0 (git+https://github.com/paritytech/parity.git)",
- "rlp 0.2.1 (git+https://github.com/paritytech/parity.git)",
-]
-
-[[package]]
-name = "nan-preserving-float"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "nodrop"
-version = "0.1.12"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "num-traits"
-version = "0.2.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "num_cpus"
-version = "1.8.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "owning_ref"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "parity-wasm"
-version = "0.31.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "parking_lot"
-version = "0.4.8"
-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)",
- "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "parking_lot"
-version = "0.5.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)",
- "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "parking_lot_core"
-version = "0.2.14"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "smallvec 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "patricia-trie"
-version = "0.1.0"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-dependencies = [
- "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethcore-bytes 0.1.0 (git+https://github.com/paritytech/parity.git)",
- "ethcore-logger 1.12.0 (git+https://github.com/paritytech/parity.git)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "hashdb 0.1.1 (git+https://github.com/paritytech/parity.git)",
- "keccak-hash 0.1.2 (git+https://github.com/paritytech/parity.git)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "memorydb 0.1.1 (git+https://github.com/paritytech/parity.git)",
- "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rlp 0.2.1 (git+https://github.com/paritytech/parity.git)",
- "triehash 0.1.0 (git+https://github.com/paritytech/parity.git)",
-]
-
-[[package]]
-name = "plain_hasher"
-version = "0.1.0"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-dependencies = [
- "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "polkadot-primitives"
-version = "0.1.0"
-dependencies = [
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-std 0.1.0",
-]
-
-[[package]]
-name = "polkadot-runtime"
-version = "0.1.0"
-dependencies = [
- "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)",
- "polkadot-primitives 0.1.0",
- "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-consensus 0.1.0",
- "substrate-runtime-council 0.1.0",
- "substrate-runtime-democracy 0.1.0",
- "substrate-runtime-executive 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-session 0.1.0",
- "substrate-runtime-staking 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
- "substrate-runtime-timestamp 0.1.0",
- "substrate-runtime-version 0.1.0",
-]
-
-[[package]]
-name = "proc-macro-hack"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "proc-macro-hack-impl"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "proc-macro2"
-version = "0.4.4"
-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)",
-]
-
-[[package]]
-name = "pwasm-alloc"
-version = "0.1.0"
-dependencies = [
- "pwasm-libc 0.1.0",
- "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "pwasm-libc"
-version = "0.1.0"
-
-[[package]]
-name = "quote"
-version = "0.6.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand"
-version = "0.3.22"
-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.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rand"
-version = "0.4.2"
-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.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rayon"
-version = "0.8.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rayon-core"
-version = "1.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "redox_syscall"
-version = "0.1.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "redox_termios"
-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)",
-]
-
-[[package]]
-name = "regex"
-version = "0.2.11"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "memchr 2.0.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.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "regex-syntax"
-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)",
-]
-
-[[package]]
-name = "ring"
-version = "0.12.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)",
- "rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rlp"
-version = "0.2.1"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-dependencies = [
- "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rlp"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "rustc-hex"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "rustc-hex"
-version = "2.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "rustc_version"
-version = "0.2.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "safe-mix"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "scopeguard"
-version = "0.3.3"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "semver"
-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)",
-]
-
-[[package]]
-name = "semver-parser"
-version = "0.7.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "serde"
-version = "1.0.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "serde_derive"
-version = "1.0.64"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "smallvec"
-version = "0.6.4"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "stable_deref_trait"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "substrate-codec"
-version = "0.1.0"
-dependencies = [
- "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "substrate-codec-derive"
-version = "0.1.0"
-dependencies = [
- "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "substrate-keyring"
-version = "0.1.0"
-dependencies = [
- "ed25519 0.1.0",
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "substrate-primitives"
-version = "0.1.0"
-dependencies = [
- "blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)",
- "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "fixed-hash 0.1.3 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)",
- "rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "substrate-runtime-std 0.1.0",
- "twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "uint 0.1.2 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)",
- "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "substrate-runtime-consensus"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-council"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)",
- "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-keyring 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-consensus 0.1.0",
- "substrate-runtime-democracy 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-session 0.1.0",
- "substrate-runtime-staking 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-democracy"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-consensus 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-session 0.1.0",
- "substrate-runtime-staking 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-executive"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-io"
-version = "0.1.0"
-dependencies = [
- "ed25519 0.1.0",
- "environmental 0.1.0",
- "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-state-machine 0.1.0",
- "triehash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "substrate-runtime-primitives"
-version = "0.1.0"
-dependencies = [
- "integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-sandbox"
-version = "0.1.0"
-dependencies = [
- "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-std 0.1.0",
- "wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "substrate-runtime-session"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-keyring 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-consensus 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
- "substrate-runtime-timestamp 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-staking"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-keyring 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-consensus 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-sandbox 0.1.0",
- "substrate-runtime-session 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
- "substrate-runtime-timestamp 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-std"
-version = "0.1.0"
-dependencies = [
- "pwasm-alloc 0.1.0",
- "pwasm-libc 0.1.0",
- "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "substrate-runtime-support"
-version = "0.1.0"
-dependencies = [
- "ed25519 0.1.0",
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-std 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-system"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-timestamp"
-version = "0.1.0"
-dependencies = [
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-primitives 0.1.0",
- "substrate-runtime-consensus 0.1.0",
- "substrate-runtime-io 0.1.0",
- "substrate-runtime-primitives 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
- "substrate-runtime-system 0.1.0",
-]
-
-[[package]]
-name = "substrate-runtime-version"
-version = "0.1.0"
-dependencies = [
- "serde 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)",
- "substrate-codec 0.1.0",
- "substrate-codec-derive 0.1.0",
- "substrate-runtime-std 0.1.0",
- "substrate-runtime-support 0.1.0",
-]
-
-[[package]]
-name = "substrate-state-machine"
-version = "0.1.0"
-dependencies = [
- "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "hashdb 0.1.1 (git+https://github.com/paritytech/parity.git)",
- "hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
- "memorydb 0.1.1 (git+https://github.com/paritytech/parity.git)",
- "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
- "patricia-trie 0.1.0 (git+https://github.com/paritytech/parity.git)",
- "substrate-primitives 0.1.0",
- "triehash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "syn"
-version = "0.14.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "quote 0.6.3 (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 = "termion"
-version = "1.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.41 (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)",
-]
-
-[[package]]
-name = "thread_local"
-version = "0.3.5"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "time"
-version = "0.1.40"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.41 (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.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "tiny-keccak"
-version = "1.4.2"
-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 = "triehash"
-version = "0.1.0"
-source = "git+https://github.com/paritytech/parity.git#dec390a89fe038337399315daf15e628ffbb4d8e"
-dependencies = [
- "elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "keccak-hash 0.1.2 (git+https://github.com/paritytech/parity.git)",
- "rlp 0.2.1 (git+https://github.com/paritytech/parity.git)",
-]
-
-[[package]]
-name = "triehash"
-version = "0.1.2"
-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)",
- "ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "keccak-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "rlp 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "twox-hash"
-version = "1.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "ucd-util"
-version = "0.1.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "uint"
-version = "0.1.2"
-source = "git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm#8dc457899afdaf968ff7f16140b03d1e37b01d71"
-dependencies = [
- "byteorder 1.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)",
- "rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "uint"
-version = "0.2.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
- "heapsize 0.4.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.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "unicode-xid"
-version = "0.1.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "unreachable"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "untrusted"
-version = "0.5.1"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "utf8-ranges"
-version = "1.0.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "void"
-version = "1.0.2"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "wasmi"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "byteorder 1.2.3 (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.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "winapi"
-version = "0.3.4"
-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)",
- "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
-]
-
-[[package]]
-name = "winapi-i686-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[[package]]
-name = "winapi-x86_64-pc-windows-gnu"
-version = "0.4.0"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-
-[metadata]
-"checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4"
-"checksum ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b3568b48b7cefa6b8ce125f9bb4989e52fbcc29ebea88df04cc7c5f12f70455"
-"checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef"
-"checksum atty 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2fc4a1aa4c24c0718a250f0681885c1af91419d242f29eb8f2ab28502d80dbd1"
-"checksum base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83"
-"checksum bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789"
-"checksum blake2-rfc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400"
-"checksum byteorder 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "74c0b906e9446b0a2e4f760cdb3fa4b2c48cdc6db8766a845c54b6ff063fd2e9"
-"checksum cc 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "49ec142f5768efb5b7622aebc3fdbdbb8950a4b9ba996393cb76ef7466e8747d"
-"checksum cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "405216fd8fe65f718daa7102ea808a946b6ce40c742998fbfd3463645552de18"
-"checksum constant_time_eq 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8ff012e225ce166d4422e0e78419d901719760f62ae2b7969ca6b564d1b54a9e"
-"checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3"
-"checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150"
-"checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9"
-"checksum crunchy 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a2f4a431c5c9f662e1200b7c7f02c34e91361150e382089a8f2dec3ba680cbda"
-"checksum elastic-array 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "88d4851b005ef16de812ea9acdb7bece2f0a40dd86c07b85631d7dafa54537bb"
-"checksum env_logger 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3ddf21e73e016298f5cb37d6ef8e8da8e39f91f9ec8b0df44b7deb16a9f8cd5b"
-"checksum ethbloom 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1a93a43ce2e9f09071449da36bfa7a1b20b950ee344b6904ff23de493b03b386"
-"checksum ethcore-bytes 0.1.0 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum ethcore-logger 1.12.0 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum ethereum-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c48729b8aea8aedb12cf4cb2e5cef439fdfe2dda4a89e47eeebd15778ef53b6"
-"checksum ethereum-types-serialize 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4ac59a21a9ce98e188f3dace9eb67a6c4a3c67ec7fbc7218cb827852679dc002"
-"checksum fixed-hash 0.1.3 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "<none>"
-"checksum fixed-hash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18d6fd718fb4396e7a9c93ac59ba7143501467ca7a143c145b5555a571d5576"
-"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 gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb"
-"checksum hashdb 0.1.1 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum heapsize 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1679e6ea370dee694f91f1dc469bf94cf8f52051d147aec3e1f9497c6fc22461"
-"checksum hex-literal 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4da5f0e01bd8a71a224a4eedecaacfcabda388dbb7a80faf04d3514287572d95"
-"checksum hex-literal-impl 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1d340b6514f232f6db1bd16db65302a5278a04fef9ce867cb932e7e5fa21130a"
-"checksum integer-sqrt 0.1.0 (git+https://github.com/paritytech/integer-sqrt-rs.git)" = "<none>"
-"checksum keccak-hash 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b7f51f30d7986536accaec4a6a288008dfb3dbffe8a2863a65292bc395a3ae7"
-"checksum keccak-hash 0.1.2 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73"
-"checksum lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e6412c5e2ad9584b0b8e979393122026cdd6d2a80b933f890dcd694ddbe73739"
-"checksum libc 0.2.41 (registry+https://github.com/rust-lang/crates.io-index)" = "ac8ebf8343a981e2fa97042b14768f02ed3e1d602eac06cae6166df3c8ced206"
-"checksum log 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e19e8d5c34a3e0e2223db8e060f9e8264aeeb5c5fc64a4ee9965c062211c024b"
-"checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2"
-"checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d"
-"checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3"
-"checksum memory_units 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "71d96e3f3c0b6325d8ccd83c33b28acb183edcb6c67938ba104ec546854b0882"
-"checksum memorydb 0.1.1 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum nan-preserving-float 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34d4f00fcc2f4c9efa8cc971db0da9e28290e28e97af47585e48691ef10ff31f"
-"checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2"
-"checksum num-traits 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "775393e285254d2f5004596d69bb8bc1149754570dcc08cf30cabeba67955e28"
-"checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30"
-"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37"
-"checksum parity-wasm 0.31.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e1c91199d14bd5b78ecade323d4a891d094799749c1b9e82d9c590c2e2849a40"
-"checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e"
-"checksum parking_lot 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d4d05f1349491390b1730afba60bb20d55761bef489a954546b58b4b34e1e2ac"
-"checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa"
-"checksum patricia-trie 0.1.0 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum plain_hasher 0.1.0 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum proc-macro-hack 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3ba8d4f9257b85eb6cdf13f055cea3190520aab1409ca2ab43493ea4820c25f0"
-"checksum proc-macro-hack-impl 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d5cb6f960ad471404618e9817c0e5d10b1ae74cfdf01fab89ea0641fe7fb2892"
-"checksum proc-macro2 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1fa93823f53cfd0f5ac117b189aed6cfdfb2cfc0a9d82e956dd7927595ed7d46"
-"checksum quote 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e44651a0dc4cdd99f71c83b561e221f714912d11af1a4dff0631f923d53af035"
-"checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1"
-"checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5"
-"checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8"
-"checksum rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d24ad214285a7729b174ed6d3bcfcb80177807f959d95fafd5bfc5c4f201ac8"
-"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 regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384"
-"checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7"
-"checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c"
-"checksum rlp 0.2.1 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum rlp 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "89db7f8dfdd5eb7ab3ac3ece7a07fd273a680b4b224cb231181280e8996f9f0b"
-"checksum rustc-hex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0ceb8ce7a5e520de349e1fa172baeba4a9e8d5ef06c47471863530bc4972ee1e"
-"checksum rustc-hex 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b03280c2813907a030785570c577fb27d3deec8da4c18566751ade94de0ace"
-"checksum rustc_version 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a54aa04a10c68c1c4eacb4337fd883b435997ede17a9385784b990777686b09a"
-"checksum safe-mix 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7f7bf422d23a88c16d5090d455f182bc99c60af4df6a345c63428acf5129e347"
-"checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27"
-"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.64 (registry+https://github.com/rust-lang/crates.io-index)" = "fba5be06346c5200249c8c8ca4ccba4a09e8747c71c16e420bd359a0db4d8f91"
-"checksum serde_derive 1.0.64 (registry+https://github.com/rust-lang/crates.io-index)" = "79e4620ba6fbe051fc7506fab6f84205823564d55da18d55b695160fb3479cd8"
-"checksum smallvec 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "211a489e65e94b103926d2054ae515a1cdb5d515ea0ef414fee23b7e043ce748"
-"checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b"
-"checksum syn 0.14.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6dfd71b2be5a58ee30a6f8ea355ba8290d397131c00dfa55c3d34e6e13db5101"
-"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096"
-"checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963"
-"checksum time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)" = "d825be0eb33fda1a7e68012d51e9c7f451dc1a69391e7fdc197060bb8c56667b"
-"checksum tiny-keccak 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e9175261fbdb60781fcd388a4d6cc7e14764a2b629a7ad94abb439aed223a44f"
-"checksum triehash 0.1.0 (git+https://github.com/paritytech/parity.git)" = "<none>"
-"checksum triehash 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2033893a813c70e7d8a739ca6c36dc0a7a2c913ec718d7cbf84a3837bbe3c7ce"
-"checksum twox-hash 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "475352206e7a290c5fccc27624a163e8d0d115f7bb60ca18a64fc9ce056d7435"
-"checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d"
-"checksum uint 0.1.2 (git+https://github.com/rphmeier/primitives.git?branch=compile-for-wasm)" = "<none>"
-"checksum uint 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "38051a96565903d81c9a9210ce11076b2218f3b352926baa1f5f6abbdfce8273"
-"checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
-"checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56"
-"checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae"
-"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"
-"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
-"checksum wasmi 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "522fe3fdd44a56f25cd5ddcd8ccdb1cf2e982ceb28fcb00f41d8a018ae5245a8"
-"checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3"
-"checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
-"checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/substrate/polkadot/runtime/wasm/Cargo.toml b/substrate/polkadot/runtime/wasm/Cargo.toml
deleted file mode 100644
index ba21f37d1100796936a3d7f9c07e0abf2ba3ef4c..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/wasm/Cargo.toml
+++ /dev/null
@@ -1,56 +0,0 @@
-[package]
-name = "polkadot-runtime"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[lib]
-crate-type = ["cdylib"]
-
-[dependencies]
-integer-sqrt = { git = "https://github.com/paritytech/integer-sqrt-rs.git", branch = "master" }
-polkadot-primitives = { path = "../../primitives", default-features = false }
-safe-mix = { version = "1.0", default-features = false }
-substrate-codec = { path = "../../../substrate/codec", default-features = false }
-substrate-primitives = { path = "../../../substrate/primitives", default-features = false }
-substrate-runtime-std = { path = "../../../substrate/runtime-std", default-features = false }
-substrate-runtime-io = { path = "../../../substrate/runtime-io", default-features = false }
-substrate-runtime-support = { path = "../../../substrate/runtime-support", default-features = false }
-substrate-runtime-consensus = { path = "../../../substrate/runtime/consensus", default-features = false }
-substrate-runtime-council = { path = "../../../substrate/runtime/council", default-features = false }
-substrate-runtime-democracy = { path = "../../../substrate/runtime/democracy", default-features = false }
-substrate-runtime-executive = { path = "../../../substrate/runtime/executive", default-features = false }
-substrate-runtime-primitives = { path = "../../../substrate/runtime/primitives", default-features = false }
-substrate-runtime-session = { path = "../../../substrate/runtime/session", default-features = false }
-substrate-runtime-staking = { path = "../../../substrate/runtime/staking", default-features = false }
-substrate-runtime-system = { path = "../../../substrate/runtime/system", default-features = false }
-substrate-runtime-timestamp = { path = "../../../substrate/runtime/timestamp", default-features = false }
-substrate-runtime-version = { path = "../../../substrate/runtime/version", default-features = false }
-
-[features]
-default = []
-std = [
-	"polkadot-primitives/std",
-	"safe-mix/std",
-	"substrate-codec/std",
-	"substrate-primitives/std",
-	"substrate-runtime-std/std",
-	"substrate-runtime-io/std",
-	"substrate-runtime-support/std",
-	"substrate-runtime-consensus/std",
-	"substrate-runtime-council/std",
-	"substrate-runtime-democracy/std",
-	"substrate-runtime-executive/std",
-	"substrate-runtime-primitives/std",
-	"substrate-runtime-session/std",
-	"substrate-runtime-staking/std",
-	"substrate-runtime-system/std",
-	"substrate-runtime-timestamp/std",
-	"substrate-runtime-version/std",
-]
-
-[profile.release]
-panic = "abort"
-lto = true
-
-[workspace]
-members = []
diff --git a/substrate/polkadot/runtime/wasm/build.sh b/substrate/polkadot/runtime/wasm/build.sh
deleted file mode 100755
index 88010211f95d6bf69ba9de843cced6131d782ea8..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/wasm/build.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-cargo +nightly build --target=wasm32-unknown-unknown --release
-for i in polkadot_runtime
-do
-	wasm-gc target/wasm32-unknown-unknown/release/$i.wasm target/wasm32-unknown-unknown/release/$i.compact.wasm
-done
diff --git a/substrate/polkadot/runtime/wasm/src b/substrate/polkadot/runtime/wasm/src
deleted file mode 120000
index 5cd551cf2693e4b4f65d7954ec621454c2b20326..0000000000000000000000000000000000000000
--- a/substrate/polkadot/runtime/wasm/src
+++ /dev/null
@@ -1 +0,0 @@
-../src
\ No newline at end of file
diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm
deleted file mode 100644
index 055036f6662de56188b6716239d2c24430d42cb3..0000000000000000000000000000000000000000
Binary files a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm and /dev/null differ
diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm
deleted file mode 100755
index 6bc54e865541bab0dfbc73d912d2c33e44c90886..0000000000000000000000000000000000000000
Binary files a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm and /dev/null differ
diff --git a/substrate/polkadot/service/Cargo.toml b/substrate/polkadot/service/Cargo.toml
deleted file mode 100644
index b0561122e159344dc7ac955928fbd6cee8a8cc27..0000000000000000000000000000000000000000
--- a/substrate/polkadot/service/Cargo.toml
+++ /dev/null
@@ -1,29 +0,0 @@
-[package]
-name = "polkadot-service"
-version = "0.3.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-parking_lot = "0.4"
-error-chain = "0.12"
-lazy_static = "1.0"
-log = "0.3"
-slog = "^2"
-tokio = "0.1.7"
-hex-literal = "0.1"
-ed25519 = { path = "../../substrate/ed25519" }
-polkadot-availability-store = { path = "../availability-store" }
-polkadot-primitives = { path = "../primitives" }
-polkadot-runtime = { path = "../runtime" }
-polkadot-consensus = { path = "../consensus" }
-polkadot-executor = { path = "../executor" }
-polkadot-api = { path = "../api" }
-polkadot-transaction-pool = { path = "../transaction-pool" }
-polkadot-network = { path = "../network" }
-substrate-runtime-io = { path = "../../substrate/runtime-io" }
-substrate-primitives = { path = "../../substrate/primitives" }
-substrate-network = { path = "../../substrate/network" }
-substrate-client = { path = "../../substrate/client" }
-substrate-codec = { path = "../../substrate/codec" }
-substrate-service = { path = "../../substrate/service" }
-substrate-telemetry = { path = "../../substrate/telemetry" }
diff --git a/substrate/polkadot/service/README.adoc b/substrate/polkadot/service/README.adoc
deleted file mode 100644
index 3de386712855d0335c90b8c3409fa4fa927f5a9d..0000000000000000000000000000000000000000
--- a/substrate/polkadot/service/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Service
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/service/res/krummelanke.json b/substrate/polkadot/service/res/krummelanke.json
deleted file mode 100644
index 0e76ea124b98f7e5b6d5310675642dc24f6f82af..0000000000000000000000000000000000000000
--- a/substrate/polkadot/service/res/krummelanke.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-"name": "Krumme Lanke",
-"id": "krummelanke",
-"genesis": {"raw": {
-	"0x9768f3cbdd14c1a63474dfbdbe052f42": "0x80f4030000000000",
-	"0x3b700687fecdff5ec1c4a5b714521eb6": "0x0000000000000000",
-	"0xa059ae3b3ef725721e97452642803b61": "0x0c00000000000000",
-	"0x81c1e7165a6371a30eda241a30ea26dd": "0x6400000000000000",
-	"0x45e71d57a2e3a4eace16dbc9286652e3": "0x00000000",
-	"0x1d72be21946c0b245c026b7be8256cc5": "0x00000000",
-	"0xd68ee884e4baac617d9823d543ab9295": "0x0000000000000010",
-	"0x1d007e138cb61e2524a67b15ec01d8cb": "0x0000000000000010",
-	"0xbfde7c86a8efd60ee5db2de6446703d5": "0xc04e000000000000",
-	"0x3a617574683a6c656e": "0x04000000",
-	"0xb54b186fe8782c2a03f2fd15f95c26bf": "0x00000000",
-	"0x9dd24013e492bdbb3544fba06734baf7": "0xd002000000000000",
-	"0xd52c584b1e542130e5b277f1af7b7714": "0x00000000",
-	"0x3a617574683a03000000": "0x8101764f45778d4980dadaceee6e8af2517d3ab91ac9bec9cd1714fa5994081c",
-	"0x916dbd78366f27a9597bd4c831e7914d": "0x00e9070000000000",
-	"0xf37d2c26c6953b18878dbc1dc65edbc0": "0x1800000000000000",
-	"0x8d62e0fbc08e8694f8991f88d763c5fb": "0x5a00000000000000",
-	"0xa659ecb253960cfd890e08809104b815": "0x809d000000000000",
-	"0x3a617574683a00000000": "0x82c39b31a2b79a90f8e66e7a77fdb85a4ed5517f2ae39f6a80565e8ecae85cf5",
-	"0x3a617574683a02000000": "0x063d7787ebca768b7445dfebe7d62cbb1625ff4dba288ea34488da266dd6dca5",
-	"0xe885ffcc2245c8b7d128685cac6b1a0b": "0x0100000000000000",
-	"0x94b01408fc662bcf2e97df23ce6d67e2": "0x0100000000000000",
-	"0x6cac40e934558080fbf29c55c113b461": "0x0000000000000000",
-	"0x8379e35e0cd953085e0404b9223c0cb0": "0xc04e000000000000",
-	"0x5a3dcf1edb28ea65a038d1eef6767380": "0x003b010000000000",
-	"0x7a5bafa684003bc748abe89bfbd20f76": "0xe803000000000000",
-	"0x3d5680071e92ff27a2914bba661e5d83": "0x400b000000000000",
-	"0x274351e20682cb2ed212b6eab04ef89f": "0x00000000",
-	"0x3a617574683a01000000": "0x4de37a07567ebcbf8c64568428a835269a566723687058e017b6d69db00a77e7",
-	"0x482b5d7b62ccccac45d55bd43c767266": "0x6400000000000000",
-	"0x35b8ced31f34a951bc3b56db2f425c51": "0x00000000",
-	"0x98b9e95963cac608a3d0d537fbeaf5c2": "0x0400000082c39b31a2b79a90f8e66e7a77fdb85a4ed5517f2ae39f6a80565e8ecae85cf54de37a07567ebcbf8c64568428a835269a566723687058e017b6d69db00a77e7063d7787ebca768b7445dfebe7d62cbb1625ff4dba288ea34488da266dd6dca58101764f45778d4980dadaceee6e8af2517d3ab91ac9bec9cd1714fa5994081c",
-	"0xce83497694648564e47482d0dc444564": "0x18000000",
-	"0xa0c2154e69bce912f28e890561fcb95c": "0x0400000082c39b31a2b79a90f8e66e7a77fdb85a4ed5517f2ae39f6a80565e8ecae85cf54de37a07567ebcbf8c64568428a835269a566723687058e017b6d69db00a77e7063d7787ebca768b7445dfebe7d62cbb1625ff4dba288ea34488da266dd6dca58101764f45778d4980dadaceee6e8af2517d3ab91ac9bec9cd1714fa5994081c",
-	"0x9b7ecc8eb0fade7c91d94b8715fc9ee1": "0xe803000000000000",
-	"0x3a636f6465": "0x0061736d010000000197011760027f7f0060057f7f7f7f7f017f60017f017f60037f7f7f017f60017f0060000060037f7f7f0060047f7f7f7f006000017e60027f7f017f60027f7e0060037e7f7f0060017f017e600a7f7f7f7f7f7f7f7f7f7f0060017e0060067f7f7f7f7f7f0060047f7f7f7f017f60047f7f7f7f017e60067f7f7f7f7f7f017f60057f7f7f7f7f0060027f7f017e60027f7e017f60037f7f7e0002f1031603656e76146578745f6765745f73746f726167655f696e746f000103656e760a6578745f6d616c6c6f63000203656e76086578745f66726565000403656e760c6578745f74776f785f313238000603656e760f6578745f7365745f73746f72616765000703656e76116578745f636c6561725f73746f72616765000003656e760a6578745f6d656d636d70000303656e76186578745f656e756d6572617465645f747269655f726f6f74000703656e760e6578745f7072696e745f75746638000003656e760d6578745f7072696e745f6e756d000e03656e760a6578745f6d656d637079000303656e760b6578745f6d656d6d6f7665000303656e760a6578745f6d656d736574000303656e76166578745f73616e64626f785f6d656d6f72795f6e6577000903656e76176578745f73616e64626f785f696e7374616e7469617465001203656e76126578745f73616e64626f785f696e766f6b65001003656e76166578745f73616e64626f785f6d656d6f72795f676574001003656e76166578745f73616e64626f785f6d656d6f72795f736574001003656e760e6578745f626c616b65325f323536000603656e760d6578745f7072696e745f686578000003656e76106578745f73746f726167655f726f6f74000403656e76126578745f656432353531395f766572696679001003d001ce010003040505050500030000020404050400060000060505000804040900000505040004030004060a040b0005000c0c00040405060404060d0504050002040400050505050505050505050505050505050505040504050405050405040505040504050405040504050405040506060000060007070f070f0710070707071107130906000409060000040500140014061404140a06041414140002060a15000000000400000004040000040c000405070a1400000000000413060706160704140616060000060000000000000000090405017001161605030100110609017f0141d0c3c0000b07a8010b066d656d6f7279020011727573745f626567696e5f756e77696e64004d066d616c6c6f630052046672656500530b617574686f72697469657300a10110696e697469616c6973655f626c6f636b00a3010f6170706c795f65787472696e73696300a5010d657865637574655f626c6f636b00a7010e66696e616c6973655f626c6f636b00ab010f76616c696461746f725f636f756e7400ac010a76616c696461746f727300ad010930010041010b158f019001910192019301cc01cd01ce01c601cf01d001d101c701d30195019b01d4019401d501d6019c010abbe40cce01ea0403067f017e057f230041106b220224002002410036020020012001280208220341002001280200220420012802042205200241042003100022032003417f461b2203410420034104491b6a22063602080240024002400240200341034d0d0020022802002207ad420c7e2208422088a70d022008a72203417f4c0d01024002402003450d002003100122090d010c050b410421090b20022007360204200220093602002002410036020802402007450d00200141086a210a4100210b4100210c03402002410036020c200a4100200420052002410c6a41042006100022012001417f461b2201410420014104491b20066a2206360200024002400240200141034d0d00200228020c2201417f4c0d01024002402001450d00200110012203450d0a20034100200110171a0c010b410121030b200a20014100200420052003200120061000220d200d417f461b220d200d20014b1b20066a220636020002402001200d4b0d002003450d01200c41016a210c2001ad22084220862008842108200b2002280204470d0320021018200241086a280200210b200228020021090c030b200310020b200228020021060240200b450d00200b410c6c21032006210103400240200141046a280200450d00200128020010020b2001410c6a2101200341746a22030d000b0b2002280204450d04200610020c040b1019000b2009200b410c6c6a2201200837020420012003360200200241086a200b41016a220b360200200c2007490d000b200228020021090b2009450d002000200229020437020420002009360200200241106a24000f0b20004100360200200241106a24000f0b101a000b101b000b101c000b0a00200020012002100c0b810101057f410421010240024002400240200041046a2802002202450d00200241186c2201417f4c0d0320002802002103200110012204450d022004200320012002410c6c2205200520014b1b101e1a20031002200241017421010c010b413010012204450d010b20002004360200200041046a20013602000f0b101c000b1073000b05001041000b05001041000b05001041000b0500104e000bc11105097f037e017f017e027f230041a0026b220224002001280200210320024180026a20012802042204412020044120491b22056a41004100412020056b2005411f4b1b10171a20024180026a20032005101e1a2001200420056b22063602042001200320056a22053602000240024002400240024002400240024002402004411f4d0d00200241e0016a41186a220420024180026a41186a2203290300370300200241e0016a41106a220720024180026a41106a2208290300370300200241e0016a41086a220920024180026a41086a220a29030037030020022002290380023703e00120032004290300220b37030020082007290300220c370300200a2009290300220d370300200241c0006a41086a2204200d370300200241c0006a41106a2203200c370300200241c0006a41186a2207200b370300200220022903e001220b3703402002200b37038002200241206a41186a2007290300370300200241206a41106a2003290300370300200241206a41086a200429030037030020022002290340370320200242003703800220024180026a20052006410820064108491b2204101e1a200141046a2207200620046b22033602002001200520046a2204360200200641074d0d01200229038002210c20024180026a2003412020034120491b22056a41004100412020056b2005411f4b1b10171a20024180026a20042005101e1a2007200320056b22063602002001200420056a22043602002003411f4d0d02200241e0016a41186a220320024180026a41186a2207290300370300200241e0016a41106a220820024180026a41106a2209290300370300200241e0016a41086a220a20024180026a41086a220e29030037030020022002290380023703e00120072003290300220b37030020092008290300220d370300200e200a290300220f37030020024180016a41086a2205200f37030020024180016a41106a2210200d37030020024180016a41186a2211200b370300200220022903e001220b370380012002200b37038002200241e0006a41186a2011290300370300200241e0006a41106a2010290300370300200241e0006a41086a2005290300370300200220022903800137036020024180026a2006412020064120491b22056a41004100412020056b2005411f4b1b10171a20024180026a20042005101e1a200141046a2211200620056b22103602002001200420056a22053602002006411f4d0d032003200729030037030020082009290300370300200a200e29030037030020022002290380023703e00120072003290300220b37030020092008290300220d370300200e200a290300220f370300200241c0016a41086a2204200f370300200241c0016a41106a2203200d370300200241c0016a41186a2206200b370300200220022903e001220b3703c0012002200b37038002200241a0016a41186a2006290300370300200241a0016a41106a2003290300370300200241a0016a41086a2004290300370300200220022903c0013703a001200241003602800220024180026a20052010410420104104491b2204101e1a2011201020046b3602002001200520046a360200201041034d0d062002280280022208ad420c7e220b422088a70d08200ba72205417f4c0d072005450d042005100122070d05101c000b20024180026a41186a200241e0016a41186a29000037030020024180026a41106a200241e0016a41106a29000037030020024180026a41086a200241e0016a41086a290000370300200220022900e0013703800220004100360208200241a0026a24000f0b20004100360208200241a0026a24000f0b20024180026a41186a200241e0016a41186a29000037030020024180026a41106a200241e0016a41106a29000037030020024180026a41086a200241e0016a41086a290000370300200220022900e0013703800220004100360208200241a0026a24000f0b2007200329000037030020092008290000370300200e200a290000370300200220022900e0013703800220004100360208200241a0026a24000f0b410421070b200220083602e401200220073602e00141002105200241003602e80102402008450d00200241e8016a210941002104034020024180026a2001101f024002402002280280022203450d00200441016a2104200229028402210b200520022802e401470d01200241e0016a10182009280200210520022802e00121070c010b20022802e001210402402005450d002005410c6c21052004210103400240200141046a280200450d00200128020010020b2001410c6a2101200541746a22050d000b0b20022802e401450d03200410020c030b20072005410c6c6a2206200b370204200620033602002009200541016a220536020020042008490d000b20022802e00121070b2007450d0020022902e401210b20024180026a41186a2201200241206a41186a29030037030020024180026a41106a2205200241206a41106a29030037030020024180026a41086a2204200241206a41086a290300370300200241e0016a41086a2203200241e0006a41086a290300370300200241e0016a41106a2206200241e0006a41106a290300370300200241e0016a41186a2208200241e0006a41186a290300370300200241086a2209200241a0016a41086a290300370300200241106a220a200241a0016a41106a290300370300200241186a220e200241a0016a41186a2903003703002002200229032037038002200220022903603703e001200220022903a001370300200020073602082000200c3703002000200b37020c200041146a2002290380023702002000411c6a2004290300370200200041246a20052903003702002000412c6a2001290300370200200041346a20022903e0013702002000413c6a2003290300370200200041c4006a2006290300370200200041cc006a2008290300370200200041ec006a200e290300370200200041e4006a200a290300370200200041dc006a2009290300370200200041d4006a2002290300370200200241a0026a24000f0b20004100360208200241a0026a24000f0b101a000b101b000b0a00200020012002100a0b880201067f230041106b220224002002410036020c2002410c6a2001280200220320012802042204410420044104491b2205101e1a2001200420056b22063602042001200320056a220536020002400240024002400240200441034d0d00200228020c2204417f4c0d032004450d01200410012207450d0420074100200410171a0c020b20004100360200200241106a24000f0b410121070b200720052006200420062004491b2203101e2107200141046a200620036b3602002001200520036a3602000240200620044f0d002000410036020020071002200241106a24000f0b2000200436020420002007360200200041086a2004360200200241106a24000f0b1019000b101c000ba6c80107097f047e047f027e257f057e077f230041f0126b2202240020012001280200200128020422034104200341044922041b22056a22063602002001200320056b2203360204024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020040d00200241d8096a2003412020034120491b22046a41004100412020046b2004411f4b1b10171a200241d8096a20062004101e1a200141046a200320046b22053602002001200620046a22043602002003411f4d0d01200241086a41186a2203200241d8096a41186a2206290300370300200241086a41106a2207200241d8096a41106a2208290300370300200241086a41086a2209200241d8096a41086a220a290300370300200220022903d80937030820062003290300220b37030020082007290300220c370300200a2009290300220d370300200241e0076a41086a2203200d370300200241e0076a41106a2206200c370300200241e0076a41186a2207200b37030020022002290308220b3703e0072002200b3703d809200241c0076a41186a2007290300370300200241c0076a41106a2006290300370300200241c0076a41086a2003290300370300200220022903e0073703c00720024200370308200241086a200420054108200541084922061b2203101e1a200141046a2207200520036b22053602002001200420036a220336020020060d022002290308210e200241003a0008200241086a200320054100472204101e1a2007200520046b220f3602002001200320046a22043602002005450d184107210320022d0008221041074b0d37024020100e08000507083b090406000b200241003a0008200241086a2004200f4100472205101e1a200141046a2208200f20056b22063602002001200420056a2207360200410321094200210d20022d00084108744100200f1b2005724181fe03714101470d35200241f8096a2006412020064120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20072004101e1a2008200620046b22053602002001200720046a22043602002006411f4d0d0c200241086a41186a2206200241f8096a41186a2207290300370300200241086a41106a2208200241f8096a41106a220a290300370300200241086a41086a2211200241f8096a41086a2212290300370300200220022903f80937030820072006290300220b370300200a2008290300220c370300201220112903002213370300200241d8116a41086a22062013370300200241d8116a41106a2207200c370300200241d8116a41186a2208200b37030020022002290308220b3703d8112002200b3703f80920024198106a41186a200829030037030020024198106a41106a200729030037030020024198106a41086a2006290300370300200220022903d8113703981020024200370308200241086a200420054108200541084922071b2206101e1a200141046a2208200520066b22053602002001200420066a220636020020070d332002290308210b200241f8096a2005412020054120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20062004101e1a2008200520046b22073602002001200620046a22043602002005411f4d0d20200241086a41186a2205200241f8096a41186a2206290300370300200241086a41106a2208200241f8096a41106a220a290300370300200241086a41086a2211200241f8096a41086a2212290300370300200220022903f80937030820062005290300220c370300200a20082903002213370300201220112903002214370300200241d8116a41086a22052014370300200241d8116a41106a22062013370300200241d8116a41186a2208200c37030020022002290308220c3703d8112002200c3703f809200241b8106a41186a2008290300370300200241b8106a41106a2006290300370300200241b8106a41086a2005290300370300200220022903d8113703b810200241003a0008200241086a200420074100472205101e1a200141046a200720056b22063602002001200420056a22043602002007450d3341014102410320022d000822054112461b20054111461b22054101460d2b20054103460d3320024100360208200241086a20042006410420064104491b2205101e1a200141046a2208200620056b22073602002001200420056a2205360200200641034d0d3320022802082115200241f8096a2007412020074120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20052004101e1a2008200720046b22063602002001200520046a22083602002007411f4d0d2a200241086a41186a2216200241f8096a41186a2207290300370300200241086a41106a2217200241f8096a41106a2218290300370300200241086a41086a2219200241f8096a41086a221a290300370300200220022903f80937030820182017290300370300201a20192903003703002007201629030037030020024198126a41086a2204200241870a6a221b280000360200200220022903083703f809200220022900ff093703981220072d0000210520022800fb09211c20022d008b0a211d20022d008c0a211e20022f008d0a210a20022d008f0a211120022f00910a210f20022d00930a211220022d00940a211f20022f00950a212020022d00970a211020022f01f809212120022d00fa092122200241d8096a41086a200428020036020020022002290398123703d809200241f8096a200641c000200641c000491b22046a4100410041c00020046b2004413f4b1b10171a200241f8096a20082004101e1a200141046a2223200620046b22243602002001200820046a22253602002006413f4d0d29200241086a41386a2204200241f8096a41386a2206290300370300200241086a41306a2208200241f8096a41306a2226290300370300200241086a41286a2227200241f8096a41286a2228290300370300200241086a41206a2229200241f8096a41206a222a29030037030020162007290300370300201720182903003703002019201a290300370300200220022903f80937030820182017290300370300201a201929030037030020072016290300370300202a202929030037030020282027290300370300202620082903003703002006200429030037030020024198116a41086a2204201b29000037030020024198116a41106a22062002418f0a6a29000037030020024198116a41186a2207200241f8096a411f6a29000037030020024198116a41206a22082002419f0a6a29000037030020024198116a41286a2216200241a70a6a29000037030020024198116a41306a2217200241af0a6a29000037030020024198116a41386a2218200241f8096a413f6a2d00003a0000200220022903083703f809200220022900ff093703981120023502f809210c20023201fc09211320023100fe092114200241d8106a41086a2004290300370300200241d8106a41106a2006290300370300200241d8106a41186a2007290300370300200241d8106a41206a2008290300370300200241d8106a41286a2016290300370300200241d8106a41306a2017290300370300200241d8106a41386a20182d00003a000020022002290398113703d81020022f01e209211620022d00e109210820022d00e009211920022f01de09211720022d00dd09210720022d00dc09211820022802d809212b200241f8096a2024412020244120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20252004101e1a2023202420046b22063602002001202520046a222c3602002024411f4d0d28200241086a41186a222d200241f8096a41186a222e290300370300200241086a41106a222f200241f8096a41106a2230290300370300200241086a41086a2231200241f8096a41086a2232290300370300200220022903f8093703082030202f29030037030020322031290300370300202e202d290300370300200241b8126a41086a2204200241870a6a280000360200200220022903083703f809200220022900ff093703b812202e2d0000212620022800fb09211a20022d008b0a212420022d008c0a212520022f008d0a211b20022d008f0a212320022f00910a212720022d00930a212820022d00940a212920022f00950a212a20022d00970a213320022f01f809213420022d00fa092135200241d8096a41086a22362004280200360200200220022903b8123703d809200241f8096a200641c000200641c000491b22046a4100410041c00020046b2004413f4b1b10171a200241f8096a202c2004101e1a200141046a200620046b3602002001202c20046a3602002006413f4d0d2720212022411074722137200c201320144210868442208684210c20342035411074722106200241086a41386a2204200241f8096a41386a2221290300370300200241086a41306a2222200241f8096a41306a222c290300370300200241086a41286a2234200241f8096a41286a2235290300370300200241086a41206a2238200241f8096a41206a2239290300370300202d202e290300370300202f203029030037030020312032290300370300200220022903f809370308202120042903002213370300202c2022290300221437030020352034290300223a37030020392038290300223b370300202e202d290300223c3703002030202f290300223d37030020322031290300223e370300200241d8116a41086a223f203e370300200241d8116a41106a2240203d370300200241d8116a41186a2241203c370300200241d8116a41206a2242203b370300200241d8116a41286a2243203a370300200241d8116a41306a22442014370300200241d8116a41386a224520133703002002200229030822133703d811200220133703f809200241e0126a41086a20362802003602002031203f290300370300202f2040290300370300202d204129030037030020382042290300370300203420432903003703002022204429030037030020042045290300370300200220022903d8093703e012200220022903d8113703082021200241d8106a41386a2d00003a0000202c200241d8106a41306a2903003703002035200241d8106a41286a2903003703002039200241d8106a41206a290300370300202e200241d8106a41186a2903003703002030200241d8106a41106a2903003703002032200241d8106a41086a290300370300200220022903d8103703f809410121040c2c0b200041073a0008200241f0126a24000f0b200241d8096a41186a200241086a41186a290000370300200241d8096a41106a200241086a41106a290000370300200241d8096a41086a200241086a41086a290000370300200220022900083703d8090b410721040c380b200241003a0008200241086a2004200f4100472206101e1a200141046a200f20066b22053602002001200420066a2206360200200f450d3320022d0008220441044b0d33024020040e050019161714000b20024100360208200241086a20062005410420054104491b2207101e1a200141046a200520076b22043602002001200620076a2206360200200541034d0d332002280208220a417f4c0d22200a450d20200a100122110d21101c000b200241003a0008200241086a2004200f4100472205101e1a200141046a2208200f20056b22063602002001200420056a220736020020022d00084108744100200f1b2005724181fe03714101470d05200241f8096a20064120200641204922051b22046a41004100412020046b2004411f4b1b10171a200241f8096a20072004101e1a2008200620046b3602002001200720046a36020020050d04200241086a41186a2205200241f8096a41186a2204290300370300200241086a41106a2206200241f8096a41106a2207290300370300200241086a41086a2208200241f8096a41086a2209290300370300200220022903f809370308200720062903003703002009200829030037030020042005290300370300200241d8116a41086a2209200241870a6a280000360200200220022903083703f809200220022900ff093703d81120042d0000211120022800fb09210520022d008b0a211220022d008c0a211d20022f008d0a211620022d008f0a211720022f00910a210620022d00930a210720022d00940a211820022f00950a210a20022d00970a210820022f01f809210420022d00fa092119200241d8096a41086a22152009280200360200200220022903d8113703d809200241b00e6a41086a2015280200360200200220022903d8093703b00e20042019411074722104410121090c060b200241003a0008200241086a2004200f4100472205101e1a200141046a200f20056b22063602002001200420056a2204360200200f450d3120022d00082205450d0a20054101460d0720054102470d31200241f8096a2006412020064120491b22056a41004100412020056b2005411f4b1b10171a200241f8096a20042005101e1a200141046a200620056b3602002001200420056a3602002006411f4d0d18200241086a41186a2204200241f8096a41186a2203290300370300200241086a41106a2205200241f8096a41106a2206290300370300200241086a41086a2207200241f8096a41086a2208290300370300200220022903f809370308200620052903003703002008200729030037030020032004290300370300200241d8116a41086a2205200241870a6a280000360200200220022903083703f809200220022900ff093703d81120032d0000210720022800fb09210420022d008b0a212b20022d008c0a212020022f008d0a211f20022d008f0a211820022f00910a211720022d00930a211920022d00940a210820022f00950a211620022d00970a211d20022f01f809210320022d00fa092106200241d8096a41086a2005280200360200200220022903d8113703d8092003200641107472210520022902dc09210d20022802d809210f4103211c0c0b0b200241003a0008200241086a2004200f4100472205101e1a200141046a200f20056b22063602002001200420056a2205360200200f450d3020022d00082204450d0b20044101460d0720044102470d33410321060c080b200241003a0008200241086a2004200f4100472205101e1a200141046a2207200f20056b22063602002001200420056a220436020020022d00084108744100200f1b2005724181fe03714101470d2f20024200370308200241086a20042006410820064108491b2203101e1a2007200620036b3602002001200420036a36020041072103200641074d0d2f2002290308210d20024198096a41086a200241d8116a41086a29030037030020024198096a41106a200241d8116a41106a29030037030020024198096a41186a200241d8116a41186a29030037030020024198096a41206a200241d8116a41206a29030037030020024198096a41286a200241d8116a41286a29030037030020024198096a41306a200241d8116a41306a29030037030020024198096a41386a200241d8116a41386a2d00003a0000200220022f0198113b01d609200220022903d8113703980920024188096a41086a200241800b6a41086a280200360200200241c8086a41086a200241086a41086a290000370300200241c8086a41106a200241086a41106a290000370300200241c8086a41186a200241086a41186a290000370300200241c8086a41206a200241086a41206a290000370300200241c8086a41286a200241086a41286a290000370300200241c8086a41306a200241086a41306a290000370300200241c8086a41386a200241086a41386a290000370300200220022903800b37038809200220022900083703c808200241c4086a41026a200241f8096a41026a2d00003a0000200241a0086a41186a200241b00e6a41186a290300370300200241a0086a41106a200241b00e6a41106a290300370300200241a0086a41086a200241b00e6a41086a29030037030020024180086a41186a200241d80c6a41186a29030037030020024180086a41106a200241d80c6a41106a29030037030020024180086a41086a200241d80c6a41086a290300370300200220022f00f8093b01c408200220022903b00e3703a008200220022903d80c37038008410321034201210b0c0e0b200241003a0008200241086a2004200f4100472205101e1a200141046a200f20056b22063602002001200420056a2204360200200f450d2e20022d00082205450d0b20054101460d0a20054102470d2e20024100360208200241086a20042006410420064104491b2205101e1a200141046a2208200620056b22073602002001200420056a2205360200200641034d0d2e20022802082104200241003a0008200241086a200520074100472206101e1a2008200720066b3602002001200520066a3602002007450d2e2002310008420183210b410321030c0c0b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090b410221090b200241870a6a200241b00e6a41086a280200360000200220053600fb09200220123a008b0a2002201d3a008c0a200220163b008d0a200220173a008f0a200220113a00900a200220063b00910a200220073a00930a200220183a00940a2002200a3b00950a200220083a00970a200220022903b00e3700ff09200220043b01f809200220044110763a00fa0920094102460d2b200220022f01f8093b01d609200241940a6a2f0100211720022901fe09210b20022901860a210d200228018e0a212b20024198096a41386a200241d8116a41386a2d00003a000020024198096a41306a200241d8116a41306a29010037030020024198096a41286a200241d8116a41286a29010037030020024198096a41206a200241d8116a41206a29010037030020024198096a41186a200241d8116a41186a29010037030020024198096a41106a200241d8116a41106a29010037030020024198096a41086a200241d8116a41086a29010037030020024188096a41086a200241800b6a41086a280100360200200220022901d81137039809200220022901800b37038809200241c8086a41386a200241086a41386a290000370300200241c8086a41306a200241086a41306a290000370300200241c8086a41286a200241086a41286a290000370300200241c8086a41206a200241086a41206a290000370300200241c8086a41186a200241086a41186a290000370300200241c8086a41106a200241086a41106a290000370300200241c8086a41086a200241086a41086a290000370300200241c4086a41026a200241f8096a41026a2d00003a0000200220022900083703c808200220022f00f8093b01c408200241a0086a41186a200241b00e6a41186a290100370300200241a0086a41106a200241b00e6a41106a290100370300200241a0086a41086a200241b00e6a41086a29010037030020024180086a41186a200241d80c6a41186a29010037030020024180086a41106a200241d80c6a41106a29010037030020024180086a41086a200241d80c6a41086a290100370300200220022901b00e3703a008200220022901d80c37038008202b411076211f202b41087621202004418080fc0771411076211c20064180fe03714108762118200a4180fe03714108762119410121030c2e0b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c260b200241f8096a2006412020064120491b22056a41004100412020056b2005411f4b1b10171a200241f8096a20042005101e1a200141046a220a200620056b22093602002001200420056a22053602002006411f4d0d0f200241086a41186a2206200241f8096a41186a2204290300370300200241086a41106a2207200241f8096a41106a2208290300370300200241086a41086a2211200241f8096a41086a2212290300370300200220022903f809370308200820072903003703002012201129030037030020042006290300370300200241d8116a41086a2206200241870a6a280000360200200220022903083703f809200220022900ff093703d81120042d0000210720022800fb09210420022d008b0a212b20022d008c0a212020022f008d0a211f20022d008f0a211820022f00910a211720022d00930a211920022d00940a210820022f00950a211620022d00970a211d20022f01f809211120022d00fa092112200241d8096a41086a2006280200360200200220022903d8113703d809200241003a0008200241086a200520094100472206101e1a200a200920066b3602002001200520066a3602002009450d292011201241107472210520022d0008410171211e20022902dc09210d20022802d809210f4102211c0c030b410221060b0c220b4101211c200110212204450d290b20024198096a41086a200241d8116a41086a29030037030020024198096a41106a200241d8116a41106a29030037030020024198096a41186a200241d8116a41186a29030037030020024198096a41206a200241d8116a41206a29030037030020024198096a41286a200241d8116a41286a29030037030020024198096a41306a200241d8116a41306a29030037030020024198096a41386a200241d8116a41386a2d00003a0000200220022f0198113b01d609200220022903d8113703980920024188096a41086a200241800b6a41086a280200360200200241c8086a41086a200241086a41086a290000370300200241c8086a41106a200241086a41106a290000370300200241c8086a41186a200241086a41186a290000370300200241c8086a41206a200241086a41206a290000370300200241c8086a41286a200241086a41286a290000370300200241c8086a41306a200241086a41306a290000370300200241c8086a41386a200241086a41386a290000370300200220022903800b37038809200220022900083703c808200241c4086a41026a200241f8096a41026a2d00003a0000200241a0086a41186a200241b00e6a41186a290300370300200241a0086a41106a200241b00e6a41106a290300370300200241a0086a41086a200241b00e6a41086a29030037030020024180086a41186a200241d80c6a41186a29030037030020024180086a41106a200241d80c6a41106a29030037030020024180086a41086a200241d80c6a41086a290300370300200220022f00f8093b01c408200220022903b00e3703a008200220022903d80c37038008200fad4220862004ad84210b410621030c270b200241f8096a2006412020064120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20052004101e1a200141046a2212200620046b22093602002001200520046a22113602002006411f4d0d0c200241086a41186a2204200241f8096a41186a2203290300370300200241086a41106a2205200241f8096a41106a2206290300370300200241086a41086a2207200241f8096a41086a2208290300370300200220022903f809370308200620052903003703002008200729030037030020032004290300370300200241d8116a41086a2206200241870a6a280000360200200220022903083703f809200220022900ff093703d81120032d0000210820022800fb09210520022d008b0a211820022d008c0a210720022f008d0a211720022d008f0a211920022f00910a211620022d00930a211d20022d00940a211e20022f00950a210a20022d00970a210420022f01f809211520022d00fa09211a200241d8096a41086a2006280200360200200220022903d8113703d80920024200370308200241086a20112009410820094108491b2203101e1a2012200920036b3602002001201120036a36020041072103200941074d0d242015201a4110747221092002290308210c20022802e009212b20022903d809210d410121060c1f0b20024100360208200241086a20042006410420064104491b2205101e1a200141046a200620056b3602002001200420056a360200200641034d0d2320022802082104410221034200210b0c010b200110212204450d22200220043602d8104200210b20024200370308200241086a20012802002206200141046a22072802002205410820054108491b2203101e1a2007200520036b3602002001200620036a36020041072103200541074d0d0d2002290308210d410121030b20024198096a41086a200241d8116a41086a29030037030020024198096a41106a200241d8116a41106a29030037030020024198096a41186a200241d8116a41186a29030037030020024198096a41206a200241d8116a41206a29030037030020024198096a41286a200241d8116a41286a29030037030020024198096a41306a200241d8116a41306a29030037030020024198096a41386a200241d8116a41386a2d00003a0000200220022f0198113b01d609200220022903d8113703980920024188096a41086a200241800b6a41086a280200360200200241c8086a41086a200241086a41086a290000370300200241c8086a41106a200241086a41106a290000370300200241c8086a41186a200241086a41186a290000370300200241c8086a41206a200241086a41206a290000370300200241c8086a41286a200241086a41286a290000370300200241c8086a41306a200241086a41306a290000370300200241c8086a41386a200241086a41386a290000370300200220022903800b37038809200220022900083703c808200241c4086a41026a200241f8096a41026a2d00003a0000200241a0086a41186a200241b00e6a41186a290300370300200241a0086a41106a200241b00e6a41106a290300370300200241a0086a41086a200241b00e6a41086a29030037030020024180086a41186a200241d80c6a41186a29030037030020024180086a41106a200241d80c6a41106a29030037030020024180086a41086a200241d80c6a41086a290300370300200220022f00f8093b01c408200220022903b00e3703a008200220022903d80c37038008200b2004ad42188684420886200341ff0171ad84210b410421030b4100211f410021200c210b200241f8096a2005412020054120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20062004101e1a200141046a2212200520046b22093602002001200620046a22043602002005411f4d0d09200241086a41186a2205200241f8096a41186a2203290300370300200241086a41106a2206200241f8096a41106a2207290300370300200241086a41086a2208200241f8096a41086a220a290300370300200220022903f80937030820072006290300370300200a200829030037030020032005290300370300200241d8116a41086a2206200241870a6a280000360200200220022903083703f809200220022900ff093703d81120032d0000210820022800fb09210520022d008b0a211820022d008c0a210720022f008d0a211720022d008f0a211920022f00910a211620022d00930a211d20022d00940a211e20022f00950a210a20022d00970a211120022f01f809211520022d00fa09211a200241d8096a41086a2006280200360200200220022903d8113703d80920024200370308200241086a20042009410820094108491b2203101e1a2012200920036b22063602002001200420036a2203360200200941074d0d002002290308210c20024100360208200241086a20032006410420064104491b2204101e1a200141046a200620046b3602002001200320046a360200200641034d0d002015201a4110747221032002280208211220022802e009212b20022903d809210d410521040c190b410721030c1e0b20024100360208200241086a20062005410420054104491b2204101e1a200141046a200520046b3602002001200620046a36020041032104200541034d0d1d0c010b2002410036020841042104200241086a20062005410420054104491b2207101e1a200141046a200520076b3602002001200620076a360200200541034d0d1c0b200228020821050c150b20024100360208200241086a20062005410420054104491b2204101e1a200141046a2208200520046b22073602002001200620046a2206360200200541034d0d1a20022802082112200241f8096a2007412020074120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20062004101e1a2008200720046b22093602002001200620046a22043602002007411f4d0d06200241086a41186a2206200241f8096a41186a2205290300370300200241086a41106a2207200241f8096a41106a2208290300370300200241086a41086a220a200241f8096a41086a2211290300370300200220022903f809370308200820072903003703002011200a29030037030020052006290300370300200241d8116a41086a2206200241870a6a280000360200200220022903083703f809200220022900ff093703d81120052d0000210820022800fb09210520022d008b0a211820022d008c0a210720022f008d0a211720022d008f0a211920022f00910a211620022d00930a211d20022d00940a211e20022f00950a210a20022d00970a211120022f01f809212420022d00fa092125200241d8096a41086a2006280200360200200220022903d8113703d80920024100360208200241086a20042009410420094104491b2206101e1a200141046a221a200920066b22153602002001200420066a2204360200200941034d0d1a2002350208210b20024100360208200241086a20042015410420154104491b2206101e1a201a201520066b3602002001200420066a360200201541034d0d1a202420254110747221032002350208422086200b84210c20022802e009212b20022903d809210d410221040c140b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c190b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c180b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c170b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c120b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c150b200241d8106a10220c140b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c130b410121110b2002200a36020c20022011360208200241003602100240200a450d00200141046a211d200241106a211241002105410021080340200241003a00d811200241d8116a200620044100472207101e1a201d200420076b22093602002001200620076a2206360200024002402004450d00200841016a210820022d00d81141017121042005200228020c470d01200241086a102320122802002105200228020821110c010b200228020c450d14201110020c140b201120056a20043a00002012200541016a2205360200200921042008200a490d000b200228020821110b2011450d112011410020111b2105200229020c210d20024100360208200241086a20012802002207200141046a22082802002204410420044104491b2206101e1a2008200420066b3602002001200720066a3602000240200441034d0d002002280208212b410121040c0c0b200da7450d11200510020c110b1024000b200241f8096a41386a200241086a41386a290000370300200241f8096a41306a200241086a41306a290000370300200241f8096a41286a200241086a41286a290000370300200241f8096a41206a200241086a41206a290000370300202e202d2900003703002030202f29000037030020322031290000370300200220022900083703f8090c0b0b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c0a0b200241f8096a41386a200241086a41386a290000370300200241f8096a41306a200241086a41306a290000370300200241f8096a41286a200241086a41286a290000370300200241f8096a41206a200241086a41206a2900003703002007201629000037030020182017290000370300201a2019290000370300200220022900083703f8090c090b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c080b20024100360208200241086a20042006410420064104491b2205101e1a200141046a2208200620056b22073602002001200420056a2205360200200641034d0d0720022802082115200241f8096a2007412020074120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20052004101e1a2008200720046b22063602002001200520046a22253602002007411f4d0d01200241086a41186a221b200241f8096a41186a221a290300370300200241086a41106a2223200241f8096a41106a2224290300370300200241086a41086a2226200241f8096a41086a2227290300370300200220022903f80937030820242023290300370300201a201b29030037030020272026290300370300200220022903083703f80920242d00002108201a2d0000210520022800fb09211c20022800ff09212b20022d00830a211820022d00840a210720022f00850a211720022d00870a211920022f00890a211620022d008b0a211d20022d008c0a211e20022f008d0a210a20022d008f0a211120022f00910a210f20022d00930a211220022d00940a211f20022f00950a212020022d00970a211020022f01f809212a20022d00fa092133200241f8096a200641c000200641c0004922281b22046a4100410041c00020046b2004413f4b1b10171a200241f8096a20252004101e1a200141046a2229200620046b22063602002001202520046a222536020020280d02200241086a41386a2204200241f8096a41386a2228290300370300200241086a41306a222e200241f8096a41306a2221290300370300200241086a41286a2222200241f8096a41286a222c290300370300200241086a41206a222d200241f8096a41206a222f290300370300201b201a2903003703002023202429030037030020262027290300370300200220022903f8093703082024202329030037030020272026290300370300201a201b290300370300202f202d290300370300202c20222903003703002021202e2903003703002028200429030037030020024198116a41086a2204200241870a6a29000037030020024198116a41106a221a2002418f0a6a29000037030020024198116a41186a2224200241f8096a411f6a29000037030020024198116a41206a221b2002419f0a6a29000037030020024198116a41286a2223200241a70a6a29000037030020024198116a41306a2226200241af0a6a29000037030020024198116a41386a2227200241f8096a413f6a2d00003a0000200220022903083703f809200220022900ff093703981120023502f809210c20023201fc09211320023100fe092114200241d8106a41386a20272d00003a0000200241d8106a41306a2026290300370300200241d8106a41286a2023290300370300200241d8106a41206a201b290300370300200241d8106a41186a2024290300370300200241d8106a41106a201a290300370300200241d8106a41086a200429030037030020022002290398113703d810200241f8096a2006412020064120491b22046a41004100412020046b2004411f4b1b10171a200241f8096a20252004101e1a2029200620046b221a3602002001202520046a22243602002006411f4d0d03200241086a41186a2225200241f8096a41186a222e290300370300200241086a41106a221b200241f8096a41106a2221290300370300200241086a41086a2223200241f8096a41086a2222290300370300200220022903f809370308202e2025290300223a3703002021201b290300223b37030020222023290300223c370300200241b8126a41086a2204203c370300200241b8126a41106a2206203b370300200241b8126a41186a2226203a37030020022002290308223a3703b8122002203a3703f809200241d8096a41186a2026290300370300200241d8096a41106a2006290300370300200241d8096a41086a2004290300370300200220022903b8123703d80941002104200241f8096a201a41c000201a41c000491b22066a4100410041c00020066b2006413f4b1b10171a200241f8096a20242006101e1a200141046a201a20066b3602002001202420066a360200201a413f4d0d04202a2033411074722137200c201320144210868442208684210c200241086a41386a2206200241f8096a41386a222c290300370300200241086a41306a221a200241f8096a41306a222d290300370300200241086a41286a2224200241f8096a41286a222f290300370300200241086a41206a2226200241f8096a41206a22302903003703002025202e290300370300201b202129030037030020232022290300370300200220022903f809370308202c20062903002213370300202d201a2903002214370300202f2024290300223a37030020302026290300223b370300202e2025290300223c3703002021201b290300223d37030020222023290300223e370300200241d8116a41086a2227203e370300200241d8116a41106a2228203d370300200241d8116a41186a2229203c370300200241d8116a41206a222a203b370300200241d8116a41286a2233203a370300200241d8116a41306a22312014370300200241d8116a41386a223220133703002002200229030822133703d811200220133703f809200241e0126a41086a200241e7096a28000036020020232027290300370300201b2028290300370300202520292903003703002026202a29030037030020242033290300370300201a203129030037030020062032290300370300200220022900df093703e012200220022903d81137030820022800db09211a20022d00eb09212420022d00ec09212520022f00ed09211b20022d00ef09212320022d00f009212620022f00f109212720022d00f309212820022d00f409212920022f00f509212a20022d00f709213320022f01d809210620022d00da092131202c200241d8106a41386a2d00003a0000202d200241d8106a41306a290300370300202f200241d8106a41286a2903003703002030200241d8106a41206a290300370300202e200241d8106a41186a2903003703002021200241d8106a41106a2903003703002022200241d8106a41086a290300370300200220022903d8103703f809200620314110747221060b20024198116a41386a200241f8096a41386a2d00003a000020024198116a41306a200241f8096a41306a29030037030020024198116a41286a200241f8096a41286a29030037030020024198116a41206a200241f8096a41206a29030037030020024198116a41186a200241f8096a41186a29030037030020024198116a41106a200241f8096a41106a29030037030020024198116a41086a200241f8096a41086a29030037030020024188106a41086a200241e0126a41086a280200360200200220022903f80937039811200220022903e01237038810200241d8116a41386a200241086a41386a290300370300200241d8116a41306a200241086a41306a290300370300200241d8116a41286a200241086a41286a290300370300200241d8116a41206a200241086a41206a290300370300200241d8116a41186a200241086a41186a290300370300200241d8116a41106a200241086a41106a290300370300200241d8116a41086a200241086a41086a29030037030020024184106a41026a200241d8106a41026a2d00003a0000200220022903083703d811200220022f00d8103b018410200241e00f6a41186a20024198106a41186a290300370300200241e00f6a41106a20024198106a41106a290300370300200241e00f6a41086a20024198106a41086a29030037030020022002290398103703e00f200241c00f6a41186a200241b8106a41186a290300370300200241c00f6a41106a200241b8106a41106a290300370300200241c00f6a41086a200241b8106a41086a290300370300200220022903b8103703c00f0c070b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c050b200241f8096a41386a200241086a41386a290000370300200241f8096a41306a200241086a41306a290000370300200241f8096a41286a200241086a41286a290000370300200241f8096a41206a200241086a41206a290000370300201a201b2900003703002024202329000037030020272026290000370300200220022900083703f8090c040b200241f8096a41186a200241086a41186a290000370300200241f8096a41106a200241086a41106a290000370300200241f8096a41086a200241086a41086a290000370300200220022900083703f8090c030b200241f8096a41386a200241086a41386a290000370300200241f8096a41306a200241086a41306a290000370300200241f8096a41286a200241086a41286a290000370300200241f8096a41206a200241086a41206a290000370300202e20252900003703002021201b29000037030020222023290000370300200220022900083703f8090c020b20024198096a41086a200241d8116a41086a29030037030020024198096a41106a200241d8116a41106a29030037030020024198096a41186a200241d8116a41186a29030037030020024198096a41206a200241d8116a41206a29030037030020024198096a41286a200241d8116a41286a29030037030020024198096a41306a200241d8116a41306a29030037030020024198096a41386a200241d8116a41386a2d00003a0000200220022f0198113b01d609200220022903d8113703980920024188096a41086a200241800b6a41086a280200360200200241c8086a41086a200241086a41086a290000370300200241c8086a41106a200241086a41106a290000370300200241c8086a41186a200241086a41186a290000370300200241c8086a41206a200241086a41206a290000370300200241c8086a41286a200241086a41286a290000370300200241c8086a41306a200241086a41306a290000370300200241c8086a41386a200241086a41386a290000370300200220022903800b37038809200220022900083703c808200241c4086a41026a200241f8096a41026a2d00003a0000200241a0086a41186a200241b00e6a41186a290300370300200241a0086a41106a200241b00e6a41106a290300370300200241a0086a41086a200241b00e6a41086a29030037030020024180086a41186a200241d80c6a41186a29030037030020024180086a41106a200241d80c6a41106a29030037030020024180086a41086a200241d80c6a41086a290300370300200220022f00f8093b01c408200220022903b00e3703a008200220022903d80c370380082005ad421886200341ffffff0771ad84420886200441ff0171ad84210b202b411076211f202b4108762120410521030c060b20024198096a41086a200241d8116a41086a29030037030020024198096a41106a200241d8116a41106a29030037030020024198096a41186a200241d8116a41186a29030037030020024198096a41206a200241d8116a41206a29030037030020024198096a41286a200241d8116a41286a29030037030020024198096a41306a200241d8116a41306a29030037030020024198096a41386a200241d8116a41386a2d00003a0000200220022f0198113b01d609200220022903d8113703980920024188096a41086a200241800b6a41086a280200360200200241c8086a41086a200241086a41086a290000370300200241c8086a41106a200241086a41106a290000370300200241c8086a41186a200241086a41186a290000370300200241c8086a41206a200241086a41206a290000370300200241c8086a41286a200241086a41286a290000370300200241c8086a41306a200241086a41306a290000370300200241c8086a41386a200241086a41386a290000370300200220022903800b37038809200220022900083703c80841022103200241c4086a41026a200241f8096a41026a2d00003a0000200241a0086a41186a200241b00e6a41186a290300370300200241a0086a41106a200241b00e6a41106a290300370300200241a0086a41086a200241b00e6a41086a29030037030020024180086a41186a200241d80c6a41186a29030037030020024180086a41106a200241d80c6a41106a29030037030020024180086a41086a200241d80c6a41086a290300370300200220022f00f8093b01c408200220022903b00e3703a008200220022903d80c370380082005ad421886200941ffffff0771ad84420886200641ff0171ad84210b202b411076211f202b4108762120200441ff017121110c050b410221040b200241f8096a41386a222e20024198116a41386a2d00003a0000200241f8096a41306a222120024198116a41306a290300370300200241f8096a41286a222220024198116a41286a290300370300200241f8096a41206a222c20024198116a41206a290300370300200241f8096a41186a222d20024198116a41186a290300370300200241f8096a41106a222f20024198116a41106a290300370300200241f8096a41086a223020024198116a41086a290300370300200241e0126a41086a223120024188106a41086a28020036020020022002290398113703f80920022002290388103703e012200241086a41386a2232200241d8116a41386a290300370300200241086a41306a2234200241d8116a41306a290300370300200241086a41286a2235200241d8116a41286a290300370300200241086a41206a2236200241d8116a41206a290300370300200241086a41186a2238200241d8116a41186a290300370300200241086a41106a2239200241d8116a41106a290300370300200241086a41086a223f200241d8116a41086a290300370300200241dc126a41026a20024184106a41026a2d00003a0000200220022903d811370308200220022f0184103b01dc12200241b8126a41186a2240200241e00f6a41186a290300370300200241b8126a41106a2241200241e00f6a41106a290300370300200241b8126a41086a2242200241e00f6a41086a29030037030020024198126a41186a2243200241c00f6a41186a29030037030020024198126a41106a2244200241c00f6a41106a29030037030020024198126a41086a2245200241c00f6a41086a290300370300200220022903e00f3703b812200220022903c00f370398120240024020044102470d004102210441024102470d010c020b200241800f6a41386a202e2d00003a0000200241800f6a41306a2021290300370300200241800f6a41286a2022290300370300200241800f6a41206a202c290300370300200241800f6a41186a202d290300370300200241800f6a41106a202f290300370300200241800f6a41086a2030290300370300200241f00e6a41086a2031280200360200200220022903f8093703800f200220022903e0123703f00e200241b00e6a41386a2032290300370300200241b00e6a41306a2034290300370300200241b00e6a41286a2035290300370300200241b00e6a41206a2036290300370300200241b00e6a41186a2038290300370300200241b00e6a41106a2039290300370300200241b00e6a41086a203f290300370300200241ac0e6a41026a200241dc126a41026a2d00003a0000200220022903083703b00e200220022f01dc123b01ac0e200241880e6a41186a2040290300370300200241880e6a41106a2041290300370300200241880e6a41086a2042290300370300200220022903b8123703880e200241e80d6a41186a2043290300370300200241e80d6a41106a2044290300370300200241e80d6a41086a204529030037030020022002290398123703e80d200c420886201041ff0171ad84210c2020411074201f41ff017141087472201241ff0171722112200f411074200541ff017141087472201141ff017172211120044102460d010b20024198116a41386a200241800f6a41386a2d00003a000020024198116a41306a200241800f6a41306a29030037030020024198116a41286a200241800f6a41286a29030037030020024198116a41206a200241800f6a41206a29030037030020024198116a41186a200241800f6a41186a29030037030020024198116a41106a200241800f6a41106a29030037030020024198116a41086a200241800f6a41086a29030037030020024188106a41086a200241f00e6a41086a280200360200200220022903800f37039811200220022903f00e37038810200241d8116a41386a200241b00e6a41386a290300370300200241d8116a41306a200241b00e6a41306a290300370300200241d8116a41286a200241b00e6a41286a290300370300200241d8116a41206a200241b00e6a41206a290300370300200241d8116a41186a200241b00e6a41186a290300370300200241d8116a41106a200241b00e6a41106a290300370300200241d8116a41086a200241b00e6a41086a29030037030020024184106a41026a200241ac0e6a41026a2d00003a0000200220022903b00e3703d811200220022f01ac0e3b018410200241e00f6a41186a200241880e6a41186a290300370300200241e00f6a41106a200241880e6a41106a290300370300200241e00f6a41086a200241880e6a41086a290300370300200220022903880e3703e00f200241c00f6a41186a200241e80d6a41186a290300370300200241c00f6a41106a200241e80d6a41106a290300370300200241c00f6a41086a200241e80d6a41086a290300370300200220022903e80d3703c00f201cad421886203741ffffff0771ad84420886210d0c010b410321040b200241f8096a41386a220520024198116a41386a2d00003a0000200241f8096a41306a221c20024198116a41306a290300370300200241f8096a41286a220f20024198116a41286a290300370300200241f8096a41206a221f20024198116a41206a290300370300200241f8096a41186a222020024198116a41186a290300370300200241f8096a41106a221020024198116a41106a290300370300200241f8096a41086a20024198116a41086a290300370300200241e0126a41086a20024188106a41086a28020036020020022002290398113703f80920022002290388103703e012200241086a41386a222e200241d8116a41386a290300370300200241086a41306a2221200241d8116a41306a290300370300200241086a41286a2222200241d8116a41286a290300370300200241086a41206a222c200241d8116a41206a290300370300200241086a41186a222d200241d8116a41186a290300370300200241086a41106a222f200241d8116a41106a290300370300200241086a41086a200241d8116a41086a290300370300200241dc126a41026a223020024184106a41026a2d00003a0000200220022903d811370308200220022f0184103b01dc12200241b8126a41186a2231200241e00f6a41186a290300370300200241b8126a41106a2232200241e00f6a41106a290300370300200241b8126a41086a200241e00f6a41086a29030037030020024198126a41186a2234200241c00f6a41186a29030037030020024198126a41106a2235200241c00f6a41106a29030037030020024198126a41086a200241c00f6a41086a290300370300200220022903e00f3703b812200220022903c00f37039812024020044103460d00200241a80d6a41386a20052d00003a0000200241a80d6a41306a201c290300370300200241a80d6a41286a200f290300370300200241a80d6a41206a201f290300370300200241a80d6a41186a2020290300370300200241a80d6a41106a2010290300370300200241a80d6a41086a200241f8096a41086a290300370300200241980d6a41086a200241e0126a41086a280200360200200220022903f8093703a80d200220022903e0123703980d200241d80c6a41386a202e290300370300200241d80c6a41306a2021290300370300200241d80c6a41286a2022290300370300200241d80c6a41206a202c290300370300200241d80c6a41186a202d290300370300200241d80c6a41106a202f290300370300200241d80c6a41086a200241086a41086a290300370300200241d40c6a41026a20302d00003a0000200220022903083703d80c200220022f01dc123b01d40c200241b00c6a41186a2031290300370300200241b00c6a41106a2032290300370300200241b00c6a41086a200241b8126a41086a290300370300200220022903b8123703b00c200241900c6a41186a2034290300370300200241900c6a41106a2035290300370300200241900c6a41086a20024198126a41086a29030037030020022002290398123703900c200421090b20094103460d0020024198096a41086a200241a80d6a41086a29030037030020024198096a41106a200241a80d6a41106a29030037030020024198096a41186a200241a80d6a41186a29030037030020024198096a41206a200241a80d6a41206a29030037030020024198096a41286a200241a80d6a41286a29030037030020024198096a41306a200241a80d6a41306a29030037030020024198096a41386a200241a80d6a41386a2d00003a0000200220022f018e0c3b01d609200220022903a80d3703980920024188096a41086a200241980d6a41086a280200360200200241c8086a41086a200241d80c6a41086a290300370300200241c8086a41106a200241d80c6a41106a290300370300200241c8086a41186a200241d80c6a41186a290300370300200241c8086a41206a200241d80c6a41206a290300370300200241c8086a41286a200241d80c6a41286a290300370300200241c8086a41306a200241d80c6a41306a290300370300200241c8086a41386a200241d80c6a41386a290300370300200220022903980d37038809200220022903d80c3703c808200241c4086a41026a200241d40c6a41026a2d00003a0000200241a0086a41186a200241b00c6a41186a290300370300200241a0086a41106a200241b00c6a41106a290300370300200241a0086a41086a200241b00c6a41086a29030037030020024180086a41186a200241900c6a41186a29030037030020024180086a41106a200241900c6a41106a29030037030020024180086a41086a200241900c6a41086a290300370300200220022f01d40c3b01c408200220022903b00c3703a008200220022903900c37038008202b411076211f202b4108762120200d200941ff0171ad84210d410021030c010b0c020b0b0b200241d00b6a41086a220f20024198096a41086a290300370300200241d00b6a41106a221020024198096a41106a290300370300200241d00b6a41186a222e20024198096a41186a290300370300200241d00b6a41206a222120024198096a41206a290300370300200241d00b6a41286a222220024198096a41286a290300370300200241d00b6a41306a222c20024198096a41306a290300370300200241d00b6a41386a222d20024198096a41386a2d00003a0000200220022f01d6093b018e0c20022002290398093703d00b200241c00b6a41086a222f20024188096a41086a280200360200200241800b6a41086a2230200241c8086a41086a290300370300200241800b6a41106a2231200241c8086a41106a290300370300200241800b6a41186a2232200241c8086a41186a290300370300200241800b6a41206a2234200241c8086a41206a290300370300200241800b6a41286a2235200241c8086a41286a290300370300200241800b6a41306a2236200241c8086a41306a290300370300200241800b6a41386a2238200241c8086a41386a29030037030020022002290388093703c00b200220022903c8083703800b200241fc0a6a41026a2239200241c4086a41026a2d00003a0000200241d80a6a41186a223f200241a0086a41186a290300370300200241d80a6a41106a2240200241a0086a41106a290300370300200241d80a6a41086a2241200241a0086a41086a290300370300200241b80a6a41186a224220024180086a41186a290300370300200241b80a6a41106a224320024180086a41106a290300370300200241b80a6a41086a224420024180086a41086a290300370300200220022f01c4083b01fc0a200220022903a0083703d80a20022002290380083703b80a4107210420034107460d00200241d80c6a41086a200f290300370300200241d80c6a41106a2010290300370300200241d80c6a41186a202e290300370300200241d80c6a41206a2021290300370300200241d80c6a41286a2022290300370300200241d80c6a41306a202c290300370300200241d80c6a41386a202d2d00003a0000200220022f018e0c3b01c00f200220022903d00b3703d80c200241b8126a41086a202f280200360200200241d8116a41086a2030290300370300200241d8116a41106a2031290300370300200241d8116a41186a2032290300370300200241d8116a41206a2034290300370300200241d8116a41286a2035290300370300200241d8116a41306a2036290300370300200241d8116a41386a2038290300370300200220022903c00b3703b812200220022903800b3703d81120024198126a41026a20392d00003a000020024198116a41186a203f29030037030020024198116a41106a204029030037030020024198116a41086a2041290300370300200241800f6a41186a2042290300370300200241800f6a41106a2043290300370300200241800f6a41086a2044290300370300200220022f01fc0a3b019812200220022903d80a37039811200220022903b80a3703800f200241a80d6a41186a200241c0076a41186a290300370300200241a80d6a41106a200241c0076a41106a290300370300200241a80d6a41086a200241c0076a41086a290300370300200220022903c0073703a80d201f411074202041ff017141087472202b41ff017172210f200321040c010b0b200241b00e6a41086a222b200241d80c6a41086a290300370300200241b00e6a41106a221f200241d80c6a41106a290300370300200241b00e6a41186a2220200241d80c6a41186a290300370300200241b00e6a41206a2210200241d80c6a41206a290300370300200241b00e6a41286a222e200241d80c6a41286a290300370300200241b00e6a41306a2221200241d80c6a41306a290300370300200241b00e6a41386a2222200241d80c6a41386a2d00003a0000200220022f01c00f3b01e00f200220022903d80c3703b00e200241d00b6a41086a222c200241b8126a41086a280200360200200241086a41086a222d200241d8116a41086a290300370300200241086a41106a222f200241d8116a41106a290300370300200241086a41186a2230200241d8116a41186a290300370300200241086a41206a2231200241d8116a41206a290300370300200241086a41286a2232200241d8116a41286a290300370300200241086a41306a2234200241d8116a41306a290300370300200241086a41386a2235200241d8116a41386a290300370300200220022903b8123703d00b200220022903d81137030820024198096a41026a223620024198126a41026a2d00003a0000200241800b6a41186a223820024198116a41186a290300370300200241800b6a41106a223920024198116a41106a290300370300200241800b6a41086a223f20024198116a41086a290300370300200241f8096a41186a2240200241800f6a41186a290300370300200241f8096a41106a2241200241800f6a41106a290300370300200241f8096a41086a2242200241800f6a41086a290300370300200220022f0198123b01980920022002290398113703800b200220022903800f3703f809200241c8086a41186a2243200241a80d6a41186a290300370300200241c8086a41106a2244200241a80d6a41106a290300370300200241c8086a41086a2245200241a80d6a41086a290300370300200220022903a80d3703c80841072103024020044107460d0020024180076a41086a202b29030037030020024180076a41106a201f29030037030020024180076a41186a202029030037030020024180076a41206a201029030037030020024180076a41286a202e29030037030020024180076a41306a202129030037030020024180076a41386a20222d00003a0000200220022f01e00f3b01be07200220022903b00e37038007200241f0066a41086a202c280200360200200241b0066a41086a202d290300370300200241b0066a41106a202f290300370300200241b0066a41186a2030290300370300200241b0066a41206a2031290300370300200241b0066a41286a2032290300370300200241b0066a41306a2034290300370300200241b0066a41386a2035290300370300200220022903d00b3703f006200220022903083703b006200241ac066a41026a20362d00003a000020024188066a41186a203829030037030020024188066a41106a203929030037030020024188066a41086a203f290300370300200241e8056a41186a2040290300370300200241e8056a41106a2041290300370300200241e8056a41086a2042290300370300200220022f0198093b01ac06200220022903800b37038806200220022903f8093703e805200241c8056a41186a2043290300370300200241c8056a41106a2044290300370300200241c8056a41086a2045290300370300200220022903c8083703c805200421030b024020034107470d00200041073a0008200241f0126a24000f0b20024197036a20054110763a000020024195036a20053b000020024191036a20093a000020024192036a20022f01be073b010020024194036a201c3a000020024188036a41106a2209200b37030020024188036a41186a200d37030020024188036a41206a200f360200200241ac036a20183a0000200241ad036a20073a0000200241ae036a20173b010020024188036a41286a20193a0000200241b1036a20083a0000200241b2036a20163b0100200241b4036a201d3a0000200241b5036a201e3a0000200241b6036a200a3b0100200220033a0090032002200e37038803200241bc036a201236020020024188036a41306a201136020020024188036a41386a200c37030020024188036a41c0006a200229038007370300200241d0036a20024180076a41086a290300370300200241d8036a20024180076a41106a290300370300200241e0036a20024180076a41186a290300370300200241e8036a20024180076a41206a290300370300200241f0036a20024180076a41286a290300370300200241f8036a20024180076a41306a29030037030020024180046a20024180076a41386a2d00003a000020024183046a20064110763a000020024181046a20063b000020024184046a201a36020020024194046a20243a000020024195046a20253a000020024196046a201b3b010020024198046a20233a000020024199046a20263a00002002419a046a20273b01002002419c046a20283a00002002419d046a20293a00002002419e046a202a3b0100200241a0046a20333a000020024190046a200241f0066a41086a28020036020020024188046a20022903f006370300200241d9046a200241b0066a41386a290300370000200241d1046a200241b0066a41306a290300370000200241c9046a200241b0066a41286a290300370000200241c1046a200241b0066a41206a290300370000200241b9046a200241b0066a41186a290300370000200241b1046a200241b0066a41106a290300370000200241a9046a200241b0066a41086a290300370000200241a1046a20022903b006370000200241e3046a200241ae066a2d00003a0000200241e1046a20022f01ac063b0000200241e4046a201536020020024180056a20024188066a41186a290300370300200241f8046a20024188066a41106a290300370300200241f0046a20024188066a41086a290300370300200241e8046a200229038806370300200241a0056a200241e8056a41186a29030037030020024198056a200241e8056a41106a29030037030020024190056a200241e8056a41086a29030037030020024188056a20022903e805370300200241c0056a200241c8056a41186a290300370300200241b8056a200241c8056a41106a290300370300200241b0056a200241c8056a41086a290300370300200220022903c8053703a80520012802002105200241f8096a200141046a2206280200220441c000200441c000491b22036a4100410041c00020036b2003413f4b1b10171a200241f8096a20052003101e1a2006200420036b3602002001200520036a36020002402004413f4d0d00200241086a41386a2209200241f8096a41386a2201290300370300200241086a41306a220a200241f8096a41306a2203290300370300200241086a41286a2211200241f8096a41286a2204290300370300200241086a41206a2212200241f8096a41206a2205290300370300200241086a41186a221d200241f8096a41186a2206290300370300200241086a41106a2216200241f8096a41106a2207290300370300200241086a41086a2217200241f8096a41086a2208290300370300200220022903f80937030820012009290300220b3703002003200a290300220c37030020042011290300220d37030020052012290300220e3703002006201d290300221337030020072016290300221437030020082017290300223a370300200241d8116a41086a2209203a370300200241d8116a41106a220a2014370300200241d8116a41186a22112013370300200241d8116a41206a2212200e370300200241d8116a41286a221d200d370300200241d8116a41306a2216200c370300200241d8116a41386a2217200b37030020022002290308220b3703d8112002200b3703f809200241b00e6a41386a22182017290300370300200241b00e6a41306a22172016290300370300200241b00e6a41286a2216201d290300370300200241b00e6a41206a221d2012290300370300200241b00e6a41186a22122011290300370300200241b00e6a41106a2211200a290300370300200241b00e6a41086a220a2009290300370300200220022903d8113703b00e20012018290300220b37030020032017290300220c37030020042016290300220d3703002005201d290300220e3703002006201229030022133703002007201129030022143703002008200a290300223a370300200241d80c6a41086a2201203a370300200241d80c6a41106a22032014370300200241d80c6a41186a22042013370300200241d80c6a41206a2205200e370300200241d80c6a41286a2206200d370300200241d80c6a41306a2207200c370300200241d80c6a41386a2208200b370300200220022903b00e220b3703d80c2002200b3703f809200241086a20024188036a41c002101e1a20024180036a2008290300370300200241f8026a2007290300370300200241f0026a2006290300370300200241e8026a2005290300370300200241e0026a2004290300370300200241d8026a2003290300370300200241d0026a2001290300370300200220022903d80c3703c8022000200241086a418003101e1a200241f0126a24000f0b200241f8096a41386a2201200241086a41386a290000370300200241f8096a41306a2203200241086a41306a290000370300200241f8096a41286a2204200241086a41286a290000370300200241f8096a41206a2205200241086a41206a290000370300200241f8096a41186a2206200241086a41186a290000370300200241f8096a41106a2207200241086a41106a290000370300200241f8096a41086a2208200241086a41086a290000370300200220022900083703f8092001200241b00e6a41386a2900003703002003200241b00e6a41306a2900003703002004200241b00e6a41286a2900003703002005200241b00e6a41206a2900003703002006200241b00e6a41186a2900003703002007200241b00e6a41106a2900003703002008200241b00e6a41086a290000370300200220022900b00e3703f809200041073a0008024020024188036a41086a2d00002201411d74411d75417f4a0d000240024020014104460d0020014105470d0120024198036a2d00004101470d02200241a0036a280200450d022002419c036a2802001002200241f0126a24000f0b20024198036a2d00004101470d012002419c036a1025200241f0126a24000f0b20024194036a2d00004101470d0020091025200241f0126a24000f0b200241f0126a24000bd81a05077f017e027f017e017f230041c0016b22012400200141003a00a001200141a0016a20002802002202200028020422034100472204101e1a2000200320046b22053602042000200220046a220236020002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402003450d004106210420012d00a001220341074b0d19024020030e080004021b1b050603000b200141003a00a001200141a0016a200220054100472203101e1a200041046a200520036b22063602002000200220036a22033602002005450d1920012d00a0012205450d0820054101470d19200141003602a001200141a0016a20032006410420064104491b2205101e1a200041046a200620056b3602002000200320056a360200200641034d0d1920012802a0012207ad42187e2208422088a70d152008a72203417f4c0d142003450d112003100122090d120c1b0b410621040c180b200141003a00a001200141a0016a200220054100472203101e1a41042109200041046a200520036b22063602002000200220036a22033602002005450d1720012d00a001220541034b0d17024020050e04000a0b0c000b200142003703a001200141a0016a20032006410820064108491b2205101e1a200041046a200620056b3602002000200320056a360200200641074d0d1720012903a0012108410121090c0b0b200141003a00a001200141a0016a200220054100472203101e1a200041046a200520036b22063602002000200220036a22033602002005450d1620012d00a0012205450d0320054101470d16200142003703a001200141a0016a20032006410820064108491b2205101e1a200041046a200620056b3602002000200320056a360200200641074d0d1620012903a00121084202210b0c040b200141003a00a001200141a0016a200220054100472203101e1a200041046a200520036b22063602002000200220036a22033602002005450d1520012d00a0012205450d054202210b20054101460d060c160b200141a0016a200010a00120012903a001220ba741ff01714103460d1520014180016a41086a200141a0016a41086a29020037030020014180016a41106a200141a0016a41106a290200370300200120012902a001370380012001200b370348410321040c150b200141003a00a001200141a0016a200220054100472206101e1a200041046a200520066b22033602002000200220066a220236020002402005450d004105210520012d00a001220641034b0d11024020060e04000c0a0b000b200141003602a001200141a0016a20022003410420034104491b2206101e1a200041046a200320066b3602002000200220066a360200200341034d0d1120012802a0012100410121050c130b410521050c100b200142003703a001200141a0016a20032006410820064108491b2205101e1a200041046a200620056b3602002000200320056a360200200641074d0d1220012903a00121084201210b0b20014180016a41086a200141a0016a41086a29030037030020014180016a41106a200141a0016a41106a290300370300200120012903a001370380012001200b37024c410521040c120b200141a0016a2000101f20012802a0012209450d1020012902a4012108410121000c0a0b200142003703a001200141a0016a200320064108200641084922021b2205101e1a200041046a200620056b3602002000200320056a36020020020d0f20012903a00121084201210b0b20014180016a41086a200141a0016a41086a29030037030020014180016a41106a200141a0016a41106a290300370300200120012903a001370380012001200b37024c410121040c0f0b200142003703a001200141a0016a20032006410820064108491b2205101e1a200041046a200620056b3602002000200320056a360200200641074d0d0d20012903a0012108410221090c010b200141003602a001200141a0016a20032006410420064104491b2205101e1a200041046a200620056b3602002000200320056a36020041032109200641034d0d0c20012802a00121020b20014180016a41086a200141a0016a41086a29030037030020014180016a41106a200141a0016a41106a290300370300200120023602502001200936024c200120012903a00137038001410221040c0c0b200142003703a001200141a0016a20022003410820034108491b2206101e1a200041046a200320066b3602002000200220066a360200200341074d0d0720012903a0012108410321050c080b200142003703a001200141a0016a20022003410820034108491b2206101e1a200041046a200320066b3602002000200220066a360200200341074d0d0620012903a0012108410421050c080b200141a0016a2003412020034120491b22066a41004100412020066b2006411f4b1b10171a200141a0016a20022006101e1a200041046a200320066b3602002000200220066a36020002402003411f4d0d0020014180016a41186a2200200141a0016a41186a220329030037030020014180016a41106a2205200141a0016a41106a220229030037030020014180016a41086a2206200141a0016a41086a2209290300370300200120012903a0013703800120032000290300370300200220052903003703002009200629030037030020012001290380013703a00141022105200141fc006a41026a220320012d00a2013a0000200141e8006a41086a2202200141b7016a290000370300200141e8006a41106a2206200141a0016a411f6a2d00003a0000200120012f01a0013b017c200120012900af0137036820012800a301210020012900a7012108200141e4006a41026a20032d00003a0000200141c8006a41086a2002290300370300200141c8006a41106a20062d00003a0000200120012f017c3b0164200120012903683703480c080b200141a0016a41186a20014180016a41186a290000370300200141a0016a41106a20014180016a41106a290000370300200141a0016a41086a20014180016a41086a29000037030020012001290080013703a0010c050b410421090b2001200736024c20012009360248410021032001410036025002402007450d00200141d0006a210c41002102034020014180016a2000101f024002402001280280012206450d002001290284012108200141a0016a2000101f024020012802a001220a450d00200241016a210220012902a401210b2003200128024c470d02200141c8006a1076200c2802002103200128024821090c020b2008a7450d00200610020b2001280248210502402003450d00200341186c21032005210003400240200041046a280200450d00200028020010020b0240200041106a280200450d002000410c6a28020010020b200041186a2100200341686a22030d000b0b200128024c450d09200510020c090b2009200341186c6a22052008370204200520063602002005410c6a200a360200200541106a200b370200200c200341016a220336020020022007490d000b200128024821090b2009450d06200129024c2108410221000b20014180016a41086a200141a0016a41086a29020037030020014180016a41106a200141a0016a41106a29020037030020012000360248200120012902a00137038001200120084220862009ad8437024c20084220882108410021040c060b1061000b1060000b0b0b20014180016a41026a2203200141e4006a41026a2d00003a0000200141a0016a41086a2202200141c8006a41086a290300370300200141a0016a41106a2206200141c8006a41106a290300370300200120012f01643b018001200120012903483703a00120054105460d00200141c4006a41026a220420032d00003a0000200141286a41086a22032002290300370300200141286a41106a22022006290300370300200120012f0180013b0144200120012903a00137032820014180016a41086a200329030037030020014180016a41106a2002290300370300200120053a004c20012000360250200120012f01443b004d200120042d00003a004f2001200129032837038001410421040c010b0b200141c4006a41026a220020012d004f3a0000200141286a41086a220520014180016a41086a290300370300200141286a41106a220220014180016a41106a290300370300200120012f004d3b014420012001290380013703282001280250210620012d004c21092001280248210a41062103024020044106460d00200141246a41026a20002d00003a0000200141086a41086a2005290300370300200141086a41106a2002290300370300200120012f01443b012420012001290328370308200421030b024020034106470d00200141c0016a240041000f0b20014180016a41026a2204200141246a41026a2d00003a0000200141a0016a41086a2205200141086a41086a290300370300200141a0016a41106a2202200141086a41106a290300370300200120012f01243b018001200120012903083703a001413010012200450d002000200a36020420002003360200200020093a0008200020012f0180013b00092000200636000c20002008370210200020012903a0013702182000410b6a20042d00003a0000200041206a2005290300370200200041286a2002290300370200200141c0016a240020000f0b101c000be60101037f0240024002402000280200220128020022024103460d0020020d0220012802042202450d0220024101470d012001410c6a280200450d02200141086a2802001002200028020010020f0b20012d00044101470d01200141086a1022200028020010020f0b0240200141106a2802002203450d00200141086a2802002102200341186c210303400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241186a2102200341686a22030d000b0b2001410c6a280200450d00200141086a28020010020b200028020010020b7901047f0240024002400240200041046a2802002201450d002001418080808004710d03200028020021022001410174220310012204450d022004200220032001200120034b1b101e1a200210020c010b410410012204450d01410421030b20002004360200200041046a20033602000f0b101c000b106e000b05001041000be60101037f0240024002402000280200220128020022024103460d0020020d0220012802042202450d0220024101470d012001410c6a280200450d02200141086a2802001002200028020010020f0b20012d00044101470d01200141086a1025200028020010020f0b0240200141106a2802002203450d00200141086a2802002102200341186c210303400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241186a2102200341686a22030d000b0b2001410c6a280200450d00200141086a28020010020b200028020010020b890403037f017e027f230041206b22022400200241003602082002420137030020024100410410272002280200200228020822036a41003600002002200341046a220336020820022003412010272002280200200228020822046a220320012900a002370000200341186a200141b8026a290000370000200341106a200141b0026a290000370000200341086a200141a8026a2900003700002002200441206a22033602082001290300210520022003410810272002280200200228020822036a20053700002002200341086a2206360208200241106a200141086a1028200228021021042002200620022802182203102720022003200228020822066a2207360208200620022802006a20042003101e1a02402002280214450d00200410020b2002200741c0001027200241086a22032003280200220441c0006a22063602002004200228020022076a220320012900c002370000200341086a200141c8026a290000370000200341106a200141d0026a290000370000200341186a200141d8026a290000370000200341206a200141e0026a290000370000200341286a200141e8026a290000370000200341306a200141f0026a290000370000200341386a200141f8026a2900003700000240200641034d0d002000200229030037020020072004413c6a360000200041086a200241086a280200360200200241206a24000f0b410420061029000ba10101027f024002400240200041046a280200220320016b20024f0d00200120026a220220014922010d0141000d01200341017422044100200220011b2201200420014b1b22014100480d01024002402003450d0020002802002104200110012202450d042002200420012003200320014b1b101e1a200410020c010b200110012202450d030b20002002360200200041046a20013602000b0f0b1041000b101c000bfb2602077f017e230041306b22022400200241003602082002420137030002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020012d0000417f6a220341054b0d0002400240024002400240024020030e06000402030105000b2002107e2002280200200241086a22032802006a41013a00002003200328020041016a2204360200200241003602282002420137032020012d0001450d16200241206a107e2002280220200241206a41086a220528020022066a41003a00002005200641016a2206360200200241206a20064120102720052005280200220741206a22063602002007200228022022086a2205200141026a290000370000200541086a2001410a6a290000370000200541106a200141126a290000370000200541186a2001411a6a29000037000020022802242101200220042006102720032003280200220520066a360200200520022802006a20082006101e1a2001450d14200810020c140b2002107e2002280200200241086a22032802006a41063a00002003200328020041016a3602002002410036021820024201370310200141086a2d0000417f6a220341044b0d16024020030e05001210110f000b200241106a107e2002280210200241186a22032802006a41003a00002003200328020041016a2208360200200241206a2001410c6a10b80120022802202106200241106a200820022802282205102720032005200328020022086a360200200820022802106a20062005101e1a02402002280224450d00200610020b200141186a2802002101200241106a20032802004104102720032003280200220541046a360200200520022802106a20013600000c120b2002107e2002280200200241086a22032802006a41033a00002003200328020041016a3602002002410036022820024201370320200141086a2903004200510d16200241206a107e2002280220200241206a41086a220528020022066a41003a00002005200641016a2206360200200141106a2903002109200241206a20064108102720052005280200220641086a22013602002006200228022022056a200937000020022802242106200220032802002001102720032003280200220820016a360200200820022802006a20052001101e1a2006450d12200510020c120b2002107e2002280200200241086a22032802006a41053a00002003200328020041016a3602002002410036021820024201370310200141086a2d000022034103714101460d0520034102460d0320034103470d16200241106a107e2002280210200241186a220528020022036a41023a00002005200341016a22033602002001410c6a2802002106200241106a20034104102720052005280200220341046a2208360200200320022802106a2006360000200241106a20084101102720052005280200220641016a22033602002006200228021022056a200141096a2d00003a00000c060b2002107e2002280200200241086a22032802006a41023a00002003200328020041016a22063602002002410036022820024201370320200141086a2d000022054103714101460d0620054103460d0320054102470d16200241206a107e20022802202205200241286a220328020022016a41013a00002003200141016a22013602000c070b2002107e2002280200200241086a22032802006a41073a00002003200328020041016a22063602002002410036021820024201370310200141046a2d000022034103714101460d0820034102460d0720034103470d16200241106a107e2002280210200241106a41086a220528020022036a41023a00002005200341016a2203360200200241106a20034120102720052005280200220841206a22033602002008200228021022056a2208200141056a290000370000200841086a2001410d6a290000370000200841106a200141156a290000370000200841186a2001411d6a2900003700000c090b2002107e2002280200200241086a22032802006a41003a00002003200328020041016a3602002002410036022820024201370320200141106a2d00004102460d16200241206a107e2002280220200241206a41086a220328020022056a41003a00002003200541016a2207360200412010012203450d0f200341186a2206200141f0016a290000370000200341106a2208200141e8016a290000370000200341086a2204200141e0016a2900003700002003200141d8016a290000370000200141086a290300210941c00010012205450d0f20052003290000370000200541186a2006290000370000200541106a2008290000370000200541086a2004290000370000200310022005200937002041800110012203450d0f20032005290000370000200341386a2206200541386a290000370000200341306a2208200541306a290000370000200341286a2204200541286a290000370000200341206a200541206a290000370000200341186a200541186a290000370000200341106a200541106a290000370000200341086a200541086a29000037000020051002200341c0006a20014190026a290000370000200620014188026a290000370000200820014180026a2900003700002004200141f8016a29000037000020014191016a2105200141f1006a2108200141316a2106200141116a210402400240200141106a2d0000450d00200341c8006a41123a00002003200141d4016a2802003600492003200429000037004d200341d5006a200441086a290000370000200341dd006a200441106a290000370000200341e5006a200441186a29000037000041800210012201450d1120012003418001101e210120031002200141a5016a200641386a2900003700002001419d016a200641306a29000037000020014195016a200641286a2900003700002001418d016a200641206a29000037000020014185016a200641186a290000370000200141fd006a200641106a290000370000200141f5006a200641086a2900003700002001200629000037006d200120082900003700ad01200141b5016a200841086a290000370000200141bd016a200841106a290000370000200141c5016a200841186a29000037000041800410012206450d1120062001418002101e21032001100220034185026a200541386a290000370000200341fd016a200541306a290000370000200341f5016a200541286a290000370000200341ed016a200541206a290000370000200341e5016a200541186a290000370000200341dd016a200541106a290000370000200341d5016a200541086a290000370000200320052900003700cd010c010b200341c8006a41113a00002003200141d4016a2802003600492003200429000037004d200341d5006a200441086a290000370000200341dd006a200441106a290000370000200341e5006a200441186a29000037000041800210012201450d1020012003418001101e210120031002200141a5016a200641386a2900003700002001419d016a200641306a29000037000020014195016a200641286a2900003700002001418d016a200641206a29000037000020014185016a200641186a290000370000200141fd006a200641106a290000370000200141f5006a200641086a2900003700002001200629000037006d200120082900003700ad01200141b5016a200841086a290000370000200141bd016a200841106a290000370000200141c5016a200841186a29000037000041800410012206450d1020062001418002101e21032001100220034185026a200541386a290000370000200341fd016a200541306a290000370000200341f5016a200541286a290000370000200341ed016a200541206a290000370000200341e5016a200541186a290000370000200341dd016a200541106a290000370000200341d5016a200541086a290000370000200320052900003700cd010b200241206a2007418d021027200241206a41086a220120012802002203418d026a22013602002003200228022022056a2006418d02101e1a20061002200228022421062002200241086a22032802002001102720032003280200220820016a360200200820022802006a20052001101e1a2006450d0e200510020c0e0b200241106a107e2002280210200241186a220528020022036a41013a00002005200341016a22033602002001410c6a2802002101200241106a20034104102720052005280200220641046a22033602002006200228021022056a20013600000c020b200241206a107e20022802202205200241286a220328020022016a41023a00002003200141016a22013602000c030b200241106a107e2002280210200241106a41086a220328020022056a41003a00002003200541016a2208360200200241206a2001410c6a28020010d80120022802202106200241106a200820022802282205102720032005200328020022086a2204360200200820022802106a20062005101e1a02402002280224450d00200610020b200141106a2903002109200241106a200441081027200241106a41086a22012001280200220141086a22033602002001200228021022056a20093700000b200228021421062002200241086a22012802002003102720012001280200220820036a360200200820022802006a20052003101e1a2006450d0a200510020c0a0b200241206a107e2002280220200241206a41086a220628020022056a41003a00002006200541016a2205360200200241206a2005412010272002280220200628020022086a2205200141096a290000370000200541186a200141216a290000370000200541106a200141196a290000370000200541086a200141116a2900003700002006200841206a2205360200200141306a2903002109200241206a20054108102720022802202205200628020022016a20093700002006200141086a2201360200200328020021060b200228022421032002200620011027200241086a22062006280200220620016a360200200620022802006a20052001101e1a2003450d08200510020c080b200241106a107e2002280210200241106a41086a220628020022036a41013a00002006200341016a2203360200200241106a20034120102720062006280200220341206a2205360200200320022802106a2203200141056a290000370000200341086a2001410d6a290000370000200341106a200141156a290000370000200341186a2001411d6a290000370000200241106a20054101102720022802102205200628020022036a200141256a2d00003a00002006200341016a2203360200200241086a28020021060c010b200241106a107e2002280210200241106a41086a220528020022036a41003a00002005200341016a2203360200200241206a200141086a28020010d80120022802202108200241106a200320022802282201102720052001200528020022046a22033602002004200228021022056a20082001101e1a2002280224450d00200810020b200228021421012002200620031027200241086a22062006280200220620036a360200200620022802006a20052003101e1a2001450d05200510020c050b200241106a107e2002280210200241106a41086a22032802006a41043a00002003200328020041016a2205360200200241106a20054120102720032003280200220541206a2206360200200520022802106a220541186a200141216a290000370000200541106a200141196a290000370000200541086a200141116a2900003700002005200141096a290000370000200141306a2903002109200241106a20064108102720032003280200220541086a360200200520022802106a20093700002001412c6a2802002101200241106a20032802004104102720032003280200220541046a360200200520022802106a20013600000c030b200241106a107e2002280210200241186a22032802006a41023a00002003200328020041016a22053602002001410c6a2802002101200241106a20054104102720032003280200220541046a360200200520022802106a20013600000c020b200241106a107e2002280210200241186a22032802006a41033a00002003200328020041016a22053602002001410c6a2802002101200241106a20054104102720032003280200220541046a360200200520022802106a20013600000c010b200241106a107e2002280210200241106a41086a22032802006a41013a00002003200328020041016a22053602002001412c6a2802002106200241106a20054104102720032003280200220541046a360200200520022802106a2006360000200241106a20032802004120102720032003280200220541206a2206360200200520022802106a220541186a200141216a290000370000200541106a200141196a290000370000200541086a200141116a2900003700002005200141096a290000370000200141306a2802002105200241106a20064104102720032003280200220641046a360200200620022802106a2005360000200141346a2802002101200241106a20032802004104102720032003280200220541046a360200200520022802106a20013600000b20022802142106200228021021052002200241086a2201280200200241106a41086a2802002203102720012003200128020022086a360200200820022802006a20052003101e1a2006450d00200510020b20002002290300370200200041086a200241086a280200360200200241306a24000f0b101c000b41ec30103b000b419435103b000b41ec34103b000b41ac3f103b000b41943b103b000b41843e103b000b41ecc100103b000b08004194321054000b4b01017f02402002417f4c0d00024002402002450d002002100122030d01101c000b410121030b200320012002101e21012000200236020420002001360200200020023602080f0b102b000b05001041000ba10c03037f027e0c7f23004180016b22002400200041e0006a41086a220142003703002000420037036041c8084107200041e0006a1003200041306a41086a200129030037030020002000290360370330024002400240200041306a411041d02d410041001000417f460d002000420037036002400240200041306a4110200041e0006a41084100100041016a41084d0d002000200029036042017c370340200041e0006a41086a220242003703002000420037036041c8084107200041e0006a1003200041306a41086a2201200229030037030020002000290360370330200041306a4110200041c0006a41081004200142003703002000420037033041dd084107200041306a1003200041106a41086a2001290300370300200020002903303703100240200041106a411041d02d410041001000417f460d0020004200370360200041106a4110200041e0006a41084100100041016a41084d0d0220002903602103200041306a41086a220142003703002000420037033041dd084107200041306a1003200041e0006a41086a200129030037030020002000290330370360200041e0006a411010054201a74101470d050c040b4200a74101460d030c040b41c1214133102d000b41c1214133102d000b41f4214122102d000b102e210420002003370340200041e0006a41086a220142003703002000420037036041cf084107200041e0006a1003200041306a41086a2202200129030037030020002000290360370330200041306a4110200041c0006a4108100420002004370340200142003703002000420037036041d6084107200041e0006a10032002200129030037030020002000290360370330200041306a4110200041c0006a410810040b2000102f2000280200210502400240024020002802082201450d002001410574210620052107410021080340410810012201450d022000200136026020004208370264200041e0006a410041081027200041e0006a41086a22012001280200220241086a360200200220002802606a42f3cacdd3e38d9eba3a370000200041c0006a41086a2202200128020036020020002000290360370340412010012209450d022000200936026020004220370264200041e0006a41004120102720012001280200220a41206a2209360200200a2000280260220b6a220a2007290000370000200a41086a200741086a290000370000200a41106a200741106a290000370000200a41186a200741186a2900003700002000280264210c200041c0006a2002280200200910272000280240220a2002280200220d6a200b2009101e1a2002200d20096a220d3602000240200c450d00200b10020b2000280244210c200041306a41086a2209420037030020004200370330200a200d200041306a1003200041106a41086a220b20092903003703002000200029033037031002400240200041106a411041d02d410041001000417f460d00200041e0006a41186a220e4200370300200041e0006a41106a220f42003703002001420037030020004200370360200041106a4110200041e0006a4120410010002210417f460d052010411f4d0d05200041c0006a41186a200e290300370300200041c0006a41106a200f29030037030020022001290300370300200020002903603703402009420037030020004200370330200a200d200041306a10032001200929030037030020002000290330370360200041e0006a41101005410121090c010b410021090b200041106a41186a220d200041c0006a41186a290300370300200041106a41106a220e200041c0006a41106a290300370300200b2002290300370300200020002903403703100240200c450d00200a10020b02402009450d00200041e0006a41186a200d290300370300200041e0006a41106a200e2903003703002001200b29030037030020002000290310370360200041c0006a10302000280240220920022802001031210102402000280244450d00200910020b200120084d0d00200041c0006a20081032200028024022012002280200200041e0006a412010042000280244450d00200110020b200741206a2107200841016a2108200641606a22060d000b0b02402000280204450d00200510020b20004180016a24000f0b101c000b41c1214133102d000b080041b4321054000b9f0102027f017e230041206b22002400200041106a41086a220142003703002000420037031041d12d4107200041106a1003200041086a20012903003703002000200029031037030002402000411041d02d410041001000417f460d0020004200370310024020004110200041106a41084100100041016a41084d0d0020002903102102200041206a240020020f0b41c1214133102d000b41f4214122102d000bab0101027f230041306b22012400200141206a41086a220242003703002001420037032041e4084107200141206a1003200141086a200229030037030020012001290320370300024002402001411041d02d410041001000417f460d002001421037021420012001360210200141206a200141106a103a20012802202202450d012000200129022437020420002002360200200141306a24000f0b41f4214122102d000b41c1214133102d000bd60101047f230041206b220124000240410610012202450d002001200236021020014206370214200141106a4100410610272001280210200128021822036a220441002800c12d360000200141086a2202200341066a2203360200200441046a41002f00c52d3b0000200120012903103703002001200336021820012002280200410310272000200129030037020020022002280200220341036a2204360200200320012802006a220241002f00ee2e3b0000200041086a2004360200200241026a41002d00f02e3a0000200141206a24000f0b101c000b6001027f230041106b2202240041002103024002402000200141d02d410041001000417f460d002002410036020c200020012002410c6a41044100100041016a41044d0d01200228020c21030b200241106a240020030f0b41eb1a4133102d000bc30101047f230041206b220224000240410610012203450d002002200336021020024206370214200241106a4100410610272002280210200228021822046a220541002800c12d360000200241086a2203200441066a2204360200200541046a41002f00c52d3b00002002200229031037030020022004360218200220032802004104102720032003280200220441046a36020020002002290300370200200420022802006a2001360000200041086a2003280200360200200241206a24000f0b101c000b810301047f230041306b220224000240024002400240024002400240200128020022032001280204460d002001200341186a36020020032802082201417f4c0d06200328020021042001450d012001100122050d020c030b20004100360200200241306a24000f0b410121050b200220013602242002200536022020024100360228200241206a41002001102720022002280228220520016a360228200520022802206a20042001101e1a200241106a20022802283602002002200229032037030820032802142201417f4c0d03200328020c21032001450d012001100122040d020b101c000b410121040b200220013602242002200436022020024100360228200241206a41002001102720022002280228220420016a360228200420022802206a20032001101e1a200241146a220141086a200228022836020020012002290320370200200041106a200241086a41106a290300370200200041086a200241086a41086a29030037020020002002290308370200200241306a24000f0b1019000bd55a09017f017e017f017e067f017e177f047e027f230041f0026b220024001035102e2101200041c8026a41086a22024200370300200042003703c802418a264107200041c8026a100320004198026a41086a2002290300370300200020002903c802370398020240024002400240024002400240024002400240024002400240024020004198026a411041d02d410041001000417f460d00200042003703680240024020004198026a4110200041e8006a41084100100041016a41084d0d00200029036822034200510d0320012003824200520d0a200041f8016a103620002802f80121080240024002402000280280022209450d00200041e8006a2008280230103720002802702207450d072008200941d8006c6a2104200841d8006a2102200041f8006a35020021032000290368210a02402000280274450d00200710020b20022004460d01200a20037e2103200941d8006c41a87f6a210b41002105200041f0006a210c200041f8006a210d200041f4006a210e41012104200821060340200041e8006a200241306a2802001037200c2802002207450d052000290368200d3502007e210a0240200e280200450d00200710020b2003200a2003200a5622071b21032005200420071b21052006200220071b2106200441016a2104200241d8006a2102200b41a87f6a220b0d000b20060d022009450d00200941d8006c210420082102034020021038200241d8006a2102200441a87f6a22040d000b0b20002802fc01450d0c200810020c0c0b410021050b200920054d0d06200041e8006a2008200541d8006c6a220241d800101e1a200220082009417f6a220441d8006c6a220741d80010391a2007200041e8006a41d800101e2102200041f8016a41086a2004360200200041e8006a41086a22042002410c6a290200370300200041e8006a41106a2207200241146a290200370300200041e8006a41186a22052002411c6a290200370300200041e8006a41206a2206200241246a290200370300200041e8006a41286a220b2002412c6a280200360200200020022902043703682002280200220c4106460d07200041c0016a41086a220d2004290300370300200041c0016a41106a22042007290300370300200041c0016a41186a22072005290300370300200041c0016a41206a22052006290300370300200041c0016a41286a2206200b280200360200200020002903683703c001200241046a28022c2102200041386a41286a2006280200360200200041386a41206a2005290300370300200041386a41186a2007290300370300200041386a41106a2004290300370300200041386a41086a200d290300370300200020002903c001370338410810012204450d0b200020043602682000420837026c200041e8006a4100410810272000280268200028027022046a42e4cab5d3c3ac99b83a3700002000200441086a360270200041c0016a41086a2000280270360200200020002903683703c001410410012204450d0b200020043602682000420437026c200041e8006a41004104102720002802682207200028027022046a20023600002000200441046a2202360270200028026c2105200041c0016a20002802c8012002102720002802c001220420002802c80122066a20072002101e1a2000200620026a22023602c80102402005450d00200710020b20002802c401210620004198026a41086a2207420037030020004200370398022004200220004198026a1003200041e8006a41086a20072903003703002000200029039802370368410021070240200041e8006a411041d02d410041001000417f460d002000200041e8006a3602082000411036020c200042003703c00120004100200041e8006a4110200041c0016a41084100100022072007417f461b2207410820074108491b360210200741074d0d0620002903c0012103200041c0016a200041086a103a20002802c0012207450d06200041c0016a41086a280200210520002802c401210b20004198026a41086a220d420037030020004200370398022004200220004198026a1003200041c8026a41086a200d29030037030020002000290398023703c802200041c8026a411010052006450d0a0c090b20060d080c090b41c1214133102d000b4198264132102d000b41f4214122102d000b41c43f103b000b4198264132102d000b41c1214133102d000b41dc3f20052009103c000b41ec3f103b000b200410020b024002402007450d0002402005450d002005410574210420072102034020022003103d200241206a2102200441606a22040d000b0b200041e8006a41086a2202200041f8016a41086a280200360200200020002903f801370368200041e8006a103e20002802682105024020022802002202450d00200241d8006c210420052102034020021038200241d8006a2102200441a87f6a22040d000b0b0240200028026c450d00200510020b200041c8026a41086a22024200370300200042003703c80241f7264107200041c8026a100320004198026a41086a2002290300370300200020002903c8023703980220004198026a411041d02d410041001000417f460d0120004200370368024020004198026a4110200041e8006a41084100100041016a41084d0d0020002903682103200041f4006a200041c0006a290300370200200041fc006a200041c8006a29030037020020004184016a200041d0006a2903003702002000418c016a200041d8006a29030037020020004194016a200041e0006a2802003602002000200c3602682000200029033837026c200320017c200041e8006a4100103f200b450d03200710020c030b41c1214133102d000b41ca26412d102d000b41f4214122102d000b200020013703f801200041c8026a41086a22024200370300200042003703c80241fe264107200041c8026a100320004198026a41086a2002290300370300200020002903c80237039802024002400240024020004198026a411041d02d410041001000417f460d00200041003602680240024020004198026a4110200041e8006a41044100100041016a41044d0d0020002802682104200041c8026a41086a22024200370300200042003703c8024185274107200041c8026a100320004198026a41086a2002290300370300200020002903c8023703980220004198026a411041d02d410041001000417f460d032000410036026820004198026a4110200041e8006a41044100100041016a41044d0d012000200028026822053602cc02200041003a00d402200020043602c8022000200041f8016a3602d0020240200420054f0d002000200441016a22023602c802200041f0006a210602400340200041e8006a20041040200628020022074106470d01200220054f0d022000200241016a22073602c80220022104200721020c000b0b200041386a41086a2205200041fc006a2206290200370300200041386a41106a220b20004184016a220c290200370300200041386a41186a220d2000418c016a220e290200370300200041386a41206a220820004194016a2209290200370300200041386a41286a220f2000419c016a221028020036020020002000290274370338200041a0016a2d0000211120002903682103200041b8026a41026a221220004198026a41026a2d00003a0000200020002f0098023b01b802200041e8006a410c6a2202200029033837020020062005290300370200200c200b290300370200200e200d290300370200200920082903003702002010200f280200360200200041a7016a20122d00003a00002000200736027020002003370368200020043602a001200020113a00a401200020002f01b8023b00a5010240200320002903f801520d00200041c0016a41306a200241306a280200360200200041c0016a41286a200241286a290200370300200041c0016a41206a200241206a290200370300200041c0016a41186a200241186a290200370300200041c0016a41106a200241106a290200370300200041c0016a41086a200241086a290200370300200020022902003703c00120074106460d010c060b200041c8026a410c6a41013a0000200041e8006a41086a10384106210741064106470d050b4108211341002102410021140c050b41c1214133102d000b41c1214133102d000b41f4214122102d000b41f4214122102d000b200041e8006a41306a2202200041c0016a41306a280200360200200041e8006a41286a2204200041c0016a41286a290300370300200041e8006a41206a2205200041c0016a41206a290300370300200041e8006a41186a2206200041c0016a41186a290300370300200041e8006a41106a220b200041c0016a41106a290300370300200041e8006a41086a220c200041c0016a41086a290300370300200020002903c00137036841c00010012213450d0120132007360208201320033703002013200029036837020c201341146a200c2903003702002013411c6a200b290300370200201341246a20062903003702002013412c6a2005290300370200201341346a20042903003702002013413c6a2002280200360200200041086a41086a200041c8026a41086a290300370300200020002903c802370308024020002d00140d0020002802082202200028020c4f0d002000200241016a360208200041f0006a210402400340200041e8006a20021040200428020022074106470d0120002802082202200028020c4f0d022000200241016a3602080c000b0b200041386a41086a2205200041fc006a2206290200370300200041386a41106a220b20004184016a220c290200370300200041386a41186a220d2000418c016a220e290200370300200041386a41206a220820004194016a2209290200370300200041386a41286a220f2000419c016a221028020036020020002000290274370338200041a0016a2d0000211120002903682103200041b8026a41026a221220004198026a41026a2d00003a0000200020002f0098023b01b802200041e8006a410c6a2204200029033837020020062005290300370200200c200b290300370200200e200d290300370200200920082903003702002010200f280200360200200041a7016a20122d00003a00002000200736027020002003370368200020023602a001200020113a00a401200020002f01b8023b00a5010240024020032000280210290300520d00200041c0016a41306a200441306a280200360200200041c0016a41286a200441286a290200370300200041c0016a41206a200441206a290200370300200041c0016a41186a200441186a290200370300200041c0016a41106a200441106a290200370300200041c0016a41086a200441086a290200370300200020042902003703c0014106210b20074106470d010c020b200041086a410c6a41013a0000200041e8006a41086a1038410621074106210b41064106460d010b200041e8006a41086a2106200041a5016a2111200041e8006a410c6a210d410121144101210202400340200041e8006a41306a2205200041c0016a41306a2212280200360200200041e8006a41286a220c200041c0016a41286a221c290300370300200041e8006a41206a2209200041c0016a41206a221e290300370300200041e8006a41186a220f200041c0016a41186a221d290300370300200041e8006a41106a2210200041c0016a41106a22202903003703002006200041c0016a41086a2215290300370300200020002903c001370368024020022014470d00201441016a2204201449221b0d02200e2014410174221f20082004201b1b22082008201f491b2204ad420686220aa7200a422088a7221b1b220e4100480d02201b4100470d02024002402014450d00200e1001221b450d07201b2013200e2014200b74221f201f200e4b1b101e211b20131002201b21130c010b200e10012213450d060b200421140b20132002200b746a22042007360208200420033703002004413c6a2005280200360200200441346a200c2903003702002004412c6a2009290300370200200441246a200f2903003702002004411c6a2010290300370200200441146a20062903003702002004410c6a2000290368370200200241016a2102200041086a410c6a22092d00000d0320002802082205200028020c220c4f0d032000200541016a220436020802400340200041e8006a2005104020062802002207200b470d012004200c4f0d052000200441016a220736020820042105200721040c000b0b200041386a41086a221f200d41086a2204290200370300200041386a41106a2221200d41106a220c290200370300200041386a41186a2219200d41186a220f290200370300200041386a41206a2216200d41206a2210290200370300200041386a41286a221a200d41286a221b2802003602002000200d290200370338200041a0016a22172d000021182000290368210a200041b8026a41026a222720004198026a41026a2d00003a0000200020002f0098023b01b8022006200736020020172005360200200041e8006a413c6a20183a0000200d20002903383702002004201f290300370200200c2021290300370200200f201929030037020020102016290300370200201b201a280200360200201120002f01b8023b0000201141026a20272d00003a00002000200a3703680240200a200041086a41086a280200290300520d002012200d41306a280200360200201c201b290200370300201e2010290200370300201d200f2902003703002020200c290200370300201520042902003703002000200d2902003703c001200a21032007200b470d010c040b200941013a000020061038410621074106200b470d000c030b0b1041000b41012114410121020b201320024106746a21152002450d01200041386a41086a2116200041386a4104722110200041a7026a2117200041f8016a4104722118200041c0016a41186a2119200041c9016a211a200041c0016a41086a2107200041e8006a4104722105200041e8006a41286a211b200041e8006a41206a2112200041e8006a41106a211c2013210f0340200f22022802082111201b200241346a28020036020020122002412c6a290200370300200041e8006a41186a221d200241246a290200370300201c2002411c6a290200370300200041e8006a41086a221e200241146a29020037030020002002410c6a290200370368200241c0006a210f20114106460d0320022802382109200041086a41086a2204201e290300370300200041086a41106a2206201c290300370300200041086a41186a220b201d290300370300200041086a41206a220c2012290300370300200041086a41286a220d201b2802003602002000200029036837030820022d003c211f20102000290308370200201041086a2004290300370200201041106a2006290300370200201041186a200b290300370200201041206a200c290300370200201041286a200d28020036020020002011360238200041f8016a2009104220002802f801212002400240024002400240200041f8016a41086a22212802002202450d002002410574210d420021034200210a20202102034020021043210120021044212220052002290000370000200541086a200241086a290000370000200541106a200241106a290000370000200541186a200241186a29000037000020002009360268410810012204450d07200020043602c001200042083702c401200041c0016a41004108102720072007280200220441086a360200200420002802c0016a42e4cab5d3e3ee9bba3a370000200041c8026a41086a22042007280200360200200020002903c0013703c802200041c0016a200041e8006a104520002802c401210e20002802c001210c200041c8026a200428020020072802002206102720002802c802220b200428020022086a200c2006101e1a2004200820066a22083602000240200e450d00200c10020b20002802cc02210620044200370300200042003703c802200b2008200041c8026a100320004198026a41086a2004290300370300200020002903c8023703980202400240024020004198026a411041d02d410041001000417f470d004102210420060d010c020b200041003a00c00120004198026a4110200041c0016a41014100100041016a41014d0d0520002d00c00121042006450d010b200b10020b200441ff01714102460d02200241206a21024200202220017c2201200441017122041b200a7c210a2001420020041b20037c2103200d41606a220d0d000b20002802fc01450d040c030b4200210a4200210320002802fc010d020c030b41f90941e000102d000b41c1214133102d000b202010020b0240200041c8026a41086a22064200370300200042003703c80241f9204107200041c8026a100320004198026a41086a220b2006290300370300200020002903c802370398020240024002400240024020004198026a411041d02d410041001000417f460d0020004200370368024020004198026a4110200041e8006a41084100100041016a41084d0d0020002903682101200910460240200a20037c22224202882223500d0020232022510d004100210402400340200441026a21022022200441046a413e71ad882223500d012002210420232022520d000b0b20222002413e71ad88420052ad212302402002450d0003402023420186222320234201842223202320237e202241002002417e6a2204200420024b1b2202413f71ad88561b212320020d000b0b20014202882222500d040c030b2022420052ad21232001420288222250450d020c030b41c1214133102d000b41f4214122102d000b20222001510d004100210402400340200441026a21022001200441046a413e71ad882222500d012002210420222001520d000b0b20012002413e71ad88420052ad212202402002450d0003402022420186222220224201842222202220227e200141002002417e6a2204200420024b1b2202413f71ad88561b212220020d000b0b2023500d020c010b2001420052ad21222023500d010b02400240024002400240201f41037122024101460d0020024102470d012003200a580d050c040b2022500d01200a202280222420032023802225540d0303402023210120252024540d05200a202282212320032001822224500d052023500d042022202380212520222103202421222001210a2001202480222420255a0d000c040b0b2022500d01200a202380222420032022802225540d0203402023210120252024540d04200a200182212520032022822223500d042025500d03202220238021242022210a20012103202521222024200120258022255a0d000c030b0b419c31103b000b419c31103b000b200041c0016a41286a200041386a41286a290300370300200041c0016a41206a200041386a41206a2903003703002019200041386a41186a290300370300200041c0016a41106a220c200041386a41106a29030037030020072016290300370300200020002903383703c00102400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002802c001220e417f6a220241044b0d000240024002400240024020020e050004020301000b200728020022024101460d0720024102470d13102c0c210b200c2903002103200728020022024101460d0420024102470d132000200337036820064200370300200042003703c80241e122410a200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410810040c200b200020002902c40122033703f8012003422088a721022003a72204410371220c4101460d04200c4102470d1320021046200441ff01714101470d1f201810220c1f0b20004194026a41026a220d201a41026a2d00003a00002021201941086a290300370300200041f8016a41106a2208201941106a2903003703002000201a2f00003b019402200020192903003703f80120072d0000410771417f6a220241034b0d13200c2903002103200041c0016a410c6a2802002104024020020e04000a0709000b2000200436026820064200370300200042003703c802419b164107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410410040c1a0b2007280200410771417f6a220241034b0d13200c2903002103024020020e04000b070a000b2000200337036820064200370300200042003703c80241cf1d4107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410810040c1d0b200c2802002111200041c0016a410c6a280200211e2007280200210820002802c401410371221d4101460d03201d4102470d1302402011450d002008201141186c22046a210d2008210203402002280200200241086a2802002002410c6a280200200241146a2802001004200241186a2202200d470d000b2011450d002008210203400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241186a2102200441686a22040d000b0b0240201e450d00200810020b41002104201d4101470d194100210441000d19201e450d1920081002200e41077122024103470d1a0c1b0b2000200337036820064200370300200042003703c802418d23410b200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410810040c1b0b102e210a20064200370300200042003703c80241f7264107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a411041d02d410041001000417f460d122000420037036820004198026a4110200041e8006a41084100100041016a41084d0d0b20002903682101201b200241286a2903003703002012200241206a290300370300201d200241186a290300370300201c200241106a290300370300201e200241086a290300370300200020022903003703682001200a7c200041e8006a2003420888a7103f200210020c1a0b2000200c29030037036820064200370300200042003703c80241dd084107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410810040c190b41942f4105200820111004201e450d18200810020c180b2000200337036820064200370300200042003703c80241a2164107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410810040c130b2000200041c0016a410c6a28020036026820064200370300200042003703c80241de1d4107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410410040c160b2000200337036820064200370300200042003703c80241a9164107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410810040c110b20004198026a41036a200436000020004198026a41076a2003370000201720002903f80137000020004198026a41026a200d2d00003a0000201741086a2021290300370000201741106a20082d00003a0000200020002f0194023b019802200041e8006a1047200028026c2126200028026821270240201e2802002202450d00200241286c220241b07f6a2104200241586a210d202721020340200241086a2903002103200241106a290300210a200241186a2903002101200229030021222012200241206a290300370300201d2001370300201c200a370300201e200337030020002022370368200041e8006a20004198026a412010060d04200241286a2102200441586a2104200d41586a220d4158470d000b0b41002102410821112026450d03202710024100210d0c0f0b1048102c0c130b2000200337036820064200370300200042003703c80241d21e4107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a410810040c120b200041c8026a41206a22202012290300370300200041c8026a41186a221f201d290300370300200041c8026a41106a2221201c2903003703002006201e290300370300200020002903683703c802412810012211450d15201120002903c802370300201141206a2020290300370300201141186a201f290300370300201141106a2021290300370300201141086a2006290300370300200020113602b80220004281808080103702bc02200d450d01200241286a21024101210d03402012200241206a290300370300201d200241186a290300370300201c200241106a290300370300201e200241086a290300370300200020022903003703680240200041e8006a20004198026a41201006450d0020202012290300370300201f201d2903003703002021201c2903003703002006201e290300370300200020002903683703c80220122020290300370300201d201f290300370300201c2021290300370300201e2006290300370300200020002903c8023703680240200d20002802bc02470d00200041b8026a200d4101104920002802b80221110b2011200d41286c6a22082000290368370300200841206a2012290300370300200841186a201d290300370300200841106a201c290300370300200841086a201e290300370300200041b8026a41086a200d41016a220d3602000b02402004450d00200241286a2102200441586a21040c010b0b2026450d0b0c0a0b4100210d0c0b0b4101210d20260d080c090b41c1214133102d000b418431103b000b419c3e103b000b419cc000103b000b41ac35103b000b41f43b103b000b419cc200103b000b41f4214122102d000b202710020b20002802bc0221020b201e200d3602002000200236026c20002011360268200041e8006a104a2002450d00201110020b410121040b200e41077122024103460d010b20020d012004450d0120002802c4012202450d01024020024101470d00200041c0016a410c6a280200450d02200728020010020c020b2007280200210d0240200c2802002202450d00200241186c2104200d210203400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241186a2102200441686a22040d000b0b200041c0016a410c6a280200450d01200d10020c010b41000d0020002d00c40141ff01714101470d002007104b0b2000200941016a36026820064200370300200042003703c80241fe264107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a41041004200f2015470d020c010b2000200941016a36026820064200370300200042003703c80241fe264107200041c8026a1003200b2006290300370300200020002903c8023703980220004198026a4110200041e8006a41041004024002400240201141077122024103460d0020020d02200028023c2202450d0220024101470d01200041386a410c6a280200450d0220162802001002200f2015470d040c030b20002d003c4101470d0120161022200f2015470d030c020b201628020021060240200041386a41106a2802002202450d00200241186c21042006210203400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241186a2102200441686a22040d000b0b200041386a410c6a280200450d00200610020b200f2015470d010b0b2015220f2015460d040c030b101c000b2013210f0b200f2015460d010b200041e8006a41086a211c200041e8006a410c6a2102200041e8006a41306a2105200041e8006a41286a2106200041e8006a41206a210b200041e8006a41186a210c200041e8006a41106a210d0340200f41086a2802002104200f29030021032005200f413c6a2802003602002006200f41346a290200370300200b200f412c6a290200370300200c200f41246a290200370300200d200f411c6a290200370300200041e8006a41086a2207200f41146a2902003703002000200f410c6a29020037036820044106460d01200041c0016a41306a220e2005280200360200200041c0016a41286a22082006290300370300200041c0016a41206a2209200b290300370300200041c0016a41186a2210200c290300370300200041c0016a41106a2211200d290300370300200041c0016a41086a22122007290300370300200020002903683703c00120072004360200200220002903c001370200200241086a2012290300370200200241106a2011290300370200200241186a2010290300370200200241206a2009290300370200200241286a2008290300370200200241306a200e28020036020020002003370368201c1038200f41c0006a220f2015470d000b0b02402014450d00201310020b102e2101200041e8006a41086a220242003703002000420037036841ba1d4107200041e8006a1003200041c8026a41086a22042002290300370300200020002903683703c802420021030240024002400240024002400240024002400240200041c8026a411041d02d410041001000417f460d0020004200370368200041c8026a4110200041e8006a41084100100041016a41084d0d01200029036821030b200242003703002000420037036841c11d4107200041e8006a100320042002290300370300200020002903683703c802200041c8026a411041d02d410041001000417f460d0320004200370368024002400240200041c8026a4110200041e8006a41084100100041016a41084d0d002000290368210a200041e8006a41086a220242003703002000420037036841cf084107200041e8006a1003200041c8026a41086a2002290300370300200020002903683703c802200041c8026a411041d02d410041001000417f460d0720004200370368200041c8026a4110200041e8006a41084100100041016a41084d0d012000290368200a7e22224200510d084200210a0240200120037d2022824200520d0010480b102e2103200041e8006a41086a220242003703002000420037036841d6084107200041e8006a1003200041c8026a41086a22042002290300370300200020002903683703c80202400240200041c8026a411041d02d410041001000417f460d0020004200370368200041c8026a4110200041e8006a41084100100041016a41084d0d06200029036821014201210a0c010b0b200242003703002000420037036841cf084107200041e8006a100320042002290300370300200020002903683703c802200041c8026a411041d02d410041001000417f460d0920004200370368200041c8026a4110200041e8006a41084100100041016a41084d0d02200029036822224200510d0a0240200342002001200a501b7d2022824200520d00102c0b200041c8026a41086a22024200370300200042003703c80241ad0b4107200041c8026a100320004198026a41086a2002290300370300200020002903c8023703980220004198026a411041d02d410041001000417f460d05200041003a006820004198026a4110200041e8006a41014100100041016a41014d0d0b20002d00682102200041c8026a41086a22044200370300200042003703c80241ad0b4107200041c8026a1003200041e8006a41086a2004290300370300200020002903c802370368200041e8006a411010052002450d05200041f0026a24000f0b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c432103b000b41f4214122102d000b41f4214122102d000b41ac3b103b000b41f4214122102d000b41b431103b000b41c1214133102d000bdd91010b017f017e017f017e057f017e047f017e187f027e027f230041f0026b22002400102e2101200041286a41086a220242003703002000420037032841b0164107200041286a1003200041086a41086a200229030037030020002000290328370308024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200041086a411041d02d410041001000417f460d00200042003703900202400240200041086a411020004190026a41084100100041016a41084d0d0020002903900222034200510d0320012003824200520d1d200041286a41086a2202420037030020004200370328419b164107200041286a1003200041086a41086a200229030037030020002000290328370308200041086a411041d02d410041001000417f460d052000410036029002200041086a411020004190026a41044100100041016a41044d0d012000280290022202450d1d200041e0016a1047200041286a41086a220442003703002000420037032841b00f4107200041286a1003200041086a41086a200429030037030020002000290328370308410021040240200041086a411041d02d410041001000417f460d002000200041086a360290012000411036029401200042003703900220004100200041086a411020004190026a41084100100022042004417f461b2204410820044108491b220d36029801200441074d0d05200029039002210e200041003602900220004198016a4100200041086a411020004190026a4104200d100022042004417f461b2204410420044104491b200d6a360200200441034d0d05200028029002210420004190026a20004190016a103a200028029002220f450d0520002802e801220d20046a2000290294022203422088a76b211002402003a7450d00200f10020b20102002490d080c070b102e210e20002802e801220d20024f0d060c070b41c1214133102d000b41c1214133102d000b41f4214122102d000b41ac39103b000b41c1214133102d000b41f4214122102d000b0240200420024f0d00200d200420026b6a2202200d4f0d0820002802e001200241286c6a290320210e0c010b200041286a41086a220242003703002000420037032841a9164107200041286a1003200041086a41086a200229030037030020002000290328370308200041086a411041d02d410041001000417f460d082000420037039002200041086a411020004190026a41084100100041016a41084d0d01200029039002200e7c210e0b200041286a41086a220242003703002000420037032841b0164107200041286a1003200041086a41086a200229030037030020002000290328370308200041086a411041d02d410041001000417f460d03200042003703900202400240200041086a411020004190026a41084100100041016a41084d0d0020002903900222034200510d06200e20037c427f7c220e200e2003827d2103024020002802e401450d0020002802e00110020b20032001520d17200041e8006a1047200041286a41086a2202420037030020004200370328419b164107200041286a1003200041086a41086a200229030037030020002000290328370308200041086a411041d02d410041001000417f460d072000410036029002200041086a411020004190026a41044100100041016a41044d0d012000280290022115102e21030240024020002802702214450d002000280268220241206a2903002003520d0020004190026a41186a2204200241186a29000037030020004190026a41106a220d200241106a29000037030020004190026a41086a2210200241086a290000370300200020022900003703900241201001220f450d12200241286a2102200f200029039002370000200f41186a2004290300370000200f41106a200d290300370000200f41086a20102903003700002000200f3602e00120004281808080103702e401412021104101210d0240201441286c41586a2211450d000340200241206a2903002003520d01200041c8006a41186a200241186a2204290000370300200041c8006a41106a200241106a2216290000370300200041c8006a41086a200241086a22172900003703002000200229000037034820004190016a41186a2218200429000037030020004190016a41106a2219201629000037030020004190016a41086a2216201729000037030020002002290000370390010240200d20002802e401470d00200041e0016a200d410110860120002802e001210f0b200241286a2102200f20106a2204200029039001370000200441186a2018290300370000200441106a2019290300370000200441086a2016290300370000200041e0016a41086a200d41016a220d360200201041206a2110201141586a22110d000b0b20002802e40121022014200d6b2015490d010c160b410021024101210f4100210d201441006b20154f0d150b200041286a41086a220442003703002000420037032841a2164107200041286a1003200041086a41086a200429030037030020002000290328370308200041086a411041d02d410041001000417f460d0a2000420037039002200041086a411020004190026a41084100100041016a41084d0d03200029039002210e20004190026a41106a2002360200200041a4026a200d3602002000200d20146b20156a2219360298022000200e20037c2203370390022000200f36029c02200041003602e801200042013703e001200041e0016a41004108102720002802e00120002802e80122046a20033700002000200441086a22043602e801200041e0016a20044104102720002802e00120002802e80122046a20193600002000200441046a22103602e80120004190016a2000419c026a10a201200028029001210d200041e0016a2010200028029801220410272000200420002802e80122116a22163602e801201120002802e00122106a200d2004101e1a0240200028029401450d00200d10020b200041286a41086a220442003703002000420037032841b00f4107200041286a1003200041086a41086a200429030037030020002000290328370308200041086a4110201020161004024020002802e401450d00201010020b02402002450d00200f10020b41082118200041286a41086a220242003703002000420037032841c50f4107200041286a1003200041086a41086a200229030037030020002000290328370308410021140240024002400240200041086a411041d02d410041001000417f460d0020004210370294012000200041086a3602900120004190026a20004190016a103a2000280290022215450d1341082118200028029402211b20004190026a41086a2802002202450d0120024105744105752214ad4203862203a722044100480d122003422088a74100470d12200410012218450d152002410574220d41606a410576211020182104201521020340200420021043200210447c370300200441086a2104200241206a2102200d41606a220d0d000b201041016a21020c030b410121154100211b0c010b410021140b410021020b2000410036029802200042013703900220004190026a41004104102720002802900220002802980222046a20023600002000200441046a3602980220004190016a41086a2204200028029802360200200020002903900237039001024002402002450d002002410374210f2018210d0340200d2903002103410810012202450d152000200236029002200042083702940220004190026a41004108102720004190026a41086a22022002280200221141086a2202360200201120002802900222106a2003370000200028029402211120004190016a2004280200200210272000280290012217200428020022166a20102002101e1a2004201620026a220236020002402011450d00201010020b200d41086a210d200f41786a220f0d000c020b0b200028029801210220002802900121170b2000280294012104200041286a41086a220d4200370300200042003703284181114107200041286a1003200041086a41086a200d29030037030020002000290328370308200041086a411020172002100402402004450d00201710020b02402014450d00201810020b200041286a41086a220242003703002000420037032841b7164107200041286a1003200041086a41086a200229030037030020002000290328370308200041086a411041d02d410041001000417f460d0b2000410036029002200041086a411020004190026a41044100100041016a41044d0d042000280290022102200041a8016a4200370300200041a0016a420037030020004198016a42003703002000420037039001200220196a220dad42287e2203422088a70d0c2003a72202417f4c0d0d4108210402402002450d00200210012204450d140b2000200d3602e401200020043602e001200041003602e80120004190026a41186a221020004190016a41186a29030037030020004190026a41106a220f20004190016a41106a29030037030020004190026a41086a20004190016a41086a290300370300200020002903900137039002200041e0016a200d10850120002802e00120002802e801221141286c6a2102024002400240200d4102490d0041012104034020024200370300200241206a2010290300370300200241186a200f290300370300200241106a20004190026a41086a290300370300200241086a200029039002370300200241286a2102200441016a2204200d490d000b201120046a417f6a21110c010b200d450d010b200220002903900237030820024200370300200241106a20004198026a290300370300200241186a20004190026a41106a290300370300200241206a20004190026a41186a290300370300201141016a21110b200041e0016a41086a2202201136020020004190026a41086a2002280200360200200020002903e0013703900220004190026a10b7010240200028029402450d0020002802900210020b201b450d15201510020c150b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41f4214122102d000b41c439103b000b41f4214122102d000b41cc362002200d103c000b41f4214122102d000b41f4214122102d000b41f4214122102d000b105e000b105f000b1041000b41c1214133102d000b41d900212a0c070b41d900212a0c060b41d900212a0c050b41d900212a0c040b2002450d00200f1002200028026c0d010c020b200028026c450d010b200028026810020b200041286a41086a220242003703002000420037032841b00f4107200041286a1003200041086a41086a20022903003703002000200029032837030802400240200041086a411041d02d410041001000417f460d002000200041086a360290012000411036029401200042003703900220004100200041086a411020004190026a41084100100022022002417f461b2202410820024108491b220436029801200241074d0d0b2000290390022103200041003602900220004198016a4100200041086a411020004190026a41042004100022022002417f461b22024104200241044922021b20046a36020020020d0b20004190026a20004190016a103a2000280290022205450d0b200028029402210620032001520d01200041286a41086a22024200370300200042003703284181114107200041286a1003200041086a41086a2204200229030037030020002000290328370308200041086a41101005200442003703002000420037030841b00f4107200041086a10032002200429030037030020002000290308370328200041286a411041d02d410041001000417f460d082000200041286a360290012000411036029401200042003703900220004100200041286a411020004190026a41084100100022022002417f461b22024108200241084922041b22023602980120040d09200041003602900220004198016a4100200041286a411020004190026a41042002100022042004417f461b2204410420044104491b20026a360200200441034d0d09200028029002210720004190026a20004190016a103a2000280290022208450d0920002902940221094108210a200041086a41086a220242003703002000420037030841b00f4107200041086a1003200041286a41086a2204200229030037030020002000290308370328200041286a411010052002420037030020004200370308418f114107200041086a100320042002290300370300200020002903083703284100210b02400240200041286a411041d02d410041001000417f460d0020004210370294012000200041286a3602900120004190026a20004190016a10b601200028029002220a450d052000290294022103200041086a41086a2202420037030020004200370308418f114107200041086a1003200041286a41086a200229030037030020002000290308370328200041286a411010052003422088a7210b2003a7210c0c010b4100210c0b102e2103200041286a41086a220242003703002000420037032841a9164107200041286a1003200041086a41086a200229030037030020002000290328370308200041086a411041d02d410041001000417f460d072000420037039002200041086a411020004190026a41084100100041016a41084d0d0d200020002903900220037c3703e002200041286a41086a220242003703002000420037032841c6104107200041286a1003200041086a41086a200229030037030020002000290328370308200041086a411041d02d410041001000417f460d062000420037039002200041086a411020004190026a41084100100041016a41084d0d0c2009422088a72111200a200b41286c22026a210f02402007450d0020002903900221034100200a6b20026b21042007210d200f210203402002200a460d01200241586a22102903004200510d01200241606a2003103d200441286a210420102102200d417f6a220d0d000b0b20004190026a104720002802980221042000280290022102200028029402210d200041f8016a200f360200200041fc016a41003a000020004180026a20073602002000200d3602e401200020023602e001200020023602e80120002002200441286c6a3602ec01200020113602f0012000200a3602f40120004184026a200041e0026a360200200041003a00880220004190026a200041e0016a10b90102400240024002400240024002400240024002400240024002400240024002400240024002400240024002402000290390024200510d00417f4100200041ec016a280200200041e0016a41086a2802006b41286d2202200041f0016a2802006b2204200420024b1b220241016a220420042002491b2204ad42287e2203422088a70d1b2003a72202417f4c0d1a4108211202402002450d00200210012212450d160b201220004190026a41086a2202290300370300201241206a200241206a290300370300201241186a200241186a290300370300201241106a200241106a290300370300201241086a200241086a290300370300200020123602482000200436024c410121132000410136025020004190016a41286a200041e0016a41286a28020036020020004190016a41206a200041e0016a41206a29030037030020004190016a41186a200041e0016a41186a29030037030020004190016a41106a2214200041e0016a41106a29030037030020004190016a41086a200041e0016a41086a290300370300200020002903e0013703900120004190026a20004190016a10b90102402000290390024201520d0020004190026a41086a21022000419c016a2115412821104101210d0340200041e8006a41206a220f200241206a290300370300200041e8006a41186a2211200241186a290300370300200041e8006a41106a2216200241106a290300370300200041e8006a41086a2217200241086a290300370300200020022903003703680240200d2004470d00200041c8006a2004417f4100201528020020004190016a41086a2802006b41286d221820142802006b2219201920184b1b221841016a221920192018491b1049200028024821120b0240201220106a22042000290368370300200441206a200f290300370300200441186a2011290300370300200441106a2016290300370300200441086a2017290300370300200041c8006a41086a200d41016a220f36020020004190026a20004190016a10b9012000290390024201520d00201041286a2110200028024c2104200f210d0c010b0b200d41016a21130b024020004198016a220428020022022000419c016a280200220d460d0020042002200d20026b41586a41286e41286c6a41286a3602000b0240200028029401450d0020002802900110020b200028024c211a201341144b0d01201341014d0d022013417f6a210f2012201341286c6a41586a211103402013200f2202417f6a220f490d2102402013200f6b220d4102490d002012200241286c6a221041206a22042903002012200f41286c6a220241206a221629030022035a0d0020004190026a41186a2217200241186a221829030037030020004190026a41106a2219200241106a221429030037030020004190026a41086a2215200241086a221b290300370300200020022903003703900220022010290300370300201b201041086a2903003703002014201041106a2903003703002018201041186a290300370300201620042903003703000240200d4103490d00410221042011210203402004200d4f0d290240200241c8006a221029030020035a0d002004417f6a200d4f0d29200241206a2010290300370300200241186a200241c0006a290300370300200241106a200241386a290300370300200241086a200241306a2903003703002002200241286a221029030037030020102102200441016a2204200d490d010c020b0b200221100b2010200029039002370300201041186a2017290300370300201041106a2019290300370300201041086a2015290300370300201020033703200b201141586a2111200f0d000c030b0b0240200041e8016a22042802002202200041ec016a280200220d460d0020042002200d20026b41586a41286e41286c6a41286a3602000b024020002802e401450d0020002802e00110020b4100211a41082112410021130c010b2013410176221cad42287e2203422088a70d192003a72202417f4c0d184108211d02402002450d0020021001221d450d130b4100210420004100360298012000420437039001201241586a211e201241a87f6a211f4104210d20004190016a41086a21202013212103402021211641002121410121100240024002402016417f6a2202450d0002400240024002400240024002402012200241286c6a41206a29030020122016417e6a221041286c6a41206a29030022035a0d00410021112010450d02201f201641286c6a2102034020032002290300220e5a0d02200241586a2102200e21032010417f6a22100d000c030b0b02402010450d00201f201641286c6a210241022110034020032002290300220e540d04200241586a2102200e21032016201041016a2210470d000b41002121201621102004200028029401470d090c080b41022110410021212004200028029401470d080c070b201021110b024020162011490d00201620134b0d140240201620116b22104101762217450d00201e201641286c6a21022012201141286c6a210f034020004190026a41206a2218200f41206a221929030037030020004190026a41186a2214200f41186a221529030037030020004190026a41106a221b200f41106a222129030037030020004190026a41086a2222200f41086a22232903003703002000200f29030037039002200241086a22242903002103200241106a2225290300210e200241186a22262903002127200229030021282019200241206a2229290300370300201520273703002021200e37030020232003370300200f202837030020292018290300370300202620142903003703002025201b290300370300202420222903003703002002200029039002370300200241586a2102200f41286a210f2017417f6a22170d000b0b2011450d030c020b201120161055000b201620106b2211450d010b201041094d0d010b201121212004200028029401470d030c020b201620134b0d0d2012201141286c6a2117034020162011417f6a2221490d0f0240201620216b22104102490d002012201141286c6a221141206a220f2903002012202141286c6a220241206a221829030022035a0d0020004190026a41186a2219200241186a221429030037030020004190026a41106a2215200241106a221b29030037030020004190026a41086a2222200241086a22232903003703002000200229030037039002200220112903003703002023201141086a290300370300201b201141106a2903003703002014201141186a2903003703002018200f290300370300024020104103490d004102210f201721020340200f20104f0d090240200241c8006a221129030020035a0d00200f417f6a20104f0d0b200241206a2011290300370300200241186a200241c0006a290300370300200241106a200241386a290300370300200241086a200241306a2903003703002002200241286a221129030037030020112102200f41016a220f2010490d010c020b0b200221110b2011200029039002370300201141186a2019290300370300201141106a2015290300370300201141086a2022290300370300201120033703200b2021450d01201741586a2117202121112010410a490d000b0b2004200028029401470d010b20004190016a107a20202802002104200028029001210d0b200d20044103746a22022010360204200220213602002020200441016a2204360200024020044102490d00200028029001210d03400240024002400240200d2004417f6a4103746a2202280200450d00200d20044103746a221141746a280200220f200228020422104d0d00200441024d0d05200d2004417d6a22144103746a28020422022010200f6a4d0d01200441034d0d05201141646a2802002002200f6a4d0d010c050b20044103490d0120022802042110200d2004417d6a22144103746a28020421020b20022010490d010b2004417e6a21140b2004201441016a22154d0d06200420144d0d07200d201441037422226a2202280204222320022802006a2202200d201541037422246a2204280200221b490d08200220134b0d092012201b41286c6a22182004280204221941286c22046a210f200241286c210d024002400240024002402002201b6b221120196b220220194f0d00201d200f200241286c2204101e221120046a211020194101480d0120024101480d01201e200d6a210d200f21020340200d200241586a2216201041586a2217201041786a290300200241786a29030054220f1b2204290300370300200d41206a200441206a290300370300200d41186a200441186a290300370300200d41106a200441106a290300370300200d41086a200441086a29030037030020102017200f1b2110201820162002200f1b22024f0d04200d41586a210d2011210420112010490d000c050b0b201d20182004101e220220046a211020194101480d01201120194c0d012012200d6a2116200221042018210203402002200f2004200f41206a290300200441206a2903005422111b220d290300370300200241206a200d41206a290300370300200241186a200d41186a290300370300200241106a200d41106a290300370300200241086a200d41086a2903003703002004200441286a20111b2104200241286a2102200f41286a200f20111b220f20164f0d04201020044b0d000c040b0b200f21020c010b201821020b201d21040b20022004201020046b220d200d4128706b101e1a2020280200220220144d0d0a200028029001220d20226a2204202320196a3602042004201b360200200220154d0d0b200d20246a2204200441086a200220156b41037441786a10391a20202002417f6a2204360200200441014b0d000b0b20210d000b0240200028029401450d0020002802900110020b201c450d00201d10020b2000201a360294022000201236029002200020133602980220004190026a104a0240201a450d00201210020b200041286a41086a2202420037030020004200370328418d104107200041286a1003200041086a41086a2002290300370300200020002903283703084100211102400240200041086a411041d02d410041001000417f460d0020004210370294012000200041086a3602900120004190026a20004190016a103a2000280290022217450d0f20004198026a2802002111200028029402211e0c010b410121174100211e0b200041a8026a4200370300200041a0026a420037030020004198026a420037030020004200370390022011ad2203421b88a70d0b2003420586a72202417f4c0d0c024002402002450d002002100122020d010c120b410121020b200020113602940120002002360290012000410036029801200041c8006a41186a220d20004190026a41186a290300370300200041c8006a41106a220f20004190026a41106a290300370300200041c8006a41086a221620004190026a41086a290300370300200020002903900237034820004190016a41002011108601200028029001221020002802980122244105746a210202400240024020114102490d0041012104034020022000290348370000200241186a200d290300370000200241106a200f290300370000200241086a2016290300370000200241206a2102200441016a22042011490d000b202420046a417f6a21240c010b2011450d010b20022000290348370000200241186a200041c8006a41186a290300370000200241106a200041c8006a41106a290300370000200241086a200041c8006a41086a290300370000202441016a21240b2009a7211f20004190016a41086a22232024360200200a200b41286c6a2118200028029401212941002113410021164100212620070d0f0c0e0b41ccc100200f2010103c000b41dcc100200f417f6a2010103c000b41acc10020152004103c000b41acc10020142004103c000b201b20021055000b200220131029000b41bcc10020142002103c000b41b4c300103b000b20162011417f6a22214f0d010b202120161055000b201620131029000b1066000b1067000b41c1214133102d000b419201212a0c060b4106212a0c050b41d900212a0c040b41d900212a0c030b41d900212a0c020b4128212a0c010b4126212a0b0340024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240202a0e9601080d94010e95010f101112131415161718191a1b1c1d1e292a2b2c88012f3031323334353638393a3b3c3d3e404155565758595b5c5d5e5f8e0160616263646566676c757677787e7f8001810182018301840185018601797a7c7d6d6e6f707172733f748d0168696a6b5a7b87014243900144454748494a4b4c4d4e4f515253549101920150468f019301372d2e1f2021890122238a0124258b0126278c01280001020405060703090a0b0c0c0b2018200a460d9f01418b01212a0c8a020b201841586a2202290300210320004190026a41186a2204201841786a221929030037030020004190026a41106a220d201841706a221429030037030020004190026a41086a220f201841686a22152903003703002000201841606a22182903003703900220004190016a41186a221d201929030037030020004190016a41106a22252014290300370300202320152903003703002000201829030037039001200041c8006a41186a22182004290300370300200041c8006a41106a2219200d290300370300200041c8006a41086a2214200f290300370300200020002903900237034820034200510d9f01418c01212a0c89020b200041e0016a41186a22152018290300370300200041e0016a41106a221b2019290300370300200041e0016a41086a22212014290300370300200020002903483703e0010c87020b2007417f6a210720152018290300370300201b201929030037030020212014290300370300200020002903483703e0014100211620222102418d01212a0c87020b200041e8006a41186a22122015290300370300200041e8006a41106a2220201b290300370300200041e8006a41086a22222021290300370300200020002903e00137036820042012290300370300200d2020290300370300200f202229030037030020002000290368370390022007450d9301418e01212a0c86020b201641ff01710d9901418f01212a0c85020b200a2002460d9b01419001212a0c84020b200241586a222229030021032004200241786a2216290300370300200d200241706a2212290300370300200f200241686a22202903003703002000200241606a220229030037039002201d201629030037030020252012290300370300202320202903003703002000200229030037039001201820042903003703002019200d2903003703002014200f290300370300200020002903900237034820034200520d9c010c9b010b200041286a41186a2004290300370300200041286a41106a200d290300370300200041286a41086a200f29030037030020002000290390023703280c8e010b201341ff01710d9101419301212a0c81020b2018200a460d9101419401212a0c80020b201841586a22022903002103200041e0016a41186a2204201841786a220d290300370300200041e0016a41106a220f201841706a2216290300370300200041e0016a41086a2219201841686a22142903003703002000201841606a22182903003703e00120004190016a41186a200d29030037030020004190016a41106a201629030037030020232014290300370300200020182903003703900120004190026a41186a220d200429030037030020004190026a41106a2204200f29030037030020004190026a41086a220f2019290300370300200020002903e001370390022003500d9101419501212a0cff010b200041286a41186a200d290300370300200041286a41106a2004290300370300200041286a41086a200f290300370300200020002903900237032841002113410021164101212a0cfe010b20004190026a41186a2204200041286a41186a29030037030020004190026a41106a220d200041286a41106a29030037030020004190026a41086a220f200041286a41086a2903003703002000200029032837039002200041e0016a20004190026a10b50120002802e0014101470d8b014103212a0cfd010b200041e0016a41086a280200211820004190016a41186a2219200429030037030020004190016a41106a2214200d2903003703002023200f290300370300200020002903900237039001200041086a41186a22152019290300370300200041086a41106a22192014290300370300200041086a41086a22142023290300370300200020002903900137030820042015290300370300200d2019290300370300200f20142903003703002000200029030837039002202420184d0d8b014105212a0cfc010b201020184105746a2218200029039002370000201841186a2004290300370000201841106a200d290300370000201841086a200f290300370000202641016a212641002107200221184100450d86014106212a0cfb010b4100450d8d014107212a0cfa010b200c450d93014108212a0cf9010b200a10024109212a0cf8010b20244105742221410575221b201141057441057522022002201b4b1b2218450d9201410a212a0cf7010b20172102201021044100210d410b212a0cf6010b20102017460d9201410c212a0cf5010b2002200441201006450d9201410d212a0cf4010b41071001220f450d9201410e212a0cf3010b2000200f36029002200042073702940220004190026a41004107102720004190026a41086a220f200f280200221141076a221936020020112000280290026a221641002800bf1036000020004190016a41086a22112019360200201641046a41002f00c3103b0000201641066a41002d00c5103a0000200020002903900237039001412010012216450d9201410f212a0cf2010b2000201636029002200042203702940220004190026a410041201027200f200f280200221941206a22163602002019200028029002220f6a20024120101e1a200028029402211420004190016a2011280200201610272000280290012219201128020022156a200f2016101e1a2011201520166a22163602002014450d92014110212a0cf1010b200f10024111212a0cf0010b200028029401210f200041286a41086a221142003703002000420037032820192016200041286a1003200041086a41086a201129030037030020002000290328370308200041086a41101005200f450d91014112212a0cef010b201910024113212a0cee010b200241206a2102200441206a2104200d41016a220d2018490d89014114212a0ced010b201020216a21022024210d201b4104490d8f0141fc00212a0cec010b20004190026a41206a2118200041d0026a2119200041f0026a211420004190036a2115200041a8026a210f200041a0026a211120004198026a21162024210d41fd00212a0ceb010b200f420037030020114200370300201642003703002000420037039002201820022204460de10141fe00212a0cea010b200441606a20004190026a412010060de101418001212a0ce9010b200f42003703002011420037030020164200370300200042003703900220192004460de101418101212a0ce8010b200441406a20004190026a412010060de101418301212a0ce7010b200f42003703002011420037030020164200370300200042003703900220142004460de101418401212a0ce6010b200441a07f6a20004190026a412010060de101418601212a0ce5010b200f420037030020114200370300201642003703002000420037039002200441807f6a210220152004460de101418701212a0ce4010b200220004190026a412010060de101418901212a0ce3010b200d417c6a210d200220106b41057541034b0d86014115212a0ce2010b20102002460d86014116212a0ce1010b20004190026a41206a2104200041a8026a210f200041a0026a211120004198026a21164117212a0ce0010b200f42003703002011420037030020164200370300200042003703900220042002460d86014118212a0cdf010b200241606a20004190026a412010060d860141fa00212a0cde010b200d417f6a210d2010200241606a2202470d830141fb00212a0cdd010b4100450d8f01411a212a0cdc010b200d41016a22022024202420024b1b2124411b212a0cdb010b20002029360294012000201036029001200020243602980120004190026a20004190016a10a20120002802980221042000280290022102200041286a41086a220d420037030020004200370328418d104107200041286a1003200041086a41086a200d29030037030020002000290328370308200041086a4110200220041004200028029402450d8e01411c212a0cda010b20021002411d212a0cd9010b2029450d8d01411e212a0cd8010b20101002411f212a0cd7010b2000202636029002200041286a41086a220242003703002000420037032841cd104107200041286a1003200041086a41086a2204200229030037030020002000290328370308200041086a411020004190026a41041004200242003703002000420037032841b70f4107200041286a10032004200229030037030020002000290328370308200041086a411041d02d410041001000417f460d8c014120212a0cd6010b2000410036029002200041086a411020004190026a41044100100041016a41044d0d8c014121212a0cd5010b20002802900241016a21020c8c010b410121024122212a0cd3010b2000200236029002200041286a41086a220242003703002000420037032841b70f4107200041286a1003200041086a41086a200229030037030020002000290328370308200041086a411020004190026a41041004201e450d8b014123212a0cd2010b201710024124212a0cd1010b201f450d8a014125212a0cd0010b200810024126212a0ccf010b2006450d89014127212a0cce010b200510024128212a0ccd010b20004190026a412c6a212520004190026a410472212620004190026a41206a210d20004190016a412c6a2122200041e0016a41086a2123200041e0016a4104722120200041e0016a410c6a21290c88010b20004190026a41286a200041e0016a41286a290300370300200d200041e0016a41206a29030037030020004190026a41186a200041e0016a41186a29030037030020004190026a41106a200041e0016a41106a29030037030020042023290300370300200020002903e0013703900220004190026a410210ba014129212a0ccb010b200041e0026a10bb0120002802e002210241062112200041e0026a41086a2210280200220f450d9001412a212a0cca010b20022903002103200041c8006a41186a2211200241206a290000370300200041c8006a41106a2216200241186a290000370300200041c8006a41086a2217200241106a290000370300200020022900083703484106211220032001520d900141e100212a0cc9010b200f417f6a2218ad42287e2203422088a70db50141e200212a0cc8010b2003a72204417f4c0db50141e400212a0cc7010b2004450db50141e500212a0cc6010b2004100122190daf010cae010b4108211941e600212a0cc4010b20004190026a41086a220441003602002000201836029402200020193602900220004190026a4100200f41286c41586a41286e220f108201200420042802002218200f6a360200200028029002201841286c6a200241286a200f41286c101e1a2023200428020036020020002000290390023703e001200041e0016a10bc0120002802e401450db30141e700212a0cc3010b20002802e001100241e800212a0cc2010b200041e8006a41186a22142011290300370300200041e8006a41106a22152016290300370300200041e8006a41086a221b20172903003703002000200029034837036841071001220f450dac0141e900212a0cc1010b2000200f36029002200042073702940220004190026a41004107102720042004280200220f41076a2218360200200f2000280290026a220f41002800eb2236000020232018360200200f41046a41002f00ef223b0000200f41066a41002d00f1223a000020002000290390023703e00141201001220f450dac0141ea00212a0cc0010b2000200f36029002200042203702940220004190026a41004120102720042004280200221841206a220f360200201820002802900222196a22182000290368370000201841086a201b290300370000201841106a2015290300370000201841186a20142903003700002000280294022115200041e0016a2023280200200f102720002802e0012218202328020022146a2019200f101e1a20232014200f6a22143602002015450db00141eb00212a0cbf010b2019100241ec00212a0cbe010b20002802e401211d200041086a41086a220f42003703002000420037030820182014200041086a1003200041286a41086a2219200f29030037030020002000290308370328200041286a411041d02d410041001000417f460daf0141ed00212a0cbd010b2000421037020c2000200041286a36020820004190026a200041086a10bd0120002802900222124106460daf0141ee00212a0cbc010b200041e0016a41286a202641286a280200360200200041e0016a41206a202641206a290200370300200041e0016a41186a202641186a290200370300200041e0016a41106a202641106a2902003703002023202641086a290200370300200020262902003703e001200f42003703002000420037030820182014200041086a10032019200f29030037030020002000290308370328200041286a411010050caf010b4106211241ef00212a0cba010b20004190026a41286a220f200041e0016a41286a2219280200360200200d200041e0016a41206a221429030037030020004190026a41186a2215200041e0016a41186a221b29030037030020004190026a41106a2221200041e0016a41106a222429030037030020042023290300370300200020002903e00137039002201d450dae0141f000212a0cb9010b2018100241f100212a0cb8010b20124106460dad0141f200212a0cb7010b2019200f2802003602002014200d290300370300201b2015290300370300202420212903003703002023200429030037030020002000290390023703e001200f2019280200360200200d20142903003703002015201b290300370300202120242903003703002004202329030037030020252000290348370200202541086a2017290300370200202541106a2016290300370200202541186a2011290300370200200020002903e0013703900220004190016a20004190026a41cc00101e1a412b212a0cb6010b20002802e402450d7d412c212a0cb5010b20021002412d212a0cb4010b20124106460d7c412e212a0cb3010b2020200029029001370200202041086a20004190016a41086a290200370200202041106a20004190016a41106a290200370200202041186a20004190016a41186a290200370200202041206a20004190016a41206a290200370200202041286a20004190016a41286a280200360200200020123602e001200041e8006a41186a2215202241186a290000370300200041e8006a41106a221b202241106a290000370300200041e8006a41086a2221202241086a29000037030020002022290000370368200041e0026a104720002802e00221242010280200221d41286c2217450d7c412f212a0cb2010b4100211441002119202421020c7c0b4102211120180d82010c81010b200d200229000037000020004190026a41186a201529030037030020004190026a41106a201b29030037030020004190026a41086a2021290300370300200d41086a200241086a290000370000200d41106a200241106a290000370000200d41186a200241186a2900003700002000200029036837039002410910012204450d7c4131212a0caf010b200020043602482000420937024c200041c8006a410041091027200041c8006a41086a22102010280200220441096a220f360200200420002802486a221141002900f922370000200041286a41086a2204200f360200201141086a41002d0081233a000020002000290348370328200041c8006a20004190026a10be01200028024c211820002802482111200041286a20042802002010280200220f102720002802282210200428020022166a2011200f101e1a20042016200f6a22163602002018450d7c4132212a0cae010b201110024133212a0cad010b200028022c2118200041086a41086a220f42003703002000420037030820102016200041086a10032004200f29030037030020002000290308370328200041286a411041d02d410041001000417f460d7b4134212a0cac010b200041003a0048200041286a4110200041c8006a41014100100041016a41014d0d7b4136212a0cab010b20002d00482111200f42003703002000420037030820102016200041086a10032004200f29030037030020002000290308370328200041286a411010052018450d7d4137212a0caa010b201010024138212a0ca9010b201141ff01714102460d7c4139212a0ca8010b201420114101716a211420192011417f734101716a2119413a212a0ca7010b200241286a2102201741586a22170d72413b212a0ca6010b201920146a210220002802e402450d7a413c212a0ca5010b20241002413d212a0ca4010b201d20026b210220124103470d7b41da00212a0ca3010b20002d00e40141ff01714102470d7b41db00212a0ca2010b20190d7e41dc00212a0ca1010b20020d7c41dd00212a0ca0010b202328020010460c790b2014200220196a4d0d7941d000212a0c9e010b410910012204450d810141d100212a0c9d010b2000200436029002200042093702940220004190026a41004109102720004190026a41086a22042004280200221041096a220f36020020102000280290026a2211410029009823370000200041c8006a41086a2210200f360200201141086a41002d00a0233a0000200020002903900237034841201001220f450d810141d200212a0c9c010b2000200f36029002200042203702940220004190026a41004120102720042004280200221141206a220f360200201120002802900222166a22112000290368370000201141086a2021290300370000201141106a201b290300370000201141186a20152903003700002000280294022117200041c8006a2010280200200f102720002802482211201028020022186a2016200f101e1a20102018200f6a220f3602002017450d810141d300212a0c9b010b2016100241d400212a0c9a010b200028024c2110200041286a41086a22164200370300200042003703282011200f200041286a1003200041086a41086a201629030037030020002000290328370308200041086a411010052010450d800141d500212a0c99010b2011100241d600212a0c98010b20022019720d7f41d800212a0c97010b20004190026a41286a200041e0016a41286a290300370300200d200041e0016a41206a29030037030020004190026a41186a200041e0016a41186a29030037030020004190026a41106a200041e0016a41106a29030037030020042023290300370300200020002903e0013703900220004190026a410110ba010c530b201241077122024103460d7341c000212a0c95010b20020d5241c100212a0c94010b20002802e4012202450d5441c200212a0c93010b20024101470d7141cc00212a0c92010b2029280200450d5341cd00212a0c91010b202328020010020c530b4100211941002114410041006a210220002802e4020d660c650b20002d00e4014101470d4d41cf00212a0c8e010b202310bf010c4d0b20232802002110200041e0016a41106a2802002202450d6c41c400212a0c8c010b200241186c21042010210241c500212a0c8b010b200241046a280200450d6c41c600212a0c8a010b2002280200100241c700212a0c89010b200241106a280200450d6b41c800212a0c88010b2002410c6a280200100241c900212a0c87010b200241186a2102200441686a22040d6741ca00212a0c86010b2029280200450d4941cb00212a0c85010b201010020c490b200041f0026a24000f0b200d417f6a210d41010d340c330b200d417f6a210d41010d310c300b200d417e6a210d41010d2e0c2d0b200d417d6a210d41010d2b0c2a0b200d417c6a210d41010d280c270b101c000b41c1214133102d000b1064000b1065000b4187254139102d000b41c1214133102d000b41c1214133102d000b41f316411c102d000b41b43820182024103c000b419201212a0c740b4101212a0c730b4100212a0c720b4102212a0c710b4104212a0c700b4107212a0c6f0b4107212a0c6e0b4107212a0c6d0b418a01212a0c6c0b4107212a0c6b0b4107212a0c6a0b4107212a0c690b4107212a0c680b4107212a0c670b419101212a0c660b4109212a0c650b4114212a0c640b410b212a0c630b4113212a0c620b4113212a0c610b41d900212a0c600b41d900212a0c5f0b4111212a0c5e0b4113212a0c5d0b4115212a0c5c0b41fd00212a0c5b0b41fb00212a0c5a0b4117212a0c590b41fa00212a0c580b4119212a0c570b411b212a0c560b411a212a0c550b411b212a0c540b411a212a0c530b411b212a0c520b411a212a0c510b411b212a0c500b411a212a0c4f0b411b212a0c4e0b411a212a0c4d0b411b212a0c4c0b411d212a0c4b0b411f212a0c4a0b41f900212a0c490b41f800212a0c480b4122212a0c470b4124212a0c460b4126212a0c450b4128212a0c440b4129212a0c430b4129212a0c420b4129212a0c410b4129212a0c400b4129212a0c3f0b4129212a0c3e0b4129212a0c3d0b4129212a0c3c0b4129212a0c3b0b4129212a0c3a0b412b212a0c390b412b212a0c380b412d212a0c370b41e000212a0c360b41df00212a0c350b4130212a0c340b4130212a0c330b41d900212a0c320b4133212a0c310b41de00212a0c300b4135212a0c2f0b4138212a0c2e0b4137212a0c2d0b4138212a0c2c0b413a212a0c2b0b413d212a0c2a0b413d212a0c290b413c212a0c280b413e212a0c270b413e212a0c260b413f212a0c250b413f212a0c240b413f212a0c230b413f212a0c220b41ce00212a0c210b41c300212a0c200b41ca00212a0c1f0b41c500212a0c1e0b41c700212a0c1d0b41c900212a0c1c0b41d900212a0c1b0b41d900212a0c1a0b41d400212a0c190b41d600212a0c180b41d700212a0c170b41d900212a0c160b41e600212a0c150b41d900212a0c140b41d900212a0c130b41f700212a0c120b41e300212a0c110b41f600212a0c100b41e800212a0c0f0b41ec00212a0c0e0b41f500212a0c0d0b41f400212a0c0c0b41ef00212a0c0b0b41f100212a0c0a0b41f300212a0c090b418001212a0c080b41ff00212a0c070b418301212a0c060b418201212a0c050b418601212a0c040b418501212a0c030b418901212a0c020b418801212a0c010b418d01212a0c000b0b41c1214133102d000b1057000b1056000b41f4214122102d000b41f4214122102d000b41be164135102d000b41c1214133102d000b200f20131055000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41dcc1002004417f6a200d103c000b41ccc1002004200d103c000ba50c03047f017e177f23004180026b22012400200141b0016a41086a22024200370300200142003703b0014191264107200141b0016a1003200141086a2002290300370300200120012903b0013703000240024002400240024002402001411041d02d410041001000417f460d002001200136021020014110360214200141003602b0012001410020014110200141b0016a41044100100022022002417f461b2202410420024104491b2203360218200241034d0d0320012802b0012204ad42d8007e2205422088a70d052005a72202417f4c0d042002450d012002100122060d02101c000b200041003602082000420837020020014180026a24000f0b410821060b20012004360224200120063602202001410036022802402004450d0020014180016a41086a210720014180016a4104722108200121094100210a4110210b4100210c0340200141003602b001200141106a41086a220d41002009200b200141b0016a41042003100022022002417f461b2202410420024104491b20036a3602000240024002400240200241034d0d0020012802b001210e200141b0016a200141106a10bd0120012802b0014106460d0020014180016a41286a200141b0016a41286a220f29030037030020014180016a41206a200141b0016a41206a221029030037030020014180016a41186a2211200141b0016a41186a221229030037030020014180016a41106a2213200141b0016a41106a22142903003703002007200141b0016a41086a2215290300370300200120012903b00137038001200141e0016a41186a22164200370300200141e0016a41106a22174200370300200141e0016a41086a22184200370300200142003703e001200d200d28020022024100200128021022092001280214220b200141e0016a41202002100022022002417f461b2202412020024120491b6a220336020002402002411f4d0d00200141306a41186a22022016290300370300200141306a41106a220d2017290300370300200141306a41086a22162018290300370300200120012903e001370330200141d0006a41086a2217200841086a290200370300200141d0006a41106a2218200841106a290200370300200141d0006a41186a2219200841186a290200370300200141d0006a41206a221a200841206a290200370300200141d0006a41286a221b200841286a28020036020020012008290200370350200128028001221c4106460d01200c41016a210c200f201b2802003602002010201a290300370300201220192903003703002014201829030037030020152017290300370300200720162903003703002013200d29030037030020112002290300370300200120012903503703b0012001200129033037038001200a2001280224470d04200141206a1074200141206a41086a280200210a200128022021060c040b0240024020012802800122024103460d0020020d022001280284012202450d0220024101470d012001418c016a280200450d0220014188016a280200100220012802202103200a0d030c040b20012d0084014101470d012007104b20012802202103200a0d020c030b20014188016a2802002103024020014180016a41106a2802002202450d00200241186c21082003210203400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241186a2102200841686a22080d000b0b2001418c016a280200450d00200310020b20012802202103200a450d010b200a41d8006c210820032102034020021038200241d8006a2102200841a87f6a22080d000b0b2001280224450d03200310020c030b2006200a41d8006c6a2202201c3602002002411c6a2012290300370200200241146a20142903003702002002410c6a2015290300370200200220012903b001370204200241246a20102903003702002002412c6a200f2802003602002002200e36023020022001290380013702342002413c6a2007290300370200200241c4006a2013290300370200200241cc006a2011290300370200200141206a41086a200a41016a220a360200200c2004490d000b200128022021060b2006450d00200020012902243702042000200636020020014180026a24000f0b41c1214133102d000b1059000b1058000b8d0402057f017e230041c0006b220224000240024002400240410810012203450d002002200336023020024208370234200241306a4100410810272002280230200228023822036a42e4cab5d3c3ac99b83a3700002002200341086a360238200241086a200228023836020020022002290330370300410410012203450d002002200336023020024204370234200241306a41004104102720022802302203200228023822046a20013600002002200441046a220136023820022802342105200220022802082001102720022802002204200228020822066a20032001101e1a2002200620016a220136020802402005450d00200310020b20022802042103200241306a41086a220542003703002002420037033020042001200241306a1003200241086a20052903003703002002200229033037030002402002411041d02d410041001000417f460d002002200236021020024110360214200242003703302002410020024110200241306a41084100100022012001417f461b2201410820014108491b360218200141074d0d0220022903302107200241306a200241106a103a20022802302201450d022002200229023437032020002001360208200020073703002000200229032037020c200041146a200241286a2802003602002003450d040c030b2000410036020820030d020c030b101c000b41c1214133102d000b200410020b200241c0006a24000bda0101027f0240024020002802002201450d0020014103470d0120002d00044101470d01200041086a22012802001038200128020010020f0b20002802042201450d00024020014101470d002000410c6a280200450d01200041086a28020010020f0b0240200041106a2802002202450d00200041086a2802002101200241186c210203400240200141046a280200450d00200128020010020b0240200141106a280200450d002001410c6a28020010020b200141186a2101200241686a22020d000b0b2000410c6a280200450d00200041086a28020010020f0b0b0a00200020012002100b0bc80403067f017e097f230041d0006b220224002002410036023020012001280208220341002001280200220420012802042205200241306a41042003100022032003417f461b2203410420034104491b6a220636020802400240024002400240200341034d0d0020022802302207ad2208421b88a70d042008420586a72203417f4c0d032003450d012003100122090d02101c000b20004100360200200241d0006a24000f0b410121090b20022007360204200220093602002002410036020802402007450d00200241306a41186a210a200241306a41106a210b410021034100210c0340200a4200370300200b4200370300200241306a41086a220d420037030020024200370330200141086a410020042005200241306a412020061000220e200e417f461b220e4120200e4120491b20066a220636020002400240200e411f4d0d00200c41016a210c200241106a41186a220f200a290300370300200241106a41106a2210200b290300370300200241106a41086a2211200d2903003703002002200229033037031020032002280204470d012002107c200241086a2802002103200228020021090c010b2000410036020002402002280204450d00200910020b200241d0006a24000f0b200920034105746a220e2002290310370000200e41186a200f290300370000200e41106a2010290300370000200e41086a2011290300370000200241086a200341016a2203360200200c2007490d000b0b20002002290300370200200041086a200241086a280200360200200241d0006a24000f0b1067000b1066000b2c02017f017e230041106b2201240020002902102102200120002902083703002001200237030820011054000b070020001054000bab0303017f017e047f230041306b220224002000104321030240410810012204450d002002200436022020024208370224200241206a4100410810272002280220200228022822046a42f3e885d3a3ac98b63a3700002002200441086a360228200241106a41086a200228022836020020022002290320370310412010012204450d00200320017c21012002200436022020024220370224200241206a41004120102720022802202205200228022822066a22042000290000370000200441086a200041086a290000370000200441106a200041106a290000370000200441186a200041186a2900003700002002200641206a220036022820022802242106200241106a20022802182000102720022802102204200228021822076a20052000101e1a2002200720006a220036021802402006450d00200510020b2002280214210520022001370308200241206a41086a220642003703002002420037032020042000200241206a1003200241106a41086a200629030037030020022002290320370310200241106a4110200241086a4108100402402005450d00200410020b200241306a24000f0b101c000bcb0501097f230041306b22012400200041086a28020021022001410036022820014201370320200141206a4100410410272001280220200128022822036a20023600002001200341046a360228200141086a220420012802283602002001200129032037030002400240024002402002450d0020002802002100200241d8006c21050340200141106a41086a2203410036020020014201370310200041306a2802002102200141106a41004104102720032003280200220641046a2207360200200620012802106a2002360000200141206a200010d80120012802202108200141106a2007200141206a41086a22062802002202102720032002200328020022076a2209360200200720012802106a20082002101e1a02402001280224450d00200810020b200141106a20094120102720032003280200220741206a22023602002007200128021022086a220341086a2000413c6a290000370000200341106a200041c4006a290000370000200341186a200041cc006a2900003700002003200041346a2900003700002002417f4c0d03024002402002450d002002100122030d010c060b410121030b200641003602002001200236022420012003360220200141206a41002002102720062006280200220720026a22033602002007200128022022066a20082002101e1a2001280224210202402001280214450d00200810020b200120042802002003102720012802002207200428020022086a20062003101e1a2004200820036a220336020002402002450d00200610020b200041d8006a2100200541a87f6a22050d000c020b0b20012802082103200128020021070b20012802042100200141206a41086a22024200370300200142003703204191264107200141206a1003200141106a41086a200229030037030020012001290320370310200141106a411020072003100402402000450d00200710020b200141306a24000f0b1019000b101c000be50c03037f017e047f230041a0016b22032400200341086a220442003703002003420037030041852741072003100320034180016a41086a200429030037030020032003290300370380010240024020034180016a411041d02d410041001000417f460d00200341003602400240024020034180016a4110200341c0006a41044100100041016a41044d0d00024020032802402205450d0020032005417f6a104020032802084106460d00200341c0006a41086a2204200341086a290300370300200341c0006a41386a200341386a290300370300200341c0006a41306a200341306a290300370300200341c0006a41286a200341286a290300370300200341c0006a41206a200341206a290300370300200341c0006a41186a200341186a290300370300200341c0006a41106a200341106a290300370300200320032903002206370340024002400240200428020022044103460d0020040d02200341cc006a2802002204450d0220044101470d01200341d4006a280200450d02200341d0006a280200100220062000580d030c070b200341cc006a2d00004101470d01200341d0006a102220062000580d020c060b200341c0006a41106a28020021070240200341c0006a41186a2802002204450d00200441186c21082007210403400240200441046a280200450d00200428020010020b0240200441106a280200450d002004410c6a28020010020b200441186a2104200841686a22080d000b0b200341d4006a280200450d00200710020b20062000560d040b2003200541016a360240200341086a220442003703002003420037030041852741072003100320034180016a41086a22082004290300370300200320032903003703800120034180016a4110200341c0006a41041004200341c0006a41106a200141086a290300370300200341c0006a41186a200141106a290300370300200341c0006a41206a200141186a290300370300200341c0006a41286a200141206a290300370300200341f0006a200141286a29030037030020032000370340200320023a007820032001290300370348410810012201450d01200320013602002003420837020420034100410810272003280200200328020822016a42e4cab5d383cedcb73a3700002003200141086a360208200820032802083602002003200329030037038001410410012201450d01200341c0006a41086a21022003200136020020034204370204200341004104102720032802002204200328020822016a20053600002003200141046a22013602082003280204210820034180016a20032802880120011027200328028001220520032802880122076a20042001101e1a2003200720016a22073602880102402008450d00200410020b200328028401210841002104200341003602980120034201370390012003290340210020034190016a41004108102720032802900120032802980122016a20003700002003200141086a2209360298012003200210d8012003280200210220034190016a20092003280208220110272003200120032802980122096a220a3602980120092003280290016a20022001101e1a02402003280204450d00200210020b02400240200341f8006a2d000022014103714102460d0020014101470d01410121040c010b410221040b20034190016a200a4101102720034190016a41086a22012001280200220241016a2209360200200220032802900122016a20043a0000200341086a2204420037030020034200370300200520072003100320034180016a41086a2004290300370300200320032903003703800120034180016a41102001200910040240200328029401450d00200110020b02402008450d00200510020b024002400240200328024822014103460d0020010d02200341cc006a2802002201450d0220014101470d01200341d4006a280200450d02200341d0006a2802001002200341a0016a24000f0b200341cc006a2d00004101470d01200341d0006a1022200341a0016a24000f0b0240200341c0006a41186a2802002204450d00200341c0006a41106a2802002101200441186c210403400240200141046a280200450d00200128020010020b0240200141106a280200450d002001410c6a28020010020b200141186a2101200441686a22040d000b0b200341d4006a280200450d00200341d0006a28020010020b200341a0016a24000f0b41c1214133102d000b101c000b41f4214122102d000b4184c000103b000b810a03057f017e067f230041c0016b220224000240024002400240410810012203450d002002200336029001200242083702940120024190016a41004108102720022802900120022802980122036a42e4cab5d383cedcb73a3700002002200341086a36029801200241e0006a41086a2002280298013602002002200229039001370360410410012203450d002002200336029001200242043702940120024190016a410041041027200228029001220320022802980122046a20013600002002200441046a2201360298012002280294012105200241e0006a20022802682001102720022802602204200228026822066a20032001101e1a2002200620016a220136026802402005450d00200310020b2002280264210520024190016a41086a2203420037030020024200370390012004200120024190016a1003200241086a41086a20032903003703002002200229039001370308024002400240200241086a411041d02d410041001000417f460d002002200241086a3602182002411036021c200242003703900120024100200241086a411020024190016a41084100100022012001417f461b2201410820014108491b360220200141074d0d06200229039001210720024190016a200241186a10bd012002280290014106460d06200241e0006a41286a20024190016a41286a290300370300200241e0006a41206a20024190016a41206a290300370300200241e0006a41186a20024190016a41186a290300370300200241e0006a41106a20024190016a41106a290300370300200241e0006a41086a20024190016a41086a2903003703002002200229039001370360200241003a0030200241186a41086a2201200128020022012002280218200228021c200241306a41012001100041016a220141014b6a360200024020014102490d0020022d0030220141034f0d00200241386a2206200241ec006a290200370300200241c0006a2208200241e0006a41146a290200370300200241c8006a2209200241e0006a411c6a290200370300200241d0006a220a200241e0006a41246a290200370300200241d8006a220b200241e0006a412c6a2802003602002002200229026437033020022802602103200241286a41066a220c200241e0006a41066a2d00003a0000200241286a41046a220d200241e0006a41046a2f00003b01002002200228006036022820034106460d0720002003360208200020073703002000200229033037020c20002002280228360039200041386a20013a0000200041146a20062903003702002000411c6a2008290300370200200041246a20092903003702002000412c6a200a290300370200200041346a200b2802003602002000413d6a200d2f01003b00002000413f6a200c2d00003a000020050d020c030b200228026022010d0420022802642201450d0620014101460d05200241e8006a28020021030240200241e0006a41106a2802002201450d00200141186c21002003210103400240200141046a280200450d00200128020010020b0240200141106a280200450d002001410c6a28020010020b200141186a2101200041686a22000d000b0b200241ec006a280200450d06200310020c060b200041063602082005450d010b200410020b200241c0016a24000f0b101c000b20014103470d0120022d00644101470d01200241e8006a104b41c1214133102d000b200241ec006a280200450d00200241e8006a280200100241c1214133102d000b41c1214133102d000b080041fc31103b000b960201057f230041206b220224000240410810012203450d002002200336021020024208370214200241106a4100410810272002280210200228021822036a42e4cab5d3e38e9db93a3700002002200341086a360218200241086a200228021836020020022002290310370300410410012203450d002002200336021020024204370214200241106a41004104102720022802102203200228021822046a20013600002002200441046a220136021820022802142105200220022802082001102720022802002204200228020822066a20032001101e1a2002200620016a220136020802402005450d00200310020b2002280204210320002004200110da0102402003450d00200410020b200241206a24000f0b101c000bc70302057f017e230041206b220124000240410810012202450d002001200236021020014208370214200141106a4100410810272001280210200128021822026a42f3e885d3a3ac98b63a3700002001200241086a360218200141086a200128021836020020012001290310370300412010012202450d002001200236021020014220370214200141106a41004120102720012802102203200128021822046a22022000290000370000200241086a200041086a290000370000200241106a200041106a290000370000200241186a200041186a2900003700002001200441206a220036021820012802142104200120012802082000102720012802002202200128020822056a20032000101e1a2001200520006a220036020802402004450d00200310020b2001280204210342002106200141106a41086a220442003703002001420037031020022000200141106a1003200141086a200429030037030020012001290310370300024002402001411041d02d410041001000417f460d002001420037031020014110200141106a41084100100041016a41084d0d01200129031021060b02402003450d00200210020b200141206a240020060f0b41c1214133102d000b101c000bc70302057f017e230041206b220124000240410810012202450d002001200236021020014208370214200141106a4100410810272001280210200128021822026a42f3e885d3c3cdd8b73a3700002001200241086a360218200141086a200128021836020020012001290310370300412010012202450d002001200236021020014220370214200141106a41004120102720012802102203200128021822046a22022000290000370000200241086a200041086a290000370000200241106a200041106a290000370000200241186a200041186a2900003700002001200441206a220036021820012802142104200120012802082000102720012802002202200128020822056a20032000101e1a2001200520006a220036020802402004450d00200310020b2001280204210342002106200141106a41086a220442003703002001420037031020022000200141106a1003200141086a200429030037030020012001290310370300024002402001411041d02d410041001000417f460d002001420037031020014110200141106a41084100100041016a41084d0d01200129031021060b02402003450d00200210020b200141206a240020060f0b41c1214133102d000b101c000bb80201047f230041206b2202240020024100360208200242013703002001280200210320024100410410272002280200200228020822046a20033600002002200441046a2203360208200220034120102720022802002204200228020822056a22032001290004370000200341086a2001410c6a290000370000200341106a200141146a290000370000200341186a2001411c6a2900003700002002200541206a220136020802402001417f4c0d00024002402001450d002001100122030d01101c000b410121030b200220013602142002200336021020024100360218200241106a41002001102720022002280218220320016a360218200320022802106a20042001101e1a200041086a20022802183602002000200229031037020002402002280204450d00200410020b200241206a24000f0b1019000bc808010d7f230041d0006b220124000240410810012202450d00200120023602082001420837020c200141086a4100410810272001280208200128021022026a42e4cab5d383cedcb73a3700002001200241086a360210200141c0006a41086a200128021036020020012001290308370340410410012202450d00200120023602082001420437020c200141086a41004104102720012802082203200128021022026a20003600002001200241046a2202360210200128020c2104200141c0006a20012802482002102720012802402205200128024822066a20032002101e1a2001200620026a220236024802402004450d00200310020b20012802442103200141c0006a41086a220442003703002001420037034020052002200141c0006a1003200141306a41086a200429030037030020012001290340370330200141306a4110100502402003450d00200510020b410810012202450d00200120023602082001420837020c200141086a4100410810272001280208200128021022026a42e4cab5d3e38e9db93a3700002001200241086a360210200141c0006a41086a200128021036020020012001290308370340410410012202450d00200120023602082001420437020c200141086a41004104102720012802082203200128021022026a20003600002001200241046a2202360210200128020c2104200141c0006a20012802482002102720012802402205200128024822066a20032002101e1a2001200620026a220236024802402004450d00200310020b20012802442103200141c0006a41086a220442003703002001420037034020052002200141c0006a1003200141306a41086a200429030037030020012001290340370330200141306a4110100502402003450d00200510020b200141086a20001042200128020c210720012802082108024020012802102202450d0020024105742109200141086a410472210420082102034020042002290000370000200441186a200241186a290000370000200441106a200241106a290000370000200441086a200241086a29000037000020012000360208410810012203450d022001200336024020014208370244200141c0006a410041081027200141c0006a41086a22032003280200220541086a360200200520012802406a42e4cab5d3e3ee9bba3a370000200141306a41086a2205200328020036020020012001290340370330200141c0006a200141086a10452001280244210a2001280240210b200141306a20052802002003280200220610272001280230220c2005280200220d6a200b2006101e1a2005200d20066a22063602000240200a450d00200b10020b2001280234210b2003420037030020014200370340200c2006200141c0006a10032005200329030037030020012001290340370330200141306a411010050240200b450d00200c10020b200241206a2102200941606a22090d000b0b02402007450d00200810020b200141d0006a24000f0b101c000b810604047f017e097f037e230041e0006b22012400200141c0006a41086a220242003703002001420037034041c7114107200141c0006a1003200141086a2002290300370300200120012903403703000240024002400240024002402001411041d02d410041001000417f460d0020014100360240410020014110200141c0006a41044100100022022002417f461b220341034d0d0320012802402204ad42287e2205422088a70d042005a72202417f4c0d052002450d012002100122060d02101c000b2000410036020820004208370200200141e0006a24000f0b410821060b200120043602142001200636021020014100360218024002402004450d002003410420034104491b2107200141c0006a41186a2108200141c0006a41086a2109410021034100210a034020084200370300200141c0006a41106a220b42003703002009420037030020014200370340410020014110200141c0006a41202007100022022002417f461b2202411f4d0d02200141206a41186a220c2008290300370300200141206a41106a220d200b290300370300200141206a41086a220e20092903003703002001200129034037032020014200370340410020014110200141c0006a41082002412020024120491b20076a2207100022022002417f461b220241074d0d02200a41016a210a2002410820024108491b2102200129034021052008200c290300370300200b200d2903003703002009200e29030037030020012001290320370340024020032001280214470d00200141106a1078200141106a41086a2802002103200128021021060b200220076a21072006200341286c6a220220012903403703002009290300210f200b29030021102008290300211120022005370320200241186a2011370300200241106a2010370300200241086a200f370300200141106a41086a200341016a2203360200200a2004490d000b200128021021060b2006450d012000200129021437020420002006360200200141e0006a24000f0b2001280214450d00200610020b41c1214133102d000b1056000b1057000bf81505037f017e087f017e047f230041f0006b22002400200041086a41086a220142003703002000420037030841c81d4107200041086a1003200041d0006a41086a200129030037030020002000290308370350024002400240024002400240200041d0006a411041d02d410041001000417f460d00200042003703080240024002400240200041d0006a4110200041086a41084100100041016a41084d0d002000200029030842017c370340200041086a41086a220142003703002000420037030841c81d4107200041086a1003200041d0006a41086a2202200129030037030020002000290308370350200041d0006a4110200041c0006a41081004200142003703002000420037030841cf1d4107200041086a100320022001290300370300200020002903083703500240200041d0006a411041d02d410041001000417f460d0020004200370308200041d0006a4110200041086a41084100100041016a41084d0d02200020002903082203370330200041086a41086a220142003703002000420037030841c11d4107200041086a1003200041d0006a41086a200129030037030020002000290308370350200041d0006a411041d02d410041001000417f460d0920004200370308200041d0006a4110200041086a41084100100041016a41084d0d0320032000290308510d0020002003370340200041086a41086a220142003703002000420037030841c11d4107200041086a1003200041d0006a41086a2202200129030037030020002000290308370350200041d0006a4110200041c0006a410810042000102e370340200142003703002000420037030841ba1d4107200041086a10032002200129030037030020002000290308370350200041d0006a4110200041c0006a410810040b200041086a41086a220142003703002000420037030841d61d4108200041086a1003200041d0006a41086a2001290300370300200020002903083703504100210102400240200041d0006a411041d02d410041001000417f460d00200042103702442000200041d0006a360240200041086a200041c0006a103a20002802082204450d0b200041106a2802002101200028020c21050c010b41012104410021050b2000410036024820004208370340200041c0006a20014105742206410575108501200028024821022000280240210702402006450d002007200241286c6a21012002200641606a4105766a2108200421020340200041086a41186a2209200241186a290000370300200041086a41106a220a200241106a290000370300200041086a41086a220b200241086a29000037030020002002290000370308200041086a10432103200041086a1044210c200041d0006a41186a220d2009290300370300200041d0006a41106a2209200a290300370300200041d0006a41086a220a200b290300370300200020002903083703502001200c20037c370300200141206a200d290300370300200141186a2009290300370300200141106a200a290300370300200141086a2000290350370300200141286a2101200241206a2102200641606a22060d000b200841016a21020b02402005450d00200410020b200041c0006a41086a20023602002000280244210820072002410041202002676b10c401200041086a41086a220142003703002000420037030841de1d4107200041086a1003200041d0006a41086a200129030037030020002000290308370350200041d0006a411041d02d410041001000417f460d0520004100360208200041d0006a4110200041086a41044100100041016a41044d0d032000280208210b2000410036024820004201370340200041c0006a4100200241286c220941286d2201200b2001200b491b1086012000280248210a2000280240210e0240200b450d00200e200a4105746a2102200041086a41086a21062007210103402009450d01200041086a41206a200141206a290300370300200041086a41186a200141186a290300370300200041086a41106a200141106a2903003703002006200141086a290300370300200041d0006a41086a220d200641086a290000370300200041d0006a41106a2204200641106a290000370300200041d0006a41186a2205200641186a2900003703002000200129030037030820002006290000370350200241186a2005290300370000200241106a2004290300370000200241086a200d29030037000020022000290350370000200941586a2109200a41016a210a200241206a2102200141286a2101200b417f6a220b0d000b0b02402008450d00200710020b200041c8006a200a360200200aad2203421b88a70d062003420586a72201417f4c0d072000280244210f024002402001450d002001100122010d01101c000b410121010b2000200a36020c2000200136020820004100360210200041086a4100200a108601200020002802102201200a6a360210200028020820014105746a200e200a4105742202101e1a200041306a41086a200028021036020020002000290308370330200041c0006a200041306a10a2012000280248210620002802402101200041086a41086a220942003703002000420037030841e4084107200041086a1003200041d0006a41086a200929030037030020002000290308370350200041d0006a411020012006100402402000280244450d00200110020b02402000280234450d00200028023010020b410021062000410036024820004201370340200041c0006a4100200241057510860120002802482101200028024021100240200a4105742209450d00200041086a41186a220a200e41186a290000370300200041086a41106a220b200e41106a290000370300200041086a41086a220d200e41086a2900003703002000200e290000370308200141016a2104200e41206a2102200941606a2109201020014105746a210102400340200041d0006a41186a2205200a290300370300200041d0006a41106a2207200b290300370300200041d0006a41086a2208200d29030037030020002000290308370350200141186a2005290300370000200141106a2007290300370000200141086a2008290300370000200120002903503700002009450d01200a200241186a290000370300200b200241106a290000370300200d200241086a29000037030020002002290000370308200441016a2104200241206a2102200941606a2109200141206a21010c000b0b200421010b200041c0006a41086a20013602002000280244210d02402001450d002001410574210241002106200041086a41086a210a201021010340200041086a2006103220002802082209200a2802002001412010040240200028020c450d00200910020b200141206a2101200641016a2106200241606a22020d000b0b200041086a10302000280208220120002802101031210b0240200028020c450d00200110020b0240200b20064d0d00200041106a210a200621010340200041086a103020002802082202200a280200103121090240200028020c450d00200210020b200141016a21020240200920014d0d00200041086a2001103220002802082201200a2802001005200028020c450d00200110020b20022101200b2002470d000b0b200041086a103020002802102102200028020821012000200636025020012002200041d0006a410410040240200028020c450d00200110020b0240200d450d00201010020b0240200f450d00200e10020b200041f0006a24000f0b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41f4214122102d000b41f4214122102d000b1066000b1067000b41f4214122102d000b41c1214133102d000bba0103027f017e017f024002400240200041046a280200220320016b20024f0d00200120026a220220014922010d01200341017422044100200220011b2201200420014b1b2204ad42287e2205a722014100480d012005422088a74100470d01024002402003450d0020002802002106200110012202450d04200220062001200341286c2203200320014b1b101e1a200610020c010b200110012202450d030b20002002360200200041046a20043602000b0f0b1041000b101c000bf40403067f017e027f230041306b22012400200041086a28020021022001410036022820014201370320200141206a4100410410272001280220200128022822036a20023600002001200341046a360228200141086a220420012802283602002001200129032037030002400240024002402002450d0020002802002200200241286c6a21050340200141106a41086a2203410036020020014201370310200141106a41004120102720032003280200220241206a2206360200200220012802106a220241186a200041186a290000370000200241106a200041106a290000370000200241086a200041086a29000037000020022000290000370000200041206a2903002107200141106a20064108102720032003280200220641086a22023602002006200128021022086a20073700002002417f4c0d03024002402002450d002002100122030d010c060b410121030b200141206a41086a220641003602002001200236022420012003360220200141206a41002002102720062006280200220920026a22033602002009200128022022066a20082002101e1a2001280224210202402001280214450d00200810020b200120042802002003102720012802002209200428020022086a20062003101e1a2004200820036a220336020002402002450d00200610020b200041286a22002005470d000c020b0b20012802082103200128020021090b20012802042102200141206a41086a220042003703002001420037032041c7114107200141206a1003200141106a41086a200029030037030020012001290320370310200141106a411020092003100402402002450d00200910020b200141306a24000f0b1019000b101c000be60101037f0240024002402000280200220128020022024103460d0020020d0220012802042202450d0220024101470d012001410c6a280200450d02200141086a2802001002200028020010020f0b20012d00044101470d01200141086a104b200028020010020f0b0240200141106a2802002203450d00200141086a2802002102200341186c210303400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241186a2102200341686a22030d000b0b2001410c6a280200450d00200141086a28020010020b200028020010020bd60403047f017e087f230041c0006b2203240020024103742104410021050240024002400240024002402002450d0020044103752206ad4202862207a722084100480d042007422088a74100470d04200810012209450d05200120046a220a2001460d010c020b4104210941002106200120046a220a2001470d010b4101210c410021040c010b20024103742108200a41786a210b410021022009210403402004200120026a41046a280200360200200441046a21042008200241086a2202470d000b200b20016b41037641016a21054101210c410021044100210803402001280200210d0240024002402004200822026b200141046a280200220b4f0d002002200b6a22082002490d052004410174220e20082008200e491b220e4100480d052004450d01200e1001220f450d06200f200c200e20042004200e4b1b101e210f200c1002200e2104200f210c0c020b2002200b6a21080c010b200e2104200e1001220c450d040b200c20026a200d200b101e1a200141086a2201200a470d000b0b200341206a41186a22014200370300200341206a41106a22024200370300200341206a41086a2208420037030020034200370320200c20092005200341206a1007200341186a2001290300370300200341106a2002290300370300200341086a20082903003703002003200329032037030002402004450d00200c10020b02402006450d00200910020b20002003290300370000200041186a200341186a290300370000200041106a200341106a290300370000200041086a200341086a290300370000200341c0006a24000f0b1041000b101c000b14002006200710082008ad10092009ad100900000b0b0041e70a4122100800000b7901047f0240024002400240200041046a2802002201450d002001418080808004710d03200028020021022001410174220310012204450d022004200220032001200120034b1b101e1a200210020c010b410410012204450d01410421030b20002004360200200041046a20033602000f0b101c000b1050000b05001041000ba60101047f200141086a28020021024104210302400240410410012204450d002004200236000020012802002105024002402002450d00200241046a22032002490d0320034108200341084b1b22034100480d03200310012201450d02200120042003410420034104491b101e1a200410020c010b200421010b200141046a20052002101e1a20002003360204200020013602002000200241046a3602080f0b101c000b1041000b0600200010010b0600200010020b2500200020002000200020002000200028020020002802042000280208200028020c104d000b080041a4321054000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b05001041000b830101057f410421010240024002400240200041046a2802002202450d00200241d0006c2201417f4c0d0320002802002103200110012204450d02200420032001200241286c2205200520014b1b101e1a20031002200241017421010c010b41a00110012204450d010b20002004360200200041046a20013602000f0b101c000b1069000b05001041000b850101057f410421010240024002400240200041046a2802002202450d0020024180808010710d03200028020021012002410674220310012204450d0220042001200320024105742205200520034b1b101e1a20011002200241017421010c010b41800110012204450d010b20002004360200200041046a20013602000f0b101c000b106b000b05001041000b840101057f410421010240024002400240200041046a2802002202450d0020024180066c2201417f4c0d0320002802002103200110012204450d0220042003200120024180036c2205200520014b1b101e1a20031002200241017421010c010b41800c10012204450d010b20002004360200200041046a20013602000f0b101c000b106d000b05001041000b05001041000b830101057f410421010240024002400240200041046a2802002202450d00200241d0006c2201417f4c0d0320002802002103200110012204450d02200420032001200241286c2205200520014b1b101e1a20031002200241017421010c010b41a00110012204450d010b20002004360200200041046a20013602000f0b101c000b1070000b05001041000b850101057f410421010240024002400240200041046a2802002202450d00200241808080c000710d03200028020021012002410474220310012204450d0220042001200320024103742205200520034b1b101e1a20011002200241017421010c010b412010012204450d010b20002004360200200041046a20013602000f0b101c000b1072000b05001041000b05001041000b840101057f410421010240024002400240200041046a2802002202450d00200241b0016c2201417f4c0d0320002802002103200110012204450d02200420032001200241d8006c2205200520014b1b101e1a20031002200241017421010c010b41e00210012204450d010b20002004360200200041046a20013602000f0b101c000b1075000b05001041000b820101057f410421010240024002400240200041046a2802002202450d00200241306c2201417f4c0d0320002802002103200110012204450d02200420032001200241186c2205200520014b1b101e1a20031002200241017421010c010b41e00010012204450d010b20002004360200200041046a20013602000f0b101c000b1077000b05001041000b830101057f410421010240024002400240200041046a2802002202450d00200241d0006c2201417f4c0d0320002802002103200110012204450d02200420032001200241286c2205200520014b1b101e1a20031002200241017421010c010b41a00110012204450d010b20002004360200200041046a20013602000f0b101c000b1079000b05001041000b850101057f410421010240024002400240200041046a2802002202450d00200241808080c000710d03200028020021012002410474220310012204450d0220042001200320024103742205200520034b1b101e1a20011002200241017421010c010b412010012204450d010b20002004360200200041046a20013602000f0b101c000b107b000b05001041000b850101057f0240024002400240200041046a2802002201450d0020014180808010710d03200028020021022001410674220310012204450d0220042002200320014105742205200520034b1b101e1a20021002200141017421010c010b41800110012204450d01410421010b20002004360200200041046a20013602000f0b101c000b107d000b05001041000b7901047f0240024002400240200041046a2802002201450d002001418080808004710d03200028020021022001410174220310012204450d022004200220032001200120034b1b101e1a200210020c010b410410012204450d01410421030b20002004360200200041046a20033602000f0b101c000b107f000b05001041000b860101057f410421010240024002400240200041046a2802002202450d0020024180808020710d03200028020021012002410574220310012204450d0220042001200320024104742205200520034b1b101e1a20011002200241017421010c010b41c00010012204450d010b20002004360200200041046a20013602000f0b101c000b108101000b05001041000bba0103027f017e017f024002400240200041046a280200220320016b20024f0d00200120026a220220014922010d01200341017422044100200220011b2201200420014b1b2204ad42287e2205a722014100480d012005422088a74100470d01024002402003450d0020002802002106200110012202450d04200220062001200341286c2203200320014b1b101e1a200610020c010b200110012202450d030b20002002360200200041046a20043602000b0f0b1041000b101c000bba0103027f017e017f024002400240200041046a280200220320016b20024f0d00200120026a220220014922010d01200341017422044100200220011b2201200420014b1b2204ad42187e2205a722014100480d012005422088a74100470d01024002402003450d0020002802002106200110012202450d04200220062001200341186c2203200320014b1b101e1a200610020c010b200110012202450d030b20002002360200200041046a20043602000b0f0b1041000b101c000ba20103037f017e017f024002400240200041046a280200220220014f0d00200241017422032001200320014b1b2204ad420c7e2205a722014100480d012005422088a74100470d01024002402002450d0020002802002106200110012203450d042003200620012002410c6c2202200220014b1b101e1a200610020c010b200110012203450d030b20002003360200200041046a20043602000b0f0b1041000b101c000ba20103037f017e017f024002400240200041046a280200220220014f0d00200241017422032001200320014b1b2204ad42287e2205a722014100480d012005422088a74100470d01024002402002450d0020002802002106200110012203450d04200320062001200241286c2202200220014b1b101e1a200610020c010b200110012203450d030b20002003360200200041046a20043602000b0f0b1041000b101c000bba0103027f017e017f024002400240200041046a280200220320016b20024f0d00200120026a220220014922010d01200341017422044100200220011b2201200420014b1b2204ad4205862205a722014100480d012005422088a74100470d01024002402003450d0020002802002106200110012202450d0420022006200120034105742203200320014b1b101e1a200610020c010b200110012202450d030b20002002360200200041046a20043602000b0f0b1041000b101c000b0e0002402001450d00200010020b0bc00d010f7f230041e0066b220424000240200128020422052f01be032206410a4b0d00200441a8036a41206a2207200341206a290300370300200441a8036a41186a2208200341186a290300370300200441a8036a41106a2209200341106a290300370300200441a8036a41086a220a200341086a290300370300200420032903003703a8032005200128020c220b4105746a220341e0036a200341c0036a220c2006200b6b41057410391a200341d8036a200241186a290000370000200341d0036a200241106a290000370000200341c8036a200241086a290000370000200c20022900003700002005200b41286c6a220341286a2003200541be036a22052f0100200b6b41286c10391a200341206a2007290300370300200341186a2008290300370300200341106a2009290300370300200341086a200a290300370300200320042903a803370300200520052f010041016a3b0100200441b3036a200141086a280000360000200041003a000020002003360260200041106a200128020c360000200420012900003700ab03200020042900a803370001200041086a200441af036a290000370000200441e0066a24000f0b2001280208210d2001280200210e024041a0061001220b450d00200b200441a8036a41b803101e220b41003b01be03200b41003602b803200b41c0036a200441c8006a41e002101e210f200441286a41186a220c20054198056a290200370300200441286a41106a221020054190056a290200370300200441286a41086a221120054188056a290200370300200441a8036a41086a2206200541f8016a290300370300200441a8036a41106a220720054180026a290300370300200441a8036a41186a220820054188026a290300370300200441a8036a41206a220920054190026a290300370300200420054180056a290200370328200420052903f0013703a803200f200541a0056a200541be036a220a2f010041796a2212410574101e210f200b20054198026a201241286c101e210b200a41063b0100200b20123b01be03200441186a200c290300370300200441106a2010290300370300200441086a201129030037030020042004290328370300200441c8006a41206a2009290300370300200441c8006a41186a2008290300370300200441c8006a41106a2007290300370300200441c8006a41086a2006290300370300200420042903a803370348200441003602242004200b36022002400240200128020c220141064b0d002009200341206a2903003703002008200341186a2903003703002007200341106a2903003703002006200341086a290300370300200420032903003703a803200520014105746a220341e0036a200341c0036a220b200a2f010020016b41057410391a200341d8036a200241186a290000370000200341d0036a200241106a290000370000200341c8036a200241086a290000370000200b20022900003700002005200141286c6a220341286a2003200a2f010020016b41286c10391a200341206a2009290300370300200341186a2008290300370300200341106a2007290300370300200341086a2006290300370300200320042903a803370300200a200a2f010041016a3b01000c010b200c200241186a2900003703002010200241106a2900003703002011200241086a290000370300200420022900003703282009200341206a2903003703002008200341186a2903003703002007200341106a2903003703002006200341086a290300370300200420032903003703a803200f20014105746a41c07e6a200f200141796a22024105746a2203200b2f01be0320026b41057410391a200341186a200c290300370000200341106a2010290300370000200341086a201129030037000020032004290328370000200b200141286c6a220141907e6a200141e87d6a2203200b2f01be0320026b41286c10391a200141887e6a2009290300370300200141807e6a2008290300370300200141f87d6a2007290300370300200141f07d6a2006290300370300200320042903a803370300200b200b2f01be0341016a3b01be030b200041013a000020002004290300370001200041246a200e360000200041286a20053600002000412c6a200d360000200041306a2004290320370300200041386a2004290348370300200041096a200441086a290300370000200041116a200441106a290300370000200041196a200441186a290300370000200041d0006a200441c8006a41186a290300370300200041c8006a200441c8006a41106a290300370300200041c0006a200441c8006a41086a290300370300200041d8006a200441e8006a29030037030020002003360260200441e0066a24000f0b101c000ba108010a7f230041c0026b220424000240200128020422052f018e022206410a4b0d00200441286a41086a2207200241086a28020036020020042002290200370328200441386a41086a2208200341086a280200360200200420032902003703382005200128020c2202410c6c2203410c6a22096a200520036a220a200620026b410c6c10391a200a41086a2007280200360200200a200429032837020020054184016a220620096a200620036a22032005418e026a22052f010020026b410c6c10391a200341086a200828020036020020032004290338370200200520052f010041016a3b0100200128020c210520004100360200200041106a2005360200200020062005410c6c6a360230200020012902003702042000410c6a200141086a280200360200200441c0026a24000f0b2001280208210b2001280200210c024041900210012206450d002006200441386a418802101e220641003b018e022006410036028802200441386a41086a220a200541d0006a280200360200200441286a41086a2207200541d4016a280200360200200420052902483703382004200541cc016a2902003703282006200541d4006a2005418e026a22082f010041796a2209410c6c220d101e22064184016a200541d8016a200d101e210d200841063b0100200620093b018e02200441086a200a28020036020020042004290338370300200441106a41086a200728020036020020042004290328370310200441003602242004200636022002400240200128020c220941064b0d002007200241086a28020036020020042002290200370328200a200341086a2802003602002004200329020037033820052009410c6c2201410c6a22036a200520016a220220082f010020096b410c6c10391a200241086a20072802003602002002200429032837020020054184016a220220036a200220016a220120082f010020096b410c6c10391a200141086a200a28020036020020012004290338370200200820082f010041016a3b01000c010b2007200241086a28020036020020042002290200370328200a200341086a2802003602002004200329020037033820062009410c6c220141b87f6a22026a2006200141ac7f6a22036a220120062f018e02200941796a22086b410c6c10391a200141086a200728020036020020012004290328370200200d20026a200d20036a220120062f018e0220086b410c6c10391a200141086a200a28020036020020012004290338370200200620062f018e0241016a3b018e020b200041013602002000200c36020420002001360230200041086a20053602002000410c6a200b360200200041106a20042903003702002000411c6a2004290310370200200041286a2004290320370200200041186a200441086a280200360200200041246a200441106a41086a280200360200200441c0026a24000f0b101c000bf307010d7f23004180036b220624000240200128020422072f018e02410a4b0d00200641c8006a41086a200241086a28020036020020062002290200370348200641f8006a41086a200341086a280200360200200620032902003703782001200641c8006a200641f8006a2004108b0120004100360200200020012902003702042000410c6a200141086a29020037020020064180036a24000f0b2001280208210820012802002109024041c0021001220a450d004100210b200a200641f8006a418802101e220a41003b018e02200a410036028802200a200629024837029002200a4198026a200641c8006a41086a220c290200370200200a41a0026a200641d8006a290200370200200a41a8026a200641e0006a290200370200200a41b0026a200641e8006a290200370200200a41b8026a200641f0006a290200370200200c200741d0006a28020036020020062007290248370348200641f8006a41086a220d200741d4016a2802003602002006200741cc016a290200370378200a200741d4006a2007418e026a220e2f0100220f41796a2210410c6c2211101e22124184016a200741d8016a2011101e1a20124190026a220a200741ac026a200f417a6a220f410274101e1a200e41063b0100201220103b018e020240200f450d000340200a280200220e200b3b018c02200e201236028802200a41046a210a200b41016a220b200f490d000b0b200641386a41086a220b200c280200360200200641286a41086a220a200d2802003602002006200629034837033820062006290378370328200641086a200b28020036020020062006290338370300200641106a41086a200a28020036020020062006290328370310200620093602242006201236022002400240200128020c220b41064b0d002006200736027c2006200936027820062008360280012006200b36028401200641386a41086a200241086a28020036020020062002290200370338200641c8006a41086a200341086a28020036020020062003290200370348200641f8006a200641386a200641c8006a2004108b010c010b2006201236027c200620093602782006200b41796a360284012006200641206a36028001200641386a41086a200241086a28020036020020062002290200370338200641c8006a41086a200341086a28020036020020062003290200370348200641f8006a200641386a200641c8006a2004108b010b2000200936020420004101360200200041086a20073602002000410c6a2008360200200041106a20062903003702002000411c6a2006290310370200200041286a2006290320370200200041186a200641086a280200360200200041246a200641106a41086a28020036020020064180036a24000f0b101c000b890301077f230041206b22042400200041046a22052802002106200028020c2107200441086a2208200141086a28020036020020042001290200370300200441106a41086a2209200241086a2802003602002004200229020037031020062007410c6c2202410c6a220a6a200620026a220120062f018e0220076b410c6c10391a200141086a20082802003602002001200429030037020020064184016a2201200a6a200120026a220220062f018e0220076b410c6c10391a200241086a200928020036020020022004290310370200200620062f018e0241016a3b018e0220064190026a2206200028020c22074102746a41086a2006200741016a22074102746a220620052802002f018e0220076b41027410391a200620033602000240200028020c220041016a220620052802002f018e0222034b0d0020004102744194026a21000340200641016a22072006490d012005280200220220006a2802002201200236028802200120063b018c02200041046a210020072106200720034d0d000b0b200441206a24000bd40c02117f017e230041c0076b220624000240200128020422072f01be03410a4b0d00200641f8006a41186a200241186a290000370300200641f8006a41106a200241106a290000370300200641f8006a41086a200241086a2900003703002006200229000037037820064188046a41206a200341206a29030037030020064188046a41186a200341186a29030037030020064188046a41106a200341106a29030037030020064188046a41086a200341086a29030037030020062003290300370388042001200641f8006a20064188046a2004108d01200041003a0000200041046a20012902003702002000410c6a200141086a290200370200200641c0076a24000f0b2001280208210820012802002109024041d0061001220a450d004100210b200a20064188046a41b803101e220a41003b01be03200a41003602b803200a41c0036a200641f8006a419003101e210c200641286a41186a220d20074198056a290000370300200641286a41106a220e20074190056a290000370300200641286a41086a220f20074188056a290000370300200620074180056a29000037032820064188046a41206a221020074190026a29030037030020064188046a41186a221120074188026a29030037030020064188046a41106a221220074180026a29030037030020064188046a41086a2213200741f8016a290300370300200620072903f00137038804200c200741a0056a200741be036a22142f0100221541796a2216410574101e1a200a20074198026a201641286c101e220c41a0066a220a200741bc066a2015417a6a2215410274101e1a201441063b0100200c20163b01be0302402015450d000340200a2802002216200b3b01bc032016200c3602b803200a41046a210a200b41016a220b2015490d000b0b200641f8006a41206a220b2010290300370300200641f8006a41186a220a2011290300370300200641f8006a41106a22162012290300370300200641f8006a41086a22152013290300370300200641d8006a41086a2210200f290300370300200641d8006a41106a2211200e290300370300200641d8006a41186a2212200d290300370300200620062903880437037820062006290328370358200641086a41186a2012290300370300200641086a41106a2011290300370300200641086a41086a201029030037030020062006290358370308200641286a41206a200b290300370300200d200a290300370300200e2016290300370300200f201529030037030020062006290378370328200620093602542006200c36025002400240200128020c220b41064b0d002006200736025c20062009360258200620083602602006200b360264200641f8006a41186a200241186a290000370300200641f8006a41106a200241106a290000370300200641f8006a41086a200241086a2900003703002006200229000037037820064188046a41206a200341206a29030037030020064188046a41186a200341186a29030037030020064188046a41106a200341106a29030037030020064188046a41086a200341086a2903003703002006200329030037038804200641d8006a200641f8006a20064188046a2004108d010c010b2006200c36025c200620093602582006200b41796a3602642006200641d0006a360260200641f8006a41186a200241186a290000370300200641f8006a41106a200241106a290000370300200641f8006a41086a200241086a2900003703002006200229000037037820064188046a41206a200341206a29030037030020064188046a41186a200341186a29030037030020064188046a41106a200341106a29030037030020064188046a41086a200341086a2903003703002006200329030037038804200641d8006a200641f8006a20064188046a2004108d010b20002006290308370001200041246a2009360200200041286a20073602002000412c6a2008360200200041386a2006290328370300200041096a200641086a41086a290300370000200041116a200641086a41106a290300370000200041196a200641086a41186a290300370000200041c0006a200641286a41086a290300370300200041c8006a200641286a41106a290300370300200041d0006a200641286a41186a290300370300200041d8006a200641c8006a29030037030020062903502117200041013a0000200041306a2017370200200641c0076a24000f0b101c000bb804010b7f230041d0006b22042400200041046a22052802002106200028020c2107200441086a41186a2208200141186a290000370300200441086a41106a2209200141106a290000370300200441086a41086a220a200141086a29000037030020042001290000370308200441286a41206a2201200241206a290300370300200441286a41186a220b200241186a290300370300200441286a41106a220c200241106a290300370300200441286a41086a220d200241086a29030037030020042002290300370328200620074105746a220241e0036a200241c0036a220e20062f01be0320076b41057410391a200241d8036a2008290300370000200241d0036a2009290300370000200241c8036a200a290300370000200e20042903083700002006200741286c6a220241286a200220062f01be0320076b41286c10391a200241206a2001290300370300200241186a200b290300370300200241106a200c290300370300200241086a200d29030037030020022004290328370300200620062f01be0341016a3b01be03200641a0066a2206200028020c22024102746a41086a2006200241016a22024102746a220620052802002f01be0320026b41027410391a200620033602000240200028020c220241016a220620052802002f01be0322034b0d00200241027441a4066a21020340200641016a22012006490d012005280200220020026a280200220720003602b803200720063b01bc03200241046a210220012106200120034d0d000b0b200441d0006a24000b8614010e7f230041d0006b220424004100210502404101417f100d2206417f460d002004410036020820044204370300200441386a41ae0d4103102a200441106a41b10d410f102a200441cc006a2207200441106a41086a220528020036020020042004290310370244200441106a41106a2208200441386a41106a22092903003703002005200441386a41086a220a290300370300200420042903383703102004106a2004280204210b2004280200220c2004280208220d4105746a220e2004290310370200200e4100360218200e41086a2005290300370200200e41106a2008290300370200200e411c6a41013602002004200d41016a220d360208200441386a41ae0d4103102a200441106a41c00d410f102a2007200528020036020020042004290310370244200820092903003703002005200a290300370300200420042903383703100240200d200b470d002004106a200441086a280200210d2004280200210c2004280204210b0b200c200d4105746a220e2004290310370200200e4100360218200e41106a2008290300370200200e41086a2005290300370200200e411c6a4102360200200441086a200d41016a220e360200200441386a41ae0d4103102a200441106a41cf0d410c102a2007200528020036020020042004290310370244200820092903003703002005200a290300370300200420042903383703100240200e200b470d002004106a200441086a280200210e2004280204210b2004280200210c0b200c200e4105746a2208200429031037020020084100360218200841106a200441106a41106a220d290300370200200841086a200441106a41086a22052903003702002008411c6a4103360200200441086a2207200e41016a220e360200200441386a41ae0d4103102a200441106a41db0d410a102a200441cc006a2209200528020036020020042004290310370244200d200441386a41106a220a2903003703002005200441386a41086a220f290300370300200420042903383703100240200e200b470d002004106a2007280200210e2004280200210c2004280204210b0b200c200e4105746a2208200429031037020020084100360218200841106a200d290300370200200841086a20052903003702002008411c6a41043602002007200e41016a2208360200200441386a41ae0d4103102a200441106a41e50d4106102a2009200528020036020020042004290310370244200d200a2903003703002005200f2903003703002004200429033837031002402008200b470d002004106a200441086a28020021082004280200210c0b200c20084105746a2205200429031037020020054101360218200541106a200441106a41106a220b290300370200200541086a200441106a41086a2903003702002005411c6a2006360200200441086a200841016a2205360200200b200241086a290000370300200441106a41186a200241106a290000370300200441306a200241186a2900003703002004200336021020042006360214200420022900003703184104210702400240410410012210450d00201020053600000240024002402005450d00200c20054105746a2111200441c0006a210341042107410421080340200441386a200c105120042802382105410121064100210b024020032802002202450d0020024100480d042002210b200210012206450d050b200620052002101e210a0240200428023c450d00200510020b200441386a200c410c6a220f105120042802382109024002400240200b20026b2003280200220d490d002002200d6a2105200b2106200a220e20026a2009200d101e1a200428023c0d010c020b2002200d6a22052002490d05200b4101742206200520052006491b22064100480d0520061001210e0240200b450d00200e450d07200e200a2006200b200b20064b1b101e210b200a1002200b20026a2009200d101e1a200428023c0d010c020b200e450d06200e20026a2009200d101e1a200428023c450d010b200910020b2003410036020020044201370338200c41186a2802002102200441386a104f2004280238220d2003280200220b6a21090240024002400240024002400240024020024101470d00200941023a00002003200b41016a2202360200200c411c6a280200210c200428023c220920026b41034b0d01200241046a220b2002490d0b2009410174220a200b200b200a491b220a4100480d0b200a1001210b2009450d02200b450d0c200b200d200a20092009200a4b1b101e1a200d10020c030b200941013a00002003200b41016a2202360200200c411c6a280200210c200428023c220920026b41034b0d00200241046a220b2002490d0a2009410174220a200b200b200a491b220a4100480d0a200a1001210b2009450d03200b450d0b200b200d200a20092009200a4b1b101e1a200d10020c040b200d210b0c050b200b450d090b2004200a36023c0c020b200b450d070b2004200a36023c0b2004200b3602380b200b20026a200c3600002003200241046a220c360200200428023c210a0240024002400240200620056b200c4f0d002005200c6a22022005490d072006410174220d20022002200d491b22094100480d0720091001210d2006450d01200d450d08200d200e20092006200620094b1b101e2106200e1002200620056a200b200c101e1a200a0d020c030b2005200c6a210220062109200e220d20056a200b200c101e1a200a0d010c020b200d450d06200d20056a200b200c101e1a200a450d010b200b10020b0240024002400240200720086b20024f0d00200820026a22052008490d0720074101742206200520052006491b22064100480d072007450d0120061001220b450d08200b201020062007200720064b1b101e210b2010100220062107200b221020086a200d2002101e1a20090d020c030b200820026a2105201020086a200d2002101e1a20090d010c020b20062107200610012210450d06201020086a200d2002101e1a2009450d010b200d10020b20052108200f41146a220c2011470d000c020b0b410421050b41052000200120102005200441106a100e210202402007450d00201010020b02402002417f460d00410121050240200241eb0d4104200441106a100f2202450d002002417d470d04410021050b200428020021030240200441086a2802002202450d00200241057421062003210203400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241206a2102200641606a22060d000b0b2004280204450d0420031002200441d0006a240020050f0b200428020021060240200441086a2802002202450d00200241057421052006210203400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241206a2102200541606a22050d000b0b02402004280204450d00200610020b200441d0006a240041000f0b1041000b101c000b41fc3a103b000b200441d0006a240020050bbe0701047f23004190016b220424000240024002400240024002400240024002402003450d0020022802000d0120034101460d0220022802100d0320034103490d0420022802200d0520022802042103200241146a2802002105200241246a2802002106200441186a4200370300200441106a4200370300200441086a42003703002004420037030002400240024002402001280204220720032004412010102202417e460d0020020d0a200441206a41186a200141206a290000370300200441206a41106a200141186a290000370300200441206a41086a200141106a290000370300200420012900083703202005450d01200441c0006a41186a4200370300200441c0006a41106a4200370300200441c0006a41086a42003703002004420037034020072006200441c0006a412010102202417e460d0320020d0c20012802002101412010012202450d0b2004200236028001200442203702840120044180016a41004120102720042802800120042802880122036a22022004290300370000200441e0006a41086a200341206a2203360200200241086a200441086a290300370000200241106a200441106a290300370000200241186a200441186a29030037000020042004290380013703602004200336028801412010012202450d0b2004200236028001200442203702840120044180016a41004120102720042802800120042802880122036a22022004290340370000200441f0006a41086a200341206a2203360200200241086a200441c0006a41086a290300370000200241106a200441c0006a41106a290300370000200241186a200441c0006a41186a290300370000200420042903800137037020042003360288012001200441206a200441e0006a200441f0006a1094010c020b2000410536020020044190016a24000f0b20012802002101412010012202450d092004200236024020044220370244200441c0006a4100412010272004280240200428024822036a2202200429030037000020044180016a41086a200341206a2203360200200241086a200441086a290300370000200241106a200441106a290300370000200241186a200441186a290300370000200420042903403703800120042003360248200441003602402001200441206a20044180016a200441c0006a1094010b2000410436020020044190016a24000f0b2000410536020020044190016a24000f0b41bc3441004100103c000b41ec3f103b000b41cc3441014101103c000b41ec3f103b000b41dc3441022003103c000b41ec3f103b000b41cc31103b000b101c000b41cc31103b000bc50301027f230041d0006b2204240002400240024002400240024002402003450d0020022802000d0120034101460d0220022802100d0320022802042103200241146a2802002102200441186a4200370300200441106a4200370300200441086a420037030020044200370300024002400240024002402001280204220520032004412010102203417e460d0020030d09200441206a41186a200141206a290000370300200441206a41106a200141186a290000370300200441206a41086a200141106a29000037030020042001290008370320200441c0006a2001280200200441206a2004412010950120042802402201450d0120042802442103200520022001200441c0006a41086a28020010112202417e460d0320020d0a2003450d02200110020c020b20004105360200200441d0006a24000f0b2005200241bd0e412010112202417e460d0220020d090b20004104360200200441d0006a24000f0b2000410536020002402003450d00200110020b200441d0006a24000f0b20004105360200200441d0006a24000f0b419c3441004100103c000b41ec3f103b000b41ac3441014101103c000b41ec3f103b000b41cc31103b000b41e431103b000b41e431103b000b861a05037f017e047f047e027f230041a0076b22042400024002400240024002400240024002400240024002400240024002402003450d0020022802000d0120034101460d0220022802100d0320034103490d0420022802200d0520022802042105200241146a2802002106200241246a3502002107410021022004410036020820044201370300024002402006450d0020044100200610272004280200200441086a220828020022096a210a024020064101460d00410021020340200a20026a41003a0000200241026a2103200241016a220b210220032006490d000b2009200b6a2109200a200b6a210a0b200a41003a00002008200941016a2202360200200428020021030c010b410121030b024002400240200128020420052003200210102206417e460d0020060d09200441e8036a2002412020024120491b22066a41004100412020066b2006411f4b1b10171a200441e8036a20032006101e1a2002411f4d0d0b200441106a41186a200441e8036a41186a290000370300200441106a41106a200441e8036a41106a290000370300200441106a41086a200441e8036a41086a290000370300200420042900e803370310200441306a41186a200141206a290000370300200441306a41106a200141186a290000370300200441306a41086a200141106a29000037030020042001290008370330200128020022022802002206417f460d0a2002200641016a360000200241046a220a200441306a1096012206450d012006280200450d01200641086a290300210c0c020b200041053602002004280204450d0f0c0e0b2002280210200441306a200241146a280200280214111400210c0b200220022802002206417f6a360000200c2007540d092006450d072002200636000002400240200a200441106a1096012206450d002006280200450d00200641086a290300210d0c010b2002280210200441106a200241146a280200280214111400210d0b20022002280200417f6a360000024002400240410810012206450d00200420063602e803200442083702ec03200441e8036a41004108102720042802e80320042802f00322066a42f3e885d3a3ec9bb73a3700002004200641086a3602f00320044188016a41086a20042802f003360200200420042903e80337038801412010012206450d00200420063602e803200442203702ec03200441e8036a41004120102720042802e803220a20042802f003220b6a22062004290330370000200641086a200441306a41086a290300370000200641106a200441306a41106a290300370000200641186a200441306a41186a2903003700002004200b41206a22063602f00320042802ec03210520044188016a20042802900120061027200428028801220b20042802900122096a200a2006101e1a2004200920066a22063602900102402005450d00200a10020b200428028c01210a4200210e200441e8036a41086a22054200370300200442003703e803200b2006200441e8036a100320044188016a41086a2005290300370300200420042903e80337038801024020044188016a411041d02d410041001000417f460d00200442003703e80320044188016a4110200441e8036a41084100100041016a41084d0d0220042903e803210e0b0240200a450d00200b10020b410810012206450d00200420063602e803200442083702ec03200441e8036a41004108102720042802e80320042802f00322066a42f3e885d3a3ec9bb73a3700002004200641086a3602f00320044188016a41086a20042802f003360200200420042903e80337038801412010012206450d00200420063602e803200442203702ec03200441e8036a41004120102720042802e803220a20042802f003220b6a22062004290310370000200641086a200441106a41086a290300370000200641106a200441106a41106a290300370000200641186a200441106a41186a2903003700002004200b41206a22063602f00320042802ec03210520044188016a20042802900120061027200428028801220b20042802900122096a200a2006101e1a2004200920066a22063602900102402005450d00200a10020b200428028c01210a4200210f200441e8036a41086a22054200370300200442003703e803200b2006200441e8036a100320044188016a41086a2005290300370300200420042903e80337038801024020044188016a411041d02d410041001000417f460d00200442003703e80320044188016a4110200441e8036a41084100100041016a41084d0d0320042903e803210f0b0240200a450d00200b10020b200e200f560d0d200d20077c220e200d580d0e41a00610012206450d002006200441e8036a41b803101e220641003b01be03200641003602b803200641c0036a20044188016a41e002101e1a200441d0006a41086a220a4200370300200441e4006a41c43d360200200420063602542004410036025020042002360260200441d0006a41047221020240200441306a200441106a41201006450d002004417f360250200441e8036a41186a2206200441306a41186a290300370300200441e8036a41106a2209200441306a41106a290300370300200441e8036a41086a200441306a41086a290300370300200420042903303703e803200420023602702004200a2802003602682004200428025436026c20044188016a200441e8006a200441e8036a1097014101210a20044188016a41106a280200210b20044188016a410c6a280200210820044188016a41086a2802002105200428028c01211002402004280288014101470d00200441e8006a41186a2006290300370300200441e8006a41106a2009290300370300200441e8006a41086a200441e8036a41086a290300370300200420042903e8033703684100210a0b41900210012206450d01200c20077d21072006200441e8036a418802101e220641003b018e02200641003602880202400240200a450d0020042006360288012004420037028c012005200b41286c6a2106200441e8036a20044188016a109801200441e8036a1099010c010b20044184046a200441f0006a2903003702002004418c046a200441f8006a29030037020020044194046a20044180016a290300370200200420053602ec03200420103602e803200420083602f0032004200b3602f4032004200441d0006a410c6a3602f803200420042903683702fc03200441a8016a420037030020044100360298012004420037038801200420063602a401200441e8036a20044188016a109a0121060b20064201370300200620073703082004417f360250200441e8036a41186a2206200441106a41186a290300370300200441e8036a41106a2209200441106a41106a290300370300200441e8036a41086a2208200441106a41086a290300370300200420042903103703e803200420023602702004200441d0006a41086a2802003602682004200428025436026c20044188016a200441e8006a200441e8036a1097014101210a20044188016a41106a280200210b20044188016a410c6a280200211020044188016a41086a2802002105200428028c01211102402004280288014101470d00200441e8006a41186a2006290300370300200441e8006a41106a2009290300370300200441e8006a41086a2008290300370300200420042903e8033703684100210a0b41900210012206450d012006200441e8036a418802101e220641003b018e02200641003602880202400240200a450d0020042006360288012004420037028c012005200b41286c6a2106200441e8036a20044188016a109801200441e8036a1099010c010b20044184046a200441f0006a2903003702002004418c046a200441f8006a29030037020020044194046a20044180016a290300370200200420053602ec03200420113602e803200420103602f0032004200b3602f4032004200441d0006a410c6a3602f803200420042903683702fc03200441a8016a420037030020044100360298012004420037038801200420063602a401200441e8036a20044188016a109a0121060b200642013703002006200e370308200441003602500b200441e8036a200441d0006a200441106a109b0102400240024020042802f0032206450d0020042802e803220a2006200441106a200441d0006a108e01450d010b200441d8006a290300210720042802542102024020042802ec03450d0020042802e80310020b2002450d0120012802002106200420073702ec03200420023602e8032006200441e8036a109c010c010b024020042802ec03450d00200a10020b20044188016a41086a200241086a2802003602002004200229020037038801200441e8036a20044188016a109d01200441e8036a109e010b2000410436020020042802040d0f0c100b101c000b41c1214133102d000b41c1214133102d000b41ec3341004100103c000b41ec3f103b000b41fc3341014101103c000b41ec3f103b000b418c3441022003103c000b41ec3f103b000b41cc31103b000b109f01000b41ec3f103b000b418c3c103b000b41a43c103b000b41bc3c103b000b200310020b200441a0076a24000b811a06047f017e047f017e037f057e230022042105200441c0086b4160712204240002400240024002400240024002400240024002400240024002400240024002400240024002402003450d0020022802000d0120034101460d0220022802100d0320034103490d0420022802200d0520022802042106200241146a2802002107200241246a3502002108410021022004410036020820044201370300024002402007450d0020044100200710272004280200200441086a2209280200220a6a210b024020074101460d00410021020340200b20026a41003a0000200241026a2103200241016a220c210220032007490d000b200a200c6a210a200b200c6a210b0b200b41003a00002009200a41016a2202360200200428020021030c010b410121030b024002400240200128020420062003200210102207417e460d0020070d09200441106a41186a200141206a290000370300200441106a41106a200141186a290000370300200441186a200141106a2900003703002004200129000837031020012802002207280200220b417f460d0a2007200b41016a360000200741046a200441106a109601220b450d01200b280200450d01200b41086a290300210d0c020b200041053602002004280204450d140c130b2007280210200441106a200741146a280200280214111400210d0b20072007280200417f6a360000200d2008540d08200441c8046a41186a220b4200370300200441c8046a41106a220c4200370300200441c8046a41086a22014200370300200442003703c80420032002200441c8046a1012200441e8016a41186a2206200b290300370300200441e8016a41106a220a200c290300370300200441e8016a41086a22092001290300370300200420042903c8043703e801200b2006290300370300200c200a29030037030020012009290300370300200420042903e8013703c80441201001220e450d0d2004200e3602e801200442203702ec01200441e8016a41004120102720042802e80120042802f001220f6a220e20042903c80437000020044180086a41086a2210200f41206a220f360200200e41086a2001290300370000200e41106a200c290300370000200e41186a200b290300370000200420042903e801370380082004200f3602f00120044180086a20102802004120102720102010280200220e41206a220f360200200e20042802800822106a220e2004290310370000200e41086a200441106a41086a290300370000200e41106a200441106a41106a290300370000200e41186a200441106a41186a290300370000200b4200370300200c420037030020014200370300200442003703c8042010200f200441c8046a10122006200b290300370300200a200c29030037030020092001290300370300200420042903c8043703e801200441306a41186a2006290300370300200441306a41106a200a290300370300200441306a41086a2009290300370300200420042903e8013703300240200428028408450d00201010020b200441306a200441106a41201006450d1041a0061001220b450d0d200b200441c8046a41b803101e220b41003b01be03200b41003602b803200b41c0036a200441e8016a41e002101e1a2004200b36025020044200370254200441306a200441106a41201006450d09200441a0016a41186a200441306a41186a290300370300200441a0016a41106a200441306a41106a290300370300200441a0016a41086a200441306a41086a290300370300200420042903303703a0012002417f4c0d0a024002402002450d0020021001220b0d010c0f0b4101210b0b200420023602cc042004200b3602c804200441003602d004200441c8046a410020021027200420042802d004220b20026a3602d004200b20042802c8046a20032002101e1a200441e8016a41086a220c20042802d004360200200420042903c8043703e80141900210012202450d0d200441d0006a41086a210b2002200441c8046a418802101e220241003b018e022002410036028802200420083703c801200442013703c001200420023602dc01200420042903e8013703d0012004200c2802003602d801200441c8046a41186a2202200441a0016a41186a290300370300200441c8046a41106a220c200441a0016a41106a290300370300200441c8046a41086a200441a0016a41086a290300370300200420042903a0013703c804200420042802543602b008200420042802503602b4082004200441d0006a3602b808200441e8016a200441b0086a200441c8046a109701200441a0086a41086a200441f4016a290200370300200420042902ec013703a008024020042802e8014101470d0020044180086a41186a2201200229030037030020044180086a41106a2202200c29030037030020044180086a41086a220c200441c8046a41086a2206290300370300200420042903c80437038008200441b0086a41086a200441a0086a41086a220a290300370300200420042903a0083703b0082006200a290300370300200441e4046a200c290300370200200441ec046a2002290300370200200441f4046a20012903003702002004200b3602d804200420042903a0083703c80420042004290380083702dc0420044188026a4200370300200441e8016a41186a20042903d801370300200420042903d0013703f801200420042903c8013703f001200420042903c0013703e801200441c8046a200441e8016a109a011a2004420237036041010d0d0c0c0b200441c8046a41086a200441a0086a41086a290300370300200420042903a0083703c80420042802cc0420042802d40441286c6a22022900102112200220042903d00137001020022900082113200220042903c80137000820022900002114200220042903c0013700002002290020211120024200370020200241186a22022900002115200220042903d8013700002004200b3602d8042004201237037020042013370368200420143703602004201537037820144202520d0b0c0c0b41bc3341004100103c000b41ec3f103b000b41cc3341014101103c000b41ec3f103b000b41dc3341022003103c000b41ec3f103b000b41cc31103b000b109f01000b41943d103b000b41ac3d103b000b1019000b024020042802702202450d002004280274450d00200210020b200420113702ec012004200428027c3602e801200441c8046a200441e8016a109801200441c8046a1099010b200441a0016a41186a220c200441106a41186a290300370300200441a0016a41106a2201200441106a41106a290300370300200441a0016a41086a2206200441106a41086a290300370300200420042903103703a00141900210012202450d002002200441c8046a418802101e220241003b018e0220024100360288022004200d20087d3703c801200442013703c001200441003602d001200420023602dc01200441c8046a41186a200c290300370300200441c8046a41106a2001290300370300200441c8046a41086a2006290300370300200420042903a0013703c804200420042802543602b008200420042802503602b4082004200441d0006a3602b808200441e8016a200441b0086a200441c8046a109701200441a0086a41086a200441f4016a290200370300200420042902ec013703a0080240024020042802e8014101470d0020044180086a41186a2202200441c8046a41186a29030037030020044180086a41106a220c200441c8046a41106a29030037030020044180086a41086a2201200441c8046a41086a2206290300370300200420042903c80437038008200441b0086a41086a200441a0086a41086a220a290300370300200420042903a0083703b0082006200a290300370300200441e4046a2001290300370200200441ec046a200c290300370200200441f4046a20022903003702002004200b3602d804200420042903a0083703c80420042004290380083702dc0420044188026a4200370300200441e8016a41186a20042903d801370300200420042903d0013703f801200420042903c8013703f001200420042903c0013703e801200441c8046a200441e8016a109a011a200442023703800141010d010c030b200441c8046a41086a200441a0086a41086a290300370300200420042903a0083703c80420042802cc0420042802d40441286c6a22022900102111200220042903d00137001020022900082114200220042903c8013700082002290000210d200220042903c0013700002002290020210820024200370020200241186a22022900002112200220042903d8013700002004200b3602d804200420113703900120042014370388012004200d370380012004201237039801200d4202520d020b20042802502202450d030c020b101c000b02402004280290012202450d00200428029401450d00200210020b200420083702ec012004200428029c013602e801200441c8046a200441e8016a109801200441c8046a10990120042802502202450d010b200420042902543702cc04200420023602c8042007200441c8046a109c010b200041043602002004280204450d010b200310020b200524000bd41003027f017e077f230041c0006b22042400024020010d0041d02d2100410021010b20044100360200024002400240024002400240200141034d0d002004200028000022053602002005ad2206421c88a70d012006420486a72207417f4c0d02024002402007450d002007100122080d010c070b410821080b20042005360204200420083602002004410036020802400240024002402005450d002001417c6a2101200041046a2107200441086a2109410021004100210a0340200441003a0030200441306a20072001410047220b101e1a2001450d0320042d0030417f6a220c41034b0d032001200b6b21012007200b6a210702400240024002400240024002400240200c0e0403010400030b20044200370330200441306a20072001410820014108491b220b101e1a200141074d0d0a2007200b6a2107200429033021064103210c0c010b20044200370330200441306a20072001410820014108491b220b101e1a200141074d0d092007200b6a2107200429033021064101210c0b200a41016a210a20002004280204470d040c030b20044100360230200441306a20072001410420014104491b220b101e1a200141034d0d072007200b6a21072004280230210d4100210c0c010b20044100360230200441306a20072001410420014104491b220b101e1a200141034d0d062007200b6a21072004280230210d4102210c0b200a41016a210a20002004280204470d010b200410800120092802002100200428020021080b2001200b6b2101200820004104746a220b200d360204200b200c360200200b41086a20063703002009200041016a2200360200200a2005490d000b20042802042107200428020022080d010c030b41002100410021072008450d020b20042002200820002003110700200441003602182004420137031020042802002101200441106a107e2004280210200428021822006a210a024020014105470d00200a41013a0000200441186a2201200041016a2200360200200441106a20004100102720012802002101200428021021000c070b200a41003a0000200441106a41086a200041016a22003602002004410036022820044201370320200441206a104f2004280220220b2004280228220a6a210c0240024020014104470d00200c41003a0000200441206a41086a200a41016a220a3602000c010b200c41013a0000200441206a41086a200a41016a36020020044100360238200442013703300240024002400240024002400240024002400240024002400240024002400240024002400240200141037122014101460d00024020014102460d0020014103470d02200441086a2903002106200441306a104f20042802302205200441306a41086a220b280200220c6a41043a0000200b200c41016a22013602002004280234220d20016b41074b0d03200141086a220a2001490d1a200d4101742209200a200a2009491b22094100480d1a20091001210a200d450d07200a450d1c200a20052009200d200d20094b1b101e1a200510020c080b20042802042102200441306a104f20042802302205200441386a220b280200220c6a41033a0000200b200c41016a22013602002004280234220d20016b41034b0d03200141046a220a2001490d19200d4101742209200a200a2009491b22094100480d1920091001210a200d450d09200a450d1b200a20052009200d200d20094b1b101e1a200510020c0a0b200441086a2903002106200441306a104f20042802302205200441306a41086a220b280200220c6a41023a0000200b200c41016a22013602002004280234220d20016b41074b0d03200141086a220a2001490d18200d4101742209200a200a2009491b22094100480d1820091001210a200d450d0b200a450d1a200a20052009200d200d20094b1b101e1a200510020c0c0b20042802042102200441306a104f20042802302205200441386a220b280200220c6a41013a0000200b200c41016a22013602002004280234220d20016b41034b0d03200141046a220a2001490d17200d4101742209200a200a2009491b22094100480d1720091001210a200d450d0d200a450d19200a20052009200d200d20094b1b101e1a200510020c0e0b2005210a0c050b2005210a0c070b2005210a0c090b2005210a0c0b0b200a450d140b200420093602342004200a3602300b200b200c41096a360200200a20016a20063700000c090b200a450d110b200420093602342004200a3602300b200b200c41056a360200200a20016a20023600000c060b200a450d0e0b200420093602342004200a3602300b200b200c41096a360200200a20016a20063700000c030b200a450d0b0b200420093602342004200a3602300b200b200c41056a360200200a20016a20023600000b200428023421092004280230210c02400240024002402004280224220d200441206a41086a28020022016b200441306a41086a280200220a4f0d002001200a6a220b2001490d0a200d4101742205200b200b2005491b22054100480d0a200d450d012004280220210220051001220b450d0c200b20022005200d200d20054b1b101e1a200210020c020b2004280220210b0c020b20051001220b450d0a0b200420053602242004200b3602200b200441286a220d2001200a6a360200200b20016a200c200a101e1a02402009450d00200c10020b200d280200210a2004280220210b0b2004280224210c200441106a2000200a1027200441186a22012001280200220d200a6a2201360200200d200428021022006a200b200a101e1a200c450d06200b10020c060b2004280204450d00200428020010020b41af1b41f000102d000b200420002001101e1a41af1b41f000102d000b105a000b105b000b1041000b2000ad4220862001ad84210602402007450d00200810020b200441c0006a240020060f0b101c000ba30501097f230041e0026b220424000240024020002802000d002000417f360000200441306a41186a2205200141186a290000370300200441306a41106a2206200141106a290000370300200441306a41086a2207200141086a290000370300200420012900003703302004200041046a3602182004200041086a28020036021020042000280204360214200441b8026a200441106a200441306a10970141012108200441b8026a41106a2802002109200441c4026a280200210a200441b8026a41086a280200210b20042802bc02210c024020042802b8024101470d00200441106a41186a2005290300370300200441106a41106a2006290300370300200441106a41086a200729030037030020042004290330370310410021080b41900210012201450d012001200441306a418802101e220141003b018e022001410036028802024002402008450d00200420013602b802200442003702bc02200b200941286c6a2101200441306a200441b8026a109801200441306a1099010c010b200441cc006a200441186a290300370200200441d4006a200441206a290300370200200441dc006a200441286a2903003702002004200b3602342004200c3602302004200a3602382004200936023c20042000410c6a36024020042004290310370244200441d8026a4200370300200441003602c802200442003703b802200420013602d402200441306a200441b8026a109a0121010b200441b8026a41086a200241086a280200360200200420022902003703b802200441306a41086a200341086a2802003602002004200329020037033020042001411c6a200441b8026a200441306a10d20102402004280200450d0020042802042201450d00200441086a280200450d00200110020b20004100360000200441e0026a24000f0b10c301000b101c000be60602097f017e230041206b22052400024002400240024020012802002206417f460d002001200641016a360000200141046a20021096012206450d02200628022021072006411c6a28020022082f018e022209450d01410f210a0c030b109f01000b4101210a0c010b4116210a0b034002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200a0e170a090c0d160e0f1314151012110708000102030406050b0b0b20082009410c6c6a210b41002109200821064110210a0c280b20032006280200200641086a280200220c2004200c2004491b1006220d450d174111210a0c270b200d411e76417f73410271417f6a220c450d254112210a0c260b200c4101470d194113210a0c250b200941016a21092006410c6a2206200b470d170c160b4100417f4101200c20044b1b200c2004461b220c0d214114210a0c230b200541013a000c20052d000c4101710d11410d210a0c220b2007450d1e410e210a0c210b2007417f6a2107200820094102746a4190026a28020022082f018e0222090d0e4101210a0c200b200541003a000c20052d000c410171450d140c150b2008418e026a2f010021090c0f0b20002001280210200220032004200141146a28020028020c1113000c190b20082009410c6c6a22064184016a2802002204450d134103210a0c1c0b2006418c016a2802002206417f4c0d134105210a0c1b0b2006450d134106210a0c1a0b2006100122090d13410a210a0c190b101c000b410021090c120b410121094107210a0c160b200520063602142005200936021020054100360218200541106a41002006102720052005280218220c20066a360218200c200528021022096a20042006101e1a2005290214210e4108210a0c150b2000200e370204200020093602004109210a0c140b20012001280200417f6a360000200541206a24000f0b1019000b410f210a0c110b4102210a0c100b4115210a0c0f0b4101210a0c0e0b4100210a0c0d0b4110210a0c0c0b4101210a0c0b0b410d210a0c0a0b4102210a0c090b410c210a0c080b4104210a0c070b410b210a0c060b4107210a0c050b4108210a0c040b4109210a0c030b4116210a0c020b4112210a0c010b4114210a0c000b0bbe0301087f230041106b220224002000280204210302400240200028020022042f01be0322050d00410a21060c010b410421060b037f024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020060e0c050a0800010203040709060b0b0b2003417f6a2103200420054102746a41a0066a28020022042f01be032205450d0b410421060c150b20054105742107200441c0036a210041002105410521060c140b20012000412010062208450d0b410621060c130b4100210920084100480d11410721060c120b200041206a2100200541016a2105200741606a22070d0c410021060c110b200441be036a2f01002105200241003a000c20022d000c410171450d090c0a0b41002109410821060c0f0b200220093a000c20022d000c4101710d0a410221060c0e0b20030d0b0c0a0b200241013a000c20022d000c410171450d03410121060c0c0b200241106a24002004200541286c6a0f0b200241106a240041000f0b410a21060c090b410221060c080b410921060c070b410221060c060b410121060c050b410521060c040b410121060c030b410b21060c020b410321060c010b410821060c000b0bad04010c7f230041106b220324002001280208210420012802002105200141086a2106200141046a210702400240200128020422082f01be0322090d00410a210a0c010b4104210a0b03400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200a0e0c050a0800010203040709060b0b0b20012005417f6a2205360200200620043602002007200820094102746a41a0066a280200220836020020082f01be032209450d0b4104210a0c150b2009410574210b200841c0036a210c410021094105210a0c140b2002200c41201006220d450d0b4106210a0c130b4100210e200d4100480d114107210a0c120b200c41206a210c200941016a2109200b41606a220b0d0c4100210a0c110b200841be036a2f01002109200341003a000c20032d000c410171450d090c0a0b4100210e4108210a0c0f0b2003200e3a000c20032d000c4101710d0a4102210a0c0e0b20050d0b0c0a0b200341013a000c20032d000c410171450d034101210a0c0c0b2000200536020420004100360200200041086a20083602002000410c6a2004360200200041106a2009360200200341106a24000f0b20004201370200200041086a20083602002000410c6a2004360200200041106a2009360200200341106a24000f0b410a210a0c090b4102210a0c080b4109210a0c070b4102210a0c060b4101210a0c050b4105210a0c040b4101210a0c030b410b210a0c020b4103210a0c010b4108210a0c000b0bb20301097f23002102200141046a280200210320012802082104200241306b220241186a2205200128020022063602002002411c6a2207410036020020022003360214200220034100472208360210024002402003450d002003417f6a2101200241106a41047221092006210a03402005200a28029002220a3602002007410036020020022001360214200220014100473602102001417f6a2201417f470d000c020b0b200241106a41047221090b200241086a200941086a28020036020020022009290200370300200241106a41086a220a20063602002002411c6a22054100360200200220033602142002200836021002402003450d002003417f6a21010340200a200620062f018e024102746a4190026a28020022063602002005410036020020022001360214200220014100473602102001417f6a2201417f470d000b0b200241106a41086a28020022012f018e0221062002411c6a280200210a200228021421052000410036020c20002005360210200041146a2001360200200041186a200a3602002000411c6a200636020020002004360220200041086a200241086a280200360200200020022903003702000bf00202067f027e230041206b22012400200141086a200010ca01024020012802082202450d00200141186a2103200141146a2104034020032802002105200428020021060240200128020c450d00200210020b02402006450d002005450d00200610020b200141086a200010ca01200128020822020d000b0b2000280208210320002802002102024002400240024020002802042206280288022205450d00200632018c0221072001200536020c2001200241016a2202360208200120074220862003ad842207370310200610022005450d020c010b2003ad210741002105200610024100450d010b024002402005280288022206450d00200532018c0221082001200636020c2001200241016a36020820012008422086200742ffffffff0f83843703102005100220060d010c020b41002106200510024100450d010b2006210503402006280288022206450d02200510022006210520060d000b0b200141206a24000f0b20051002200141206a24000bcc0b01117f230041c0076b2202240020002802102203200328020041016a360200200241d8006a41086a200041086a29020037030020022000290200370358200241206a41186a22032000412c6a290000370300200241206a41106a2204200041246a290000370300200241206a41086a22052000411c6a29000037030020022000290014370320200241f8006a41206a200141206a290300370300200241f8006a41186a200141186a290300370300200241f8006a41106a200141106a290300370300200241f8006a41086a200141086a2903003703002002200129030037037820024188046a200241d8006a200241206a200241f8006a108801024002400240024002400240024020022d008804450d00200241086a20024191046a290000370300200241106a20024199046a290000370300200241186a200241a1046a2900003703002005200241c8046a2903003703002004200241d0046a2903003703002003200241d8046a290300370300200241206a41206a200241e0046a29030037030020022002290089043703002002200241c0046a290300370320200241bc046a2802002106200241b8046a280200210420022802e804210720024188046a412c6a280200210320024188046a41246a2802002100200241b0046a28020022012802b8032205450d0120012f01bc0321082002200536027c2002200041016a2209360278200220033602800120022008360284014100450d020c030b20024188046a41106a280200210020024188046a41086a2802002101200241c0076a24002001200041286c6a0f0b2002200136027c2002200036027820022003360280012003210941010d010b200241c0046a210020024188046a4101722101200241d4006a210a200241bc046a210b200241b8046a210c200241b4046a210d200241b0046a210e200241ac046a210f0340200241c8006a41086a2003360200200a20083602002002200536024c20022009360248200241d8006a41186a200241186a2203290300370300200241d8006a41106a200241106a2205290300370300200241d8006a41086a200241086a220829030037030020022002290300370358200241f8006a41206a200241206a41206a2209290300370300200241f8006a41186a200241206a41186a2210290300370300200241f8006a41106a200241206a41106a2211290300370300200241f8006a41086a200241206a41086a22122903003703002002200229032037037820024188046a200241c8006a200241d8006a200241f8006a20042006108c0120022d008804450d0302402008200141086a2900003703002005200141106a2900003703002003200141186a2900003703002012200041086a2903003703002011200041106a2903003703002010200041186a2903003703002009200041206a2903003703002002200129000037030020022000290300370320200c2802002104200d2802002103200e28020022082802b8032205450d00200b2802002106200f28020041016a210920082f01bc0321080c010b0b41d00610012200450d030c010b2009210341d00610012200450d020b200020024188046a41b803101e220041003b01be03200041003602b803200041c0036a200241f8006a419003101e2101200020032802003602a006200320003602002003200328020441016a36020420002802a006220341003b01bc03200320003602b803200120002f01be0322034105746a22012002290300370000200141186a200241186a290300370000200141106a200241106a290300370000200141086a200241086a2903003700002000200341286c6a220141106a200241206a41106a290300370300200141086a200241206a41086a29030037030020012002290320370300200141206a200241206a41206a290300370300200141186a200241206a41186a290300370300200041a0066a200341016a22014102746a2004360200200020002f01be0341016a3b01be03200420013b01bc03200420003602b8030b200241c0076a240020070f0b101c000bf10101047f230041106b220324000240024020012802002204417f460d002001200441016a3600000240024002400240200141046a20021096012204450d0020042802102205450d0020042802182202417f4c0d052002450d012002100122040d02101c000b200020012802102002200141146a2802002802101106000c020b410121040b200320023602042003200436020020034100360208200341002002102720032003280208220420026a3602082004200328020022066a20052002101e1a20002003290204370204200020063602000b20012001280200417f6a360000200341106a24000f0b109f01000b1019000b890b07027f017e107f017e047f017e027f230041f0026b22022400024020002802000d002000417f36000020024180016a41086a2203200141086a2802003602002002200129020037038001200220024180016a109d01200241286a41206a200241206a280200360200200241286a41186a200241186a290300370300200241286a41106a200241106a290300370300200241286a41086a200241086a2903003703002002200229030037032820024180016a200241286a10c801024020022903a00122044202510d002000410c6a2105200041046a2106200241f8016a411c6a210720024180016a41146a2108200241bc016a2109200241a0026a410c6a210a20024180016a41286a210b200241b0016a210c200241b4016a210d200241b8016a210e20024180016a41206a210f0340200241e0006a41186a220120024180016a41186a2210290300370300200241e0006a41106a221120024180016a41106a2212290300370300200241e0006a41086a22132003290300370300200241d0006a41086a2214200941086a280200360200200220022903800137036020022009290200370350200b2903002115200c2802002116200d2802002117200e2802002118200241c8016a41086a22192014280200360200200220022903503703c8012010200129030037030020122011290300370300200320132903003703002002200229036037038001200241b8026a41086a220120063602002002200041086a2802003602b802200220062802003602bc02200241f8016a200241b8026a20024180016a1097010240024020022802f8014101470d00200241d8016a41086a22012003290300370300200241d8016a41106a22112012290300370300200241d8016a41186a2213201029030037030020022002290380013703d80120022902fc01211a2003200241f8016a410c6a29020037030020122005360200200820022903d801370200200841086a2001290300370200200841106a2011290300370200200841186a20132903003702002002201a37038001200241f8016a41086a2015370300200241f8016a41106a2016360200200241f8016a41146a2017360200200241f8016a41186a2018360200200720022903c801370200200741086a2019280200360200200220043703f80120024180016a200241f8016a109a011a0c010b200241f8016a41086a2214280200200241f8016a41106a221b28020041286c6a211102402004500d0020112004370300201120153703080b024002402016450d00201141106a211302402011280210221c450d00201341046a280200450d00201c10020b201320173602042013201636020020112018360218410121130c010b410021130b20032019280200360200200220022903c80137038001200241f8016a20024180016a109801200f200241f8016a41206a2802003602002010200241f8016a41186a2903003703002012201b29030037030020032014290300370300200220022903f80137038001200241b8026a20024180016a10ca01024020022802b802450d002011411c6a21100340200241a0026a41106a200241b8026a41106a290300370300200241a0026a41086a22122001290300370300200220022903b8023703a002200241e0026a41086a2012280200360200200220022903a0023703e0022001200a41086a2802003602002002200a2902003703b802200241d0026a2010200241e0026a200241b8026a10d201024020022802d002450d0020022802d4022212450d00200241d0026a41086a280200450d00201210020b200241b8026a20024180016a10ca0120022802b8020d000b0b20024180016a1099012013201645720d002017450d00201610020b20024180016a200241286a10c801200f29030022044202520d000b0b200241286a109e0120004100360000200241f0026a24000f0b10c301000bb20301097f23002102200141046a280200210320012802082104200241306b220241186a2205200128020022063602002002411c6a2207410036020020022003360214200220034100472208360210024002402003450d002003417f6a2101200241106a41047221092006210a03402005200a2802a006220a3602002007410036020020022001360214200220014100473602102001417f6a2201417f470d000c020b0b200241106a41047221090b200241086a200941086a28020036020020022009290200370300200241106a41086a220a20063602002002411c6a22054100360200200220033602142002200836021002402003450d002003417f6a21010340200a200620062f01be034102746a41a0066a28020022063602002005410036020020022001360214200220014100473602102001417f6a2201417f470d000b0b200241106a41086a28020022012f01be0321062002411c6a280200210a200228021421052000410036020c20002005360210200041146a2001360200200041186a200a3602002000411c6a200636020020002004360220200041086a200241086a280200360200200020022903003702000bc70302077f027e23004190016b220124002001200010c801024020012903204202510d00200141c8006a4104722102200141386a2103200141346a2104200141306a2105200141206a21060340200141c8006a41086a200341086a29030037030020012003290300370348024020052802002207450d002004280200450d00200710020b20014180016a41086a200241086a2802003602002001200229020037038001200141d8006a20014180016a109801200141d8006a1099012001200010c80120062903004202520d000b0b20002802082105200028020021070240024002400240200028020422022802b8032203450d0020023201bc032108200120033602042001200741016a2207360200200120084220862005ad842208370308200210022003450d020c010b2005ad210841002103200210024100450d010b0240024020032802b8032202450d0020033201bc032109200120023602042001200741016a36020020012009422086200842ffffffff0f83843703082003100220020d010c020b41002102200310024100450d010b20022103034020022802b8032202450d02200310022002210320020d000b0b20014190016a24000f0b2003100220014190016a24000b080041ec3a1054000b950301067f230041106b22022400200241003a000b2002410b6a20012802002203200128020422044100472205101e1a2001200420056b22063602042001200320056a22053602000240024002400240024002402004450d0020022d000b2204450d0120044101470d022002410036020c2002410c6a20052006410420064104491b2204101e1a200141046a200620046b3602002001200520046a360200200641034d0d03200041046a200228020c360200200041023a0000200241106a24000f0b200041033a0000200241106a24000f0b200110212203450d0320022003360204200141046a22062802002104200241003a000b2002410b6a2001280200220720044100472205101e1a2006200420056b3602002001200720056a3602002004450d0220022d000b220141034f0d02200020013a0001200041013a0000200041046a2003360200200241106a24000f0b200041033a0000200241106a24000f0b200041033a0000200241106a24000f0b200041033a0000200241046a1022200241106a24000f0b200041033a0000200241106a24000bc905020f7f037e23004180016b22022400200241e0006a10302002280260220320022802681031210402402002280264450d00200310020b200241003602082002420137030020024100200410860120022802082105024002402004450d00200228020020054105746a2103200241306a41086a2106200241106a41186a2107200241106a41106a2108410021090340200241306a200910320240024002402002280230220a2006280200220b41d02d410041001000417f470d002007420037030020084200370300200241106a41086a420037030020024200370310200941016a210920022802340d010c020b200241e0006a41186a220c4200370300200241e0006a41106a220d4200370300200241e0006a41086a220e420037030020024200370360200a200b200241e0006a412041001000220b417f460d04200b411f4d0d04200241c0006a41186a220b200c290300370300200241c0006a41106a220f200d290300370300200241c0006a41086a2210200e29030037030020022002290360370340200c200b290300370300200d200f290300370300200e201029030037030020022002290340370360200b200c2903002211370300200f200d29030022123703002010200e2903002213370300200241106a41086a2013370300200820123703002007201137030020022002290360221137034020022011370310200941016a21092002280234450d010b200a10020b20032002290310370000200341186a2007290300370000200341106a2008290300370000200341086a200241106a41086a290300370000200341206a210320092004490d000b200520096a21050b200241086a2005360200200241c0006a41086a200536020020022002290300370340200241e0006a200241c0006a10a2012002350268422086200235026084211102402002280244450d00200228024010020b20024180016a240020110f0b41eb1a4133102d000bee0201077f230041206b22022400200141086a28020021032002410036021820024201370310200241106a4100410410272002280210200228021822046a20033600002002200441046a360218200241086a2205200228021836020020022002290310370300024002402003450d0020012802002101200341057421060340412010012203450d022002200336021020024220370214200241106a410041201027200241106a41086a22032003280200220441206a22033602002004200228021022076a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002002280214210420022005280200200310272002280200200528020022086a20072003101e1a2005200820036a36020002402004450d00200710020b200141206a2101200641606a22060d000b0b20002002290300370200200041086a2005280200360200200241206a24000f0b101c000bf80101017f23004180026b22022400024002402001450d00200220003602080c010b200241d02d360208410021010b2002200136020c20024188016a200241086a101d0240200228029001450d00200241106a20024188016a41f800101e1a20024188016a200241106a41f800101e1a20024188016a2002419c016a200241dc016a10a401024020024198016a2802002200450d0020022802900121012000410c6c210003400240200141046a280200450d00200128020010020b2001410c6a2101200041746a22000d000b0b024020024194016a280200450d0020024190016a28020010020b20024180026a240042010f0b4184351054000ba11903017f017e237f230041900d6b220324002003200029030022043703f00c200341106a41086a220042003703002003420037031041d12d4107200341106a1003200341086a220520002903003703002003200329031037030020034110200341f00c6a41081004200042003703002003420037031041d82d4107200341106a10032005200029030037030020032003290310370300200341102001412010040240024002400240410710012200450d002003200036021020034207370214200341106a4100410710272003280210200328021822056a220041002800c72d360000200341f00c6a41086a200541076a2205360200200041046a41002f00cb2d3b0000200041066a41002d00cd2d3a0000200320032903103703f00c20032005360218410810012200450d002003200036021020034208370214200341106a41004108102720032802102205200328021822006a2004427f7c3700002003200041086a220036021820032802142106200341f00c6a20032802f80c2000102720032802f00c220720032802f80c22086a20052000101e1a2003200820006a22003602f80c02402006450d00200510020b20032802f40c2105200341106a41086a220642003703002003420037031020072000200341106a1003200341086a2006290300370300200320032903103703002003411020014120100402402005450d00200710020b200341106a41086a220042003703002003420037031041df2d4107200341106a1003200341086a220120002903003703002003200329031037030020034110200241201004200042003703002003420037031041d12d4107200341106a100320012000290300370300200320032903103703002003411041d02d410041001000417f460d01200342003703100240024020034110200341106a41084100100041016a41084d0d0020032903104200510d04200341106a41086a220042003703002003420037031041d12d4107200341106a1003200341086a2000290300370300200320032903103703002003411041d02d410041001000417f460d052003420037031020034110200341106a41084100100041016a41084d0d012003290310210441002108200341106a410041e00c10171a2004427f7c2104410021094100210a4100210b4100210c4100210d4100210e4100210f410021104100211141002112410021134100211441002115410021164100211741002118410021194100211a4100211b4100211c4100211d4100211e4100211f4100212041002121410021224100212341002124410021254100212641002102410021270340200341f00c6a42002004427f7c2004501b220410a801200341106a202722004103704105746a220141186a200341f00c6a41186a290200370000200141106a200341f00c6a41106a290200370000200141086a200341f00c6a41086a290200370000200120032902f00c370000200041016a21274100210141002107024003402000200041036e2205417d6c6a4102470d01200341106a20016a220041df006a2d000022022000411f6a2d000022067120022006722000413f6a2d000071722108200041de006a2d000022022000411e6a2d000022067120022006722000413e6a2d000071722109200041dd006a2d000022022000411d6a2d000022067120022006722000413d6a2d00007172210a200041dc006a2d000022022000411c6a2d000022067120022006722000413c6a2d00007172210b200041db006a2d000022022000411b6a2d000022067120022006722000413b6a2d00007172210c200041da006a2d000022022000411a6a2d000022067120022006722000413a6a2d00007172210d200041d9006a2d00002202200041196a2d00002206712002200672200041396a2d00007172210e200041d8006a2d00002202200041186a2d00002206712002200672200041386a2d00007172210f200041d7006a2d00002202200041176a2d00002206712002200672200041376a2d000071722110200041d6006a2d00002202200041166a2d00002206712002200672200041366a2d000071722111200041d5006a2d00002202200041156a2d00002206712002200672200041356a2d000071722112200041d4006a2d00002202200041146a2d00002206712002200672200041346a2d000071722113200041d3006a2d00002202200041136a2d00002206712002200672200041336a2d000071722114200041d2006a2d00002202200041126a2d00002206712002200672200041326a2d000071722115200041d1006a2d00002202200041116a2d00002206712002200672200041316a2d000071722116200041d0006a2d00002202200041106a2d00002206712002200672200041306a2d000071722117200041cf006a2d000022022000410f6a2d000022067120022006722000412f6a2d000071722118200041ce006a2d000022022000410e6a2d000022067120022006722000412e6a2d000071722119200041cd006a2d000022022000410d6a2d000022067120022006722000412d6a2d00007172211a200041cc006a2d000022022000410c6a2d000022067120022006722000412c6a2d00007172211b200041cb006a2d000022022000410b6a2d000022067120022006722000412b6a2d00007172211c200041ca006a2d000022022000410a6a2d000022067120022006722000412a6a2d00007172211d200041c9006a2d00002202200041096a2d00002206712002200672200041296a2d00007172211e200041c8006a2d00002202200041086a2d00002206712002200672200041286a2d00007172211f200041c7006a2d00002202200041076a2d00002206712002200672200041276a2d000071722120200041c6006a2d00002202200041066a2d00002206712002200672200041266a2d000071722121200041c5006a2d00002202200041056a2d00002206712002200672200041256a2d000071722122200041c4006a2d00002202200041046a2d00002206712002200672200041246a2d000071722123200041c3006a2d00002202200041036a2d00002206712002200672200041236a2d000071722124200041c2006a2d00002202200041026a2d00002206712002200672200041226a2d000071722125200041c1006a2d00002202200041016a2d00002206712002200672200041216a2d000071722126200041c0006a2d0000220220002d00002206712002200672200041206a2d000071722102200141800c460d01200341106a20012005410574200541036e41e0006c6b6a6a220041e1006a20263a0000200041e0006a20023a0000200041e2006a20253a0000200041e3006a20243a0000200041e4006a20233a0000200041e5006a20223a0000200041e6006a20213a0000200041e7006a20203a0000200041e8006a201f3a0000200041e9006a201e3a0000200041ea006a201d3a0000200041eb006a201c3a0000200041ec006a201b3a0000200041ed006a201a3a0000200041ee006a20193a0000200041ef006a20183a0000200041f0006a20173a0000200041f1006a20163a0000200041f2006a20153a0000200041f4006a20133a0000200041f3006a20143a0000200041f5006a20123a0000200041f6006a20113a0000200041f7006a20103a0000200041f8006a200f3a0000200041f9006a200e3a0000200041fa006a200d3a0000200041fb006a200c3a0000200041fc006a200b3a0000200041fd006a200a3a0000200041fe006a20093a0000200041ff006a20083a0000200141e0006a210120052100200741016a22074111490d000b0b202741d100470d000b200320263a00f10c200320023a00f00c200320253a00f20c200320243a00f30c200320233a00f40c200320223a00f50c200320213a00f60c200320203a00f70c2003201f3a00f80c2003201e3a00f90c2003201d3a00fa0c2003201c3a00fb0c2003201b3a00fc0c2003201a3a00fd0c200320193a00fe0c200320183a00ff0c200320173a00800d200320163a00810d200320153a00820d200320133a00840d200320143a00830d200320123a00850d200320113a00860d200320103a00870d2003200f3a00880d2003200e3a00890d2003200d3a008a0d2003200c3a008b0d2003200b3a008c0d2003200a3a008d0d200320093a008e0d200320083a008f0d200341106a41086a220042003703002003420037031041e62d4107200341106a1003200341086a220120002903003703002003200329031037030020034110200341f00c6a41201004200341003602f00c200042003703002003420037031041ed2d4107200341106a1003200120002903003703002003200329031037030020034110200341f00c6a41041004200341900d6a24000f0b41c1214133102d000b41c1214133102d000b101c000b41f4214122102d000b4184c200103b000b41f4214122102d000ba80601057f230041d0096b22022400024002402001450d00200220003602080c010b200241d02d360208410021010b2002200136020c200241a0066a200241086a10200240024020022d00a8064107460d00200241106a200241a0066a418003101e1a20024190036a200241106a418003101e1a20024190066a20024190036a1026200241a0066a41086a22014200370300200242003703a00641ed2d4107200241a0066a1003200241b0096a41086a2001290300370300200220022903a0063703b009200241b0096a411041d02d410041001000417f460d01200241003602a00602400240200241b0096a4110200241a0066a41044100100041016a41044d0d0020022802a0062103200241a0096a41086a20024190066a41086a28020036020020022002290390063703a009410710012201450d01200220013602a006200242073702a406200241a0066a41004107102720022802a00620022802a80622006a220141002800e02e360000200241b0096a41086a200041076a2200360200200141046a41002f00e42e3b0000200141066a41002d00e62e3a0000200220022903a0063703b009200220003602a806410410012201450d01200220013602a006200242043702a406200241a0066a41004104102720022802a006220020022802a80622016a20033600002002200141046a22013602a80620022802a4062104200241b0096a20022802b8092001102720022802b009220320022802b80922056a20002001101e1a2002200520016a22053602b80902402004450d00200010020b20022802b4092100200241c0096a200241a0096a105120022802c809210420022802c0092101200241a0066a41086a22064200370300200242003703a00620032005200241a0066a1003200241b0096a41086a2006290300370300200220022903a0063703b009200241b0096a4110200120041004024020022802c409450d00200110020b02402000450d00200310020b024020022802a409450d0020022802a00910020b200241a0066a20024190036a418003101e1a200241a0066a10a601200241d0096a240042010f0b41c1214133102d000b101c000b4184351054000b41f4214122102d000bec0e04037f017e037f017e230041a0086b2201240020014180036a2000418003101e1a200141386a4200370300200141306a4200370300200141286a4200370300200141206a4200370300200141186a4200370300200141106a4200370300200141086a42003703002001420037030002400240024002400240200141c0056a200141c0001006450d00200141a0056a21000c010b20014188066a41186a420037030020014188066a41106a420037030020014188066a41086a42003703002001420037038806200141a0056a220020014188066a41201006450d010b2001410036029006200142013703880620014188066a41004120102720012802880620012802900622026a22032000290000370000200341186a200041186a290000370000200341106a200041106a290000370000200341086a200041086a2900003700002001200241206a220036029006200129038003210420014188066a20004108102720012802880620012802900622006a20043700002001200041086a220236029006200120014180036a41086a10282001280200210320014188066a20022001280208220010272001200020012802900622056a220636029006200520012802880622026a20032000101e1a02402001280204450d00200310020b200128028c06210020022006200141c0056a200141a0056a1015210302402000450d00200210020b200120014180036a418003101e1a20030d010c020b200120014180036a418003101e1a0c010b41bc3a103b000b20014180036a2001418003101e1a200141186a4200370300200141106a4200370300200141086a420037030020014200370300024002400240024002400240024002400240200141a0056a2200200141201006450d00200010c001200129038003520d06200010c0012104410710012203450d04200120033602002001420737020420014100410710272001280200200128020822026a220341002800d92e36000020014188066a41086a200241076a2202360200200341046a41002f00dd2e3b0000200341066a41002d00df2e3a0000200120012903003703880620012002360208412010012203450d04200442017c21042001200336020020014220370204200141004120102720012802002202200128020822056a22032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a2900003700002001200541206a22033602082001280204210620014188066a20012802900620031027200128028806220520012802900622076a20022003101e1a2001200720036a22073602900602402006450d00200210020b200128028c0621022001200437038006200141086a2203420037030020014200370300200520072001100320014188066a41086a22062003290300370300200120012903003703880620014188066a411020014180066a4108100402402002450d00200510020b200010432104200342003703002001420037030041bf2041072001100320062003290300370300200120012903003703880620014188066a411041d02d410041001000417f460d072001420037030020014188066a4110200141084100100041016a41084d0d02200420012903002208540d08410810012203450d04200120033602002001420837020420014100410810272001280200200128020822036a42f3e885d3a3ac98b63a3700002001200341086a36020820014188066a41086a20012802083602002001200129030037038806412010012203450d04200420087d21042001200336020020014220370204200141004120102720012802002202200128020822056a22032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a2900003700002001200541206a22003602082001280204210320014188066a20012802900620001027200128028806220520012802900622066a20022000101e1a2001200620006a22003602900602402003450d00200210020b200128028c0621022001200437038006200141086a2203420037030020014200370300200520002001100320014188066a41086a2003290300370300200120012903003703880620014188066a411020014180066a4108100420014188066a2103200121002002450d01200510020c010b2001210020014188066a21030b200120014180036a41c002101e22014188066a200141086a419802101e1a20014188066a200141a0026a10c101200041086a220242003700002000420037000041ed2d410720001003200341086a2002290000370000200320002900003700002003411041d02d410041001000417f460d032001410036020020034110200141044100100041016a41044d0d012001200128020041016a36028006200041086a220242003700002000420037000041ed2d410720001003200341086a2002290000370000200320002900003700002003411020014180066a41041004200141a0086a24000f0b41c1214133102d000b41c1214133102d000b101c000b41f4214122102d000b41d43a103b000b41f4214122102d000b41fc3c103b000bc51505047f017e027f017e027f23004190096b22022400024002402001450d00200220003602000c010b200241d02d360200410021010b20022001360204200241f0056a2002101d20024180066a280200210320022802fc05210420022802f805210520022903f0052106200241f8016a20024184066a41e400101e1a024002400240024002400240024002402005450d00200241f0006a200241f8016a41e400101e1a200241f8046a200241f0006a41e400101e1a200241003602f005200241f0056a2002280200220720022802042201410420014104491b2200101e1a2002200120006b3602042002200720006a3602000240200141034d0d0020022802f0052208ad4280037e2209422088a70d082009a72201417f4c0d07024002402001450d002001100122070d01101c000b410821070b2002200836020c20022007360208410021012002410036021002402008450d00200241f0056a41086a210a410021000340200241f0056a2002102002400240200a2d00004107460d00200041016a2100200241f8016a200241f0056a418003101e1a2001200228020c470d01200241086a106c200241086a41086a2802002101200228020821070c010b02402001450d0020014180036c2100200741186a210103400240200141706a2d00002208411d74411d75417f4a0d000240024020084105460d0020084104470d01200141786a2d00004101470d022001417c6a220828020010382008280200100220014180036a2101200041807d6a22000d030c040b200141786a2d00004101470d012001280200450d012001417c6a280200100220014180036a2101200041807d6a22000d020c030b200141746a2d00004101470d00200141786a220828020010382008280200100220014180036a2101200041807d6a22000d010c020b20014180036a2101200041807d6a22000d000b0b200228020c450d03200710020c030b200720014180036c6a200241f8016a418003101e1a200241086a41086a200141016a220136020020002008490d000b0b2007450d00200229020c2109200241f0056a200241f8046a41e400101e1a2005450d01200241086a200241f0056a41e400101e1a200241fc006a200436020020024180016a2003360200200220053602782002200637037020024184016a200241086a41e400101e2101200241ec016a2009370200200220073602e801200241f0006a2001200241c4016a220310a40120022903702206500d06200241f0056a2006427f7c10a801200241f0056a2001412010060d06200241e8016a2802002100200241f0016a28020021012002410036028005200242043703f804200241f8046a20014180036c22084180036d108401200228028005210720022802f8042105024002402001450d0020052007410c6c6a21010340200241f0056a2000102620022802f005450d0220004180036a2100200241f8016a41086a220a200241f0056a41086a280200360200200220022903f0053703f801200141086a200a280200360200200120022903f801370200200741016a21072001410c6a2101200841807d6a22080d000b0b200241003602f0050b20024180056a200736020020022802fc042108200241f8016a200520052007410c6c6a10a901200241f0056a20022802f8012201200228028002104c024020022802fc01450d00200110020b02402007450d002007410c6c21002005210103400240200141046a280200450d00200128020010020b2001410c6a2101200041746a22000d000b0b02402008450d00200510020b02402003200241f0056a41201006450d0041d90a410e1008200341201013200241f0056a412010130b200241c4016a200241f0056a412010060d05200241ec016a2802002104200241f0006a41f8006a2802002105200241f0016a280200210a200241f8046a200241f0006a41f800101e1a2005200a4180036c6a210720052101200a450d03200241f0056a41096a2108200521010340200141086a2d0000210020012903002106200241f8016a200141096a41f702101e1a20004107460d03200241f0056a41086a20003a0000200220063703f0052008200241f8016a41f702101e1a200241f0056a10a60120014180036a22012007470d000c050b0b02402003450d002003410c6c21012005210203400240200241046a280200450d00200228020010020b2002410c6a2102200141746a22010d000b0b2004450d00200510020b4184351054000b20014180036a21010b20012007460d002005200a4180036c6a210803402001220041086a2d000022074107460d0120004180036a210102402007411d74411d75417f4a0d00200041146a2800002103200041106a280000210a02400240200741077122074105460d0020074104470d01200a41ff01714101470d02200310382003100220082001470d030c040b200a41ff01714101470d01200041186a280000450d012003100220082001470d020c030b2000410c6a2d000041ff01714101470d00200a1038200a100220082001470d010c020b20082001470d000b0b02402004450d00200510020b1034200241f0056a41086a22014200370300200242003703f00541e72e4107200241f0056a1003200241f8016a41086a2001290300370300200220022903f0053703f8014100210b02400240024002400240200241f8016a411041d02d410041001000417f460d00200242103702f4082002200241f8016a3602f008200241f0056a200241f0086a101620022802f0052204450d02200241f8056a280200210820022802f405210b0c010b41042104410021080b4100210a02400240024002400240024020024188056a2802002008470d000240024002402008450d0020024180056a280200210141002107200421000340200141086a280200220a200041086a280200470d0202402001280200220520002802002203460d0020052003200a10060d040b2001410c6a21012000410c6a2100200741016a22072008490d000b4101210a20080d040c060b4101210a200b0d060c070b20042008410c6c6a21074100210a0c030b4100210a0b2008450d020b20042008410c6c6a21070b2004210103402001410c6a21000240200141046a280200450d00200128020010020b2000210120072000470d000b0b200b450d010b200410020b200a450d01200241f0056a10aa0120022802f8052107024020024180066a2802002201450d002001410c6c21002007210103400240200141046a280200450d00200128020010020b2001410c6a2101200041746a22000d000b0b0240200241fc056a280200450d00200710020b200241f8016a41186a22014200370300200241f8016a41106a22004200370300200241f8016a41086a22074200370300200242003703f801200241f8016a1014200241f0086a41186a2001290300370300200241f0086a41106a2000290300370300200241f0086a41086a2007290300370300200220022903f8013703f0080240200241ac056a2201200241f0086a41201006450d0041d90a410e1008200141201013200241f0086a412010130b2001200241f0086a412010060d02024020024188056a2802002200450d0020024180056a28020021012000410c6c210003400240200141046a280200450d00200128020010020b2001410c6a2101200041746a22000d000b0b024020024184056a280200450d0020024180056a28020010020b20024190096a240042010f0b41c1214133102d000b418c3a103b000b41a43a103b000b41f439103b000b41dc39103b000b105d000b105c000b8b0401067f230041306b22022400024002400240410710012203450d002002200336021020024207370214200241106a4100410710272002280210200228021822046a220341002800c72d360000200241086a200441076a2204360200200341046a41002f00cb2d3b0000200341066a41002d00cd2d3a00002002200229031037030020022004360218410810012203450d002002200336021020024208370214200241106a41004108102720022802102204200228021822036a20013700002002200341086a220336021820022802142105200220022802082003102720022802002206200228020822076a20042003101e1a2002200720036a220736020802402005450d00200410020b20022802042104200241106a41086a220342003703002002420037031020062007200241106a1003200241086a2003290300370300200220022903103703002002411041d02d410041001000417f460d02200241286a4200370300200241106a41106a4200370300200342003703002002420037031020024110200241106a4120410010002203417f460d012003411f4d0d0120002002290310370000200041186a200241106a41186a290300370000200041106a200241106a41106a290300370000200041086a200241106a41086a29030037000002402004450d00200610020b200241306a24000f0b101c000b41c1214133102d000b41f4214122102d000bc50103037f017e027f4100210302400240024002400240200220016b2204450d002004410c6d2205ad4203862206a722044100480d032006422088a74100470d03200410012207450d0420012002470d010c020b410421074100210520012002460d010b4100210320072104034020012802002108200441046a200141086a28020036020020042008360200200441086a2104200341016a21032001410c6a22012002470d000b0b2000200536020420002007360200200020033602080f0b1041000b101c000be40703037f027e057f23004180016b22012400200141e0006a41086a220242003703002001420037036041e62d4107200141e0006a1003200141c0006a41086a2203200229030037030020012001290360370340200141c0006a41101005200242003703002001420037036041ed2d4107200141e0006a10032003200229030037030020012001290360370340200141c0006a41101005200342003703002001420037034041d12d4107200141c0006a100320022003290300370300200120012903403703600240024002400240200141e0006a411041d02d410041001000417f460d0020014200370340200141e0006a4110200141c0006a41084100100041016a41084d0d0220012903402104200141c0006a41086a220242003703002001420037034041d12d4107200141c0006a1003200141e0006a41086a200229030037030020012001290340370360200141e0006a411010054201a7450d010c030b4200a70d020b41f4214122102d000b41c1214133102d000b200141d82d10d901200141c0006a41086a220242003703002001420037034041e72e4107200141c0006a1003200141e0006a41086a20022903003703002001200129034037036041002102024002400240200141e0006a411041d02d410041001000417f460d00200142103702242001200141e0006a360220200141c0006a200141206a101620012802402203450d0220012902442105200141c0006a41086a220242003703002001420037034041e72e4107200141c0006a1003200141e0006a41086a200229030037030020012001290340370360200141e0006a411010052005422088a721022005a721060c010b41042103410021060b200141206a41df2d10d901200141e0006a41186a22074200370300200141e0006a41106a22084200370300200141e0006a41086a2209420037030020014200370360200141e0006a1014200141c0006a41186a220a2007290300370300200141c0006a41106a22072008290300370300200141c0006a41086a2208200929030037030020012001290360370340200020043703002000412c6a200141186a290300370000200041246a200141106a2903003700002000411c6a200141086a29030037000020002001290300370014200020012903403700342000413c6a2008290300370000200041c4006a2007290300370000200041cc006a200a290300370000200020033602082000410c6a2006360200200041106a2002360200200041ec006a200141206a41186a290300370000200041e4006a200141206a41106a290300370000200041dc006a200141206a41086a2903003700002000200129032037005420014180016a24000f0b41c1214133102d000bda10040d7f017e017f017e230041d0016b220224001034200241b0016a41086a22034200370300200242003703b00141ed2d4107200241b0016a1003200241a0016a41086a2003290300370300200220022903b0013703a0010240200241a0016a411041d02d410041001000417f460d00200241003602080240200241a0016a4110200241086a41044100100041016a41044d0d0020022802082104200241003602c801200242043703c001200241c0016a200410840120022802c801210520022802c00121060240024002400240024002402004450d0020062005410c6c6a2107410021080340410710012203450d02200220033602082002420737020c200241086a410041071027200241086a41086a22032003280200220941076a220a360200200920022802086a220b41002800e02e36000020024180016a41086a2209200a360200200b41046a41002f00e42e3b0000200b41066a41002d00e62e3a0000200220022903083703800141041001220b450d022002200b3602082002420437020c200241086a41004104102720032003280200220a41046a220b360200200a2002280208220c6a2008360000200228020c210d20024180016a2009280200200b1027200228028001220a2009280200220e6a200c200b101e1a2009200e200b6a220e3602000240200d450d00200c10020b200228028401210d200241a0016a41086a220b4200370300200242003703a001200a200e200241a0016a10032003200b290300370300200220022903a001370308200241086a411041d02d410041001000417f460d0420024100360280014100200241086a411020024180016a41044100100022032003417f461b220c41034d0d062002280280012203417f4c0d03024002402003450d00200310012209450d0420094100200310171a0c010b410121090b20034100200241086a411020092003200c4104200c4104491b1000220c200c417f461b4b0d052009450d06200841016a21082003ad220f422086200f84210f200b4200370300200242003703a001200a200e200241a0016a1003200241b0016a41086a200b290300370300200220022903a0013703b001200241b0016a411010050240200d450d00200a10020b20072009360200200741046a200f3702002007410c6a210720082004490d000b200520086a21050b200241c8016a200536020020022802c4012108200241086a200620062005410c6c6a10a90120024180016a200228020822032002280210104c0240200228020c450d00200310020b02402005450d002005410c6c21092006210303400240200341046a280200450d00200328020010020b2003410c6a2103200941746a22090d000b0b02402008450d00200610020b200241086a41186a20024180016a41186a290300370300200241086a41106a220920024180016a41106a290300370300200241086a41086a20024180016a41086a22072903003703002002200229038001370308200241b0016a41086a22044200370300200242003703b00141df2d4107200241b0016a1003200241a0016a41086a22082004290300370300200220022903b0013703a001200241a0016a4110200241086a41201004200241086a10aa01200241003602c801200242013703c001200241c0016a41004120102720022802c00120022802c801220b6a2203200229021c370000200341086a200241246a290200370000200341106a2002412c6a290200370000200341186a200241346a2902003700002002200b41206a22033602c8012002290308210f200241c0016a20034108102720022802c00120022802c80122036a200f3700002002200341086a22033602c801200241c0016a20034120102720022802c00120022802c801220b6a2203200229023c370000200341086a200241c4006a290200370000200341106a200241cc006a290200370000200341186a200241d4006a2902003700002002200b41206a22033602c801200241c0016a20034120102720022802c00120022802c801220b6a2203200229025c370000200341086a200241e4006a290200370000200341106a200241ec006a290200370000200341186a200241f4006a2902003700002002200b41206a22103602c801200928020021052002410036028801200242013703800120024180016a41004104102720022802800120022802880122036a20053600002002200341046a36028801200820022802880136020020022002290380013703a00120022802102106024002402005450d002005410c6c210c2006210b0340200241b0016a200b105120042802002203417f4c0d0420022802b001210a024002402003450d002003100122090d010c050b410121090b200741003602002002200336028401200220093602800120024180016a41002003102720072007280200220d20036a2209360200200d200228028001220e6a200a2003101e1a2002280284012103024020022802b401450d00200a10020b200241a0016a20082802002009102720022802a001220d2008280200220a6a200e2009101e1a2008200a20096a220936020002402003450d00200e10020b200b410c6a210b200c41746a220c0d000c020b0b20022802a801210920022802a001210d0b20022802a4012103200241c0016a201020091027200220022802c801220820096a22073602c801200820022802c001220b6a200d2009101e1a02402003450d00200d10020b2007ad422086210f200bad211102402005450d002005410c6c21092006210303400240200341046a280200450d00200328020010020b2003410c6a2103200941746a22090d000b0b200f201184210f0240200241146a280200450d00200610020b200241d0016a2400200f0f0b101c000b1019000b41f4214122102d000b200910020b41c1214133102d000b41c1214133102d000b41f4214122102d000b810101047f230041106b220224002002102f2002280208210302402002280204450d00200228020010020b0240410410012204450d002002200436020020024204370204200241004104102720022802002204200228020822056a20033600002002200541046a2203360208200241106a24002003ad4220862004ad840f0b101c000b4802017f017e230041206b220224002002102f200241106a200210a2012002350218422086200235021084210302402002280204450d00200228020010020b200241206a240020030ba56d09047f027e047f017e0b7f017e027f017e0c7f230041a0016b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d0000417f6a220341044b0d000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020030e050004020301000b200041106a2802002104200241186a41086a2000410c6a2802003602002002200041046a290200370318200241e8006a41086a220342003703002002420037036841b00f4107200241e8006a1003200241d8006a41086a2205200329030037030020022002290368370358200241d8006a4110200241f8006a410041001000417f470d38200342003703002002420037036841b70f4107200241e8006a10032005200329030037030020022002290368370358200241d8006a411041d02d410041001000417f460d0420024100360278200241d8006a4110200241f8006a41044100100041016a41044d0d4320022802782004470d050c590b200041246a2802002104200041286a290300210c200241c0006a200041196a290000370300200241286a41106a200041116a290000370300200241286a41086a200041096a29000037030020022000290001370328200241e8006a41086a220342003703002002420037036841b70f4107200241e8006a1003200241d8006a41086a200329030037030020022002290368370358410021030240200241d8006a411041d02d410041001000417f460d0020024100360278200241d8006a4110200241f8006a41044100100041016a41044d0d42200228027821030b20032004470d36200241e8006a41086a220342003703002002420037036841b00f4107200241e8006a1003200241d8006a41086a200329030037030020022002290368370358200241d8006a411041d02d410041001000417f460d352002200241d8006a3602682002411036026c2002420037037820024100200241d8006a4110200241f8006a41084100100022032003417f461b22034108200341084922041b220336027020040d3e20024100360278200241f0006a4100200241d8006a4110200241f8006a41042003100022042004417f461b22044104200441044922041b20036a36020020040d3e200241f8006a200241e8006a103a2002280278220d450d3e200241f8006a41086a280200210e200228027c210f200241e8006a41086a22034200370300200242003703684181114107200241e8006a1003200241d8006a41086a200329030037030020022002290368370358200241d8006a411041d02d410041001000417f460d34200241003602784100200241d8006a4110200241f8006a41044100100022032003417f461b220441034d0d4a20022802782209ad2206421d88a70d332006420386a72203417f4c0d322003450d052003100122100d060c5a0b200041046a2802002103200241e8006a41086a220442003703002002420037036841b00f4107200241e8006a1003200241d8006a41086a200429030037030020022002290368370358200241d8006a4110200241f8006a410041001000417f470d30200110af01450d2f200241e8006a41086a220442003703002002420037036841c50f4107200241e8006a1003200241d8006a41086a200429030037030020022002290368370358200241d8006a411041d02d410041001000417f460d392002421037022c2002200241d8006a360228200241f8006a200241286a103a20022802782204450d2e20024180016a280200220520034d0d39200228027c21080240200420034105746a22092001460d0020092001412010060d1c0b2002200836027c20022004360278200220053602800120012003200241f8006a10b001200241e8006a41086a220342003703002002420037036841be0f4107200241e8006a1003200241d8006a41086a200329030037030020022002290368370358200241d8006a411041d02d410041001000417f460d2d20024200370378200241d8006a4110200241f8006a41084100100041016a41084d0d472002290378210620012001104422072006200720072006561b22067d10b101200110432107410810012203450d59200220033602782002420837027c200241f8006a410041081027200228027820022802800122036a42f3e885d3a3ac98b63a3700002002200341086a36028001200241286a41086a20022802800136020020022002290378370328412010012203450d59200720067c2106200220033602782002422037027c200241f8006a4100412010272002280278220420022802800122056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a220336028001200228027c2108200241286a20022802302003102720022802282205200228023022016a20042003101e1a2002200120036a220336023002402008450d00200410020b200228022c210820022006370378200241e8006a41086a220442003703002002420037036820052003200241e8006a1003200241d8006a41086a200429030037030020022002290368370358200241d8006a4110200241f8006a41081004410121042008450d58200510020c580b200041046a2802002103410710012204450d58200220043602782002420737027c200241f8006a410041071027200228027820022802800122056a220441002800bf10360000200241286a41086a200541076a2205360200200441046a41002f00c3103b0000200441066a41002d00c5103a0000200220022903783703282002200536028001412010012204450d58200220043602782002422037027c200241f8006a4100412010272002280278220520022802800122086a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002002200841206a220436028001200228027c2109200241286a200228023020041027200228022822082002280230220a6a20052004101e1a2002200a20046a220436023002402009450d00200510020b200228022c2105200241e8006a41086a220942003703002002420037036820082004200241e8006a1003200241d8006a41086a200929030037030020022002290368370358200241d8006a4110200241f8006a410041001000210402402005450d00200810020b2004417f470d2b200241e8006a41086a220442003703002002420037036841c6104107200241e8006a1003200241d8006a41086a200429030037030020022002290368370358200241d8006a411041d02d410041001000417f460d2a20024200370378200241d8006a4110200241f8006a41084100100041016a41084d0d452001200229037810b201450d29200241e8006a41086a220442003703002002420037036841cd104107200241e8006a1003200241d8006a41086a200429030037030020022002290368370358410021050240200241d8006a411041d02d410041001000417f460d0020024100360278200241d8006a4110200241f8006a41044100100041016a41044d0d3f200228027821050b200241e8006a41086a2204420037030020024200370368418d104107200241e8006a1003200241d8006a41086a20042903003703002002200229036837035841002109200241d8006a411041d02d410041001000417f460d052002421037022c2002200241d8006a360228200241f8006a200241286a103a20022802782208450d1920024180016a2802002104200228027c210920052003470d4e0c4d0b2000412c6a2802002103200041286a2802002111200041246a2802002112200241c0006a200041196a290000370300200241286a41106a200041116a290000370300200241286a41086a200041096a29000037030020022000290001370328200241e8006a41086a220442003703002002420037036841b00f4107200241e8006a1003200241d8006a41086a200429030037030020022002290368370358200241d8006a4110200241f8006a410041001000417f470d27200241086a200110b30120022802084101470d262002200241286a10b3012002280200450d252002280204210e200241e8006a41086a220442003703002002420037036841b70f4107200241e8006a1003200241d8006a41086a200429030037030020022002290368370358410021040240200241d8006a411041d02d410041001000417f460d0020024100360278200241d8006a4110200241f8006a41044100100041016a41044d0d3d200228027821040b20042003470d24200241e8006a41086a22044200370300200242003703684186104107200241e8006a1003200241d8006a41086a200429030037030020022002290368370358200241d8006a411041d02d410041001000417f460d2320024100360278200241d8006a4110200241f8006a41044100100041016a41044d0d41200e200320022802786b4f0d22200241e8006a41086a220342003703002002420037036841c50f4107200241e8006a1003200241d8006a41086a200329030037030020022002290368370358200241d8006a411041d02d410041001000417f460d3a2002421037026c2002200241d8006a360268200241f8006a200241e8006a103a20022802782213450d2120024180016a280200221420124d0d3a200228027c21150240201320124105746a22032001460d0020032001412010060d3b0b201420114d0d360240201320114105746a2203200241286a460d002003200241286a412010060d370b200241c8006a200241286a10b4012002280250210320022802482105200241e8006a41086a2204420037030020024200370368418d104107200241e8006a1003200241d8006a41086a20042903003703002002200229036837035841002116200241d8006a411041d02d410041001000417f460d052002421037026c2002200241d8006a360268200241f8006a200241e8006a103a20022802782217450d17200228027c211620024180016a28020041057441057522042003200320044b1b22080d060c070b41002004460d540b41dc351054000b410821100b2002200936027c20022010360278200241003602800102402009450d002004410420044104491b210441002103410021050340200242003703684100200241d8006a4110200241e8006a41082004100022082008417f461b220841074d0d442008410820084108491b2108200541016a21052002290368210602402003200228027c470d00200241f8006a1071200241f8006a41086a2802002103200228027821100b200820046a2104201020034103746a2006370300200241f8006a41086a200341016a220336020020052009490d000b200228027821100b2010450d43200229027c2118200241e8006a41086a220342003703002002420037036841c50f4107200241e8006a1003200241d8006a41086a20032903003703002002200229036837035841002119200241d8006a411041d02d410041001000417f460d042002421037026c2002200241d8006a360268200241f8006a200241e8006a103a2002280278221a450d1220024180016a280200210b200228027c21190c050b410121084100210420052003460d470c480b4101211741002003200341004b1b2208450d010b4100210420024190016a210920024188016a210a20024180016a210b2017210303400240200520046a2d0000450d0020094200370300200a4200370300200b420037030020024200370378200241f8006a2003460d002003200241f8006a41201006450d00200241f8006a200310b50120022802784101470d3b200228027c200e4d0d050b200341206a2103200441016a22042008490d000b0b410021032016450d430c420b4101211a4100210b0b200241e8006a41086a22034200370300200242003703684188114107200241e8006a1003200241d8006a41086a200329030037030020022002290368370358200241d8006a411041d02d410041001000417f460d1620024200370378200241d8006a4110200241f8006a41084100100041016a41084d0d392002290378210620011043200110447c2006200bad7e221b540d15200241e8006a41086a2203420037030020024200370368418f114107200241e8006a1003200241d8006a41086a200329030037030020022002290368370358200241d8006a411041d02d410041001000417f460d142002421037026c2002200241d8006a360268200241f8006a200241e8006a10b60120022802782217450d1320024180016a280200221c450d122017290300200c5a0d11200228027c211d200241f8006a104720022802782209200228028001221141286c22056a210a41002103200921040240024002400240200541286d4104490d0020092105410021030340200241286a20052204460d0220032004200241286a4120100622054100476a21032005450d02200441286a2205200241286a460d0220032005200241286a4120100622084100476a21032008450d02200541286a2205200241286a460d0220032005200241286a4120100622084100476a21032008450d02200541286a2205200241286a460d0220032005200241286a4120100622084100476a21032008450d02200a200541286a22056b41286d41034b0d000b200441a0016a21040b02402004200a460d002009201141286c6a21080340200241286a2004460d0220032004200241286a4120100622054100476a21032005450d022008200441286a2204470d000b0b41000d010c020b4101450d010b2003200e4f0d0c0b0240200228027c450d00200910020b200241f8006a200241286a10b50120022802784101470d10024002402018421d88a74103752203200b4105744105752204200420034b1b2208450d0020024180016a2802002109200228027c210a4200210741002104201a210320102105034020052903002106200241106a200310b301200441016a21040240024020022802104101470d002002280214200a490d00200241f8006a200310b4010240200241f8006a41086a28020020094d0d002002280278220e20096a2d0000210b0240200228027c450d00200e10020b200b41ff01710d020c010b200228027c450d00200228027810020b420021060b200341206a2103200541086a2105200620077c210720042008490d000c020b0b420021070b2017201c41286c22056a21042017210302400240200541286d4104490d00200241206a2105200241786a2108200241506a2109200241a87f6a210a20172103034020052003460d02200341086a200241286a41201006450d0220082003460d02200341306a200241286a41201006450d0220092003460d02200341d8006a200241286a41201006450d02200a2003460d0220034180016a200241286a41201006450d022004200341a0016a22036b41286d41034b0d000b0b024020032004460d002017201c41286c6a2105200241206a2104034020042003460d02200341086a200241286a41201006450d022005200341286a2203470d000b0b2007200c520d00200241f8006a41186a2203200241286a41186a290300370300200241f8006a41106a2204200241286a41106a290300370300200241f8006a41086a2205200241286a41086a290300370300200220022903283703782017200c370300201741206a2003290300370300201741186a2004290300370300201741106a200529030037030020172002290378370308201c41144b0d02201c41014d0d03201c417f6a21092017201c41286c6a41586a210e0340201c20092203417f6a2209490d2d0240201c20096b22084102490d002017200341286c6a22052903002017200941286c6a220b29030022065a0d00200b2005290300370300200b2903082107200b41086a200541086a290300370300200241f8006a41186a2211200b41206a2203290300370300200241f8006a41106a2212200b41186a2204290300370300200241f8006a41086a2213200b41106a22012903003703002001200541106a2903003703002004200541186a2903003703002003200541206a2903003703002002200737037841012101024020084103490d0041012104200e21030340200441016a220120084f0d340240200341286a220529030020065a0d00200420084f0d34200341206a200341c8006a290300370300200341186a200341c0006a290300370300200341106a200341386a290300370300200341086a200341306a29030037030020032005290300370300200441026a210a2001210420052103200a2008490d010c020b0b20042101200321050b20052006370300200b200141286c6a22032002290378370308200341206a2011290300370300200341186a2012290300370300200341106a20132903003703000b200e41586a210e20090d000c040b0b200110432106410810012203450d4d200220033602782002420837027c200241f8006a410041081027200228027820022802800122036a42f3e885d3a3ac98b63a3700002002200341086a36028001200241e8006a41086a20022802800136020020022002290378370368412010012203450d4d2006201b20062006201b561b220c7d2107200220033602782002422037027c200241f8006a4100412010272002280278220420022802800122056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a220336028001200228027c2108200241e8006a20022802702003102720022802682205200228027022096a20042003101e1a2002200920036a220336027002402008450d00200410020b200228026c210420022007370378200241e8006a41086a220842003703002002420037036820052003200241e8006a1003200241d8006a41086a200829030037030020022002290368370358200241d8006a4110200241f8006a4108100402402004450d00200510020b0240201b2006580d002001200110442206201b200c7d2207200620062007561b7d10b1010b0240201d450d00201710020b02402019450d00201a10020b2018a7450d3f0c3e0b4101210320160d3f0c400b201c410176221ead42287e2206422088a70d082006a72203417f4c0d074108211f02402003450d0020031001221f450d4c0b410021042002410036027020024204370368201741586a2120201741887f6a212141042105200241e8006a41086a2115201c211603402016210e410021164101210802400240024002400240024002400240200e417f6a2203450d0002400240024002400240024002402017200341286c6a2903002017200e417e6a220841286c6a29030022065a0d00410021092008450d022021200e41286c6a210303402006200329030022075a0d02200341586a2103200721062008417f6a22080d000c030b0b02402008450d002021200e41286c6a2103410221080340200620032903002207540d04200341586a210320072106200e200841016a2208470d000b41002116200e21082004200228026c470d0e0c0d0b41022108410021162004200228026c470d0d0c0c0b200821090b200e2009490d02200e201c4b0d090240200e20096b2208410176220a450d002020200e41286c6a21032017200941286c6a21010340200241f8006a41206a220b200141206a2211290300370300200241f8006a41186a2212200141186a2213290300370300200241f8006a41106a2214200141106a2216290300370300200241f8006a41086a2222200141086a222329030037030020022001290300370378200341086a22242903002106200341106a22252903002107200341186a2226290300211b2003290300210c2011200341206a22272903003703002013201b37030020162007370300202320063703002001200c3703002027200b29030037030020262012290300370300202520142903003703002024202229030037030020032002290378370300200341586a2103200141286a2101200a417f6a220a0d000b0b2009450d010c030b200e20086b22090d020b200921160c020b2009200e1055000b0240200841094b0d00200e201c4b0d042017200941286c6a21120340200e2009417f6a2216490d060240200e20166b22084102490d002017200941286c6a22092903002017201641286c6a221129030022065a0d002011200929030037030020112903082107201141086a200941086a290300370300200241f8006a41186a2213201141206a2203290300370300200241f8006a41106a2214201141186a2201290300370300200241f8006a41086a2222201141106a220a290300370300200a200941106a2903003703002001200941186a2903003703002003200941206a290300370300200220073703784101210a024020084103490d0041012101201221030340200141016a220a20084f0d060240200341286a220929030020065a0d00200120084f0d08200341206a200341c8006a290300370300200341186a200341c0006a290300370300200341106a200341386a290300370300200341086a200341306a29030037030020032009290300370300200141026a210b200a210120092103200b2008490d010c020b0b2001210a200321090b200920063703002011200a41286c6a22032002290378370308200341206a2013290300370300200341186a2014290300370300200341106a20222903003703000b2016450d02201241586a2112201621092008410a490d000c020b0b200921162004200228026c470d070c060b2004200228026c460d050c060b41ccc100200141016a2008103c000b41dcc10020012008103c000b200e2009417f6a22164f0d010b2016200e1055000b200e201c1029000b200241e8006a107a20152802002104200228026821050b200520044103746a22032008360204200320163602002015200441016a2204360200024020044102490d00200228026821050340024002400240024020052004417f6a4103746a2203280200450d00200520044103746a220941746a2802002201200328020422084d0d00200441024d0d0520052004417d6a22124103746a2802042203200820016a4d0d01200441034d0d05200941646a280200200320016a4d0d010c050b20044103490d012003280204210820052004417d6a22124103746a28020421030b20032008490d010b2004417e6a21120b2004201241016a22134d0d04200420124d0d052005201241037422226a2203280204222320032802006a22032005201341037422246a22042802002214490d062003201c4b0d072017201441286c6a220e2004280204221141286c22046a2108200341286c210502400240024002400240200320146b220920116b220320114f0d00201f2008200341286c2204101e220b20046a210120114101480d0120034101480d01202020056a21052008210303402005200341586a2208200141586a22092009290300200829030054220a1b2204290300370300200541206a200441206a290300370300200541186a200441186a290300370300200541106a200441106a290300370300200541086a200441086a29030037030020012009200a1b2101200e20082003200a1b22034f0d04200541586a2105200b2104200b2001490d000c050b0b201f200e2004101e220320046a210120114101480d01200920114c0d01201720056a210a20032104200e21030340200320082004200829030020042903005422091b2205290300370300200341206a200541206a290300370300200341186a200541186a290300370300200341106a200541106a290300370300200341086a200541086a2903003703002004200441286a20091b2104200341286a2103200841286a200820091b2208200a4f0d04200120044b0d000c040b0b200821030c010b200e21030b201f21040b20032004200120046b220520054128706b101e1a2015280200220320124d0d082002280268220520226a2204202320116a36020420042014360200200320134d0d09200520246a2204200441086a200320136b41037441786a10391a20152003417f6a2204360200200441014b0d000b0b20160d000b0240200228026c450d00200228026810020b201e450d00201f10020b2002201d36027c200220173602782002201c36028001200241f8006a10b7010240201d450d00201710020b02402019450d00201a10020b2018a70d3b0c3c0b41acc10020132004103c000b41acc10020122004103c000b201420031055000b2003201c1029000b41bcc10020122003103c000b41b4c300103b000b105f000b105e000b418439103b000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41d437103b000b41ce114123102d000b41ec38103b000b41cc3641004100103c000b41c1214133102d000b4196114131102d000b41d438103b000b41f4214122102d000b41c1214133102d000b41b436103b000b41f4214122102d000b419c36103b000b41da0f412c102d000b418436103b000b41ec35103b000b418438103b000b41f4214122102d000b41ec37103b000b41f4214122102d000b41c1214133102d000b41a437103b000b418c37103b000b1063000b1062000b41f4214122102d000b41d410412d102d000b41c4381054000b41c435103b000b2009201c1055000b41f436103b000b41bc37103b000b41dcc10020042008103c000b41ccc100200441016a2008103c000b41dc36103b000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b419410412b102d000b41c1214133102d000b41ac35103b000b41c1214133102d000b41c1214133102d000b41c1214133102d000b200228027c450d00201010020b41c1214133102d000b201010020b200f450d09200d10020c090b201710020b0240200228024c450d00200510020b2002201536027c2002201336027820022014360280012001200241286a20031b2012201120031b200241f8006a10b001200241e8006a41086a220442003703002002420037036841be0f4107200241e8006a1003200241d8006a41086a2004290300370300200220022903683703580240200241d8006a411041d02d410041001000417f460d00200242003703780240200241d8006a4110200241f8006a41084100100041016a41084d0d002002290378210602402003450d0020012001104422072006200720072006561b7d10b1010c0a0b200241286a200241286a104422072006200720072006561b22067d10b101200110432107410810012203450d0d200220033602782002420837027c200241f8006a410041081027200228027820022802800122036a42f3e885d3a3ac98b63a3700002002200341086a36028001200241e8006a41086a20022802800136020020022002290378370368412010012203450d0d200720067c2106200220033602782002422037027c200241f8006a4100412010272002280278220420022802800122056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a220336028001200228027c2108200241e8006a20022802702003102720022802682205200228027022016a20042003101e1a2002200120036a220336027002402008450d00200410020b200228026c210420022006370378200241e8006a41086a220842003703002002420037036820052003200241e8006a1003200241d8006a41086a200829030037030020022002290368370358200241d8006a4110200241f8006a410810042004450d09200510020c090b41c1214133102d000b41f4214122102d000b20042003460d010b200420034d0d0120024190016a420037030020024188016a420037030020024180016a420037030020024200370378200820034105746a220a200241f8006a460d00200a200241f8006a412010060d010b2002200936024c20022008360248200220043602500240024020042003470d00200241f8006a41186a2204200141186a290000370300200241f8006a41106a220b200141106a290000370300200241f8006a41086a220e200141086a290000370300200220012900003703782003210a20032009460d010c040b200241f8006a41186a2209200141186a290000370300200241f8006a41106a220a200141106a290000370300200241f8006a41086a220b200141086a29000037030020022001290000370378200420034d0d02200820034105746a22042002290378370000200441186a2009290300370000200441106a200a290300370000200441086a200b2903003700000c040b200241c8006a107c200241c8006a41086a280200210a200228024821080c020b419c38103b000b41b43820032004103c000b200e2903002106200b29030021072004290300211b2008200a4105746a22042002290378370000200441186a201b370000200441106a2007370000200441086a2006370000200241c8006a41086a200a41016a3602000b200241286a41086a200241c8006a41086a28020036020020022002290348370328200241f8006a200241286a10a201200228028001210820022802782104200241e8006a41086a2209420037030020024200370368418d104107200241e8006a1003200241d8006a41086a200929030037030020022002290368370358200241d8006a41102004200810040240200228027c450d00200410020b0240200228022c450d00200228022810020b2002200541016a360278200241e8006a41086a220442003703002002420037036841cd104107200241e8006a1003200241d8006a41086a2205200429030037030020022002290368370358200241d8006a4110200241f8006a41041004200442003703002002420037036841b70f4107200241e8006a10032005200429030037030020022002290368370358410021050240200241d8006a411041d02d410041001000417f460d0020024100360278200241d8006a4110200241f8006a41044100100041016a41044d0d02200228027821050b410710012204450d04200220043602782002420737027c200241f8006a410041071027200228027820022802800122086a220441002800bf10360000200241286a41086a200841076a2208360200200441046a41002f00c3103b0000200441066a41002d00c5103a0000200220022903783703282002200836028001412010012204450d04200220043602782002422037027c200241f8006a4100412010272002280278220820022802800122096a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002002200941206a220436028001200228027c2109200241286a200228023020041027200228022822012002280230220a6a20082004101e1a2002200a20046a220a36023002402009450d00200810020b200228022c2108200241003602800120024201370378200241f8006a410041041027200228027820022802800122046a20053600002002200441046a220436028001200241f8006a2004410410272002280278220420022802800122056a20033600002002200541046a220336028001200241e8006a41086a22054200370300200242003703682001200a200241e8006a1003200241d8006a41086a200529030037030020022002290368370358200241d8006a41102004200310040240200228027c450d00200410020b2008450d00200110020b410121040c020b41c1214133102d000b0240200110af010d00200241e8006a41086a220342003703002002420037036841be0f4107200241e8006a1003200241d8006a41086a2003290300370300200220022903683703580240024002400240200241d8006a411041d02d410041001000417f460d00200242003703780240200241d8006a4110200241f8006a41084100100041016a41084d0d00200229037821062001104322072006540d02410810012203450d07200220033602782002420837027c200241f8006a410041081027200228027820022802800122036a42f3e885d3a3ac98b63a3700002002200341086a36028001200241286a41086a20022802800136020020022002290378370328412010012203450d07200720067d2107200220033602782002422037027c200241f8006a4100412010272002280278220520022802800122086a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200841206a220336028001200228027c2109200241286a200228023020031027200228022822082002280230220a6a20052003101e1a2002200a20036a220336023002402009450d00200510020b200228022c210520022007370378200241e8006a41086a220942003703002002420037036820082003200241e8006a1003200241d8006a41086a200929030037030020022002290368370358200241d8006a4110200241f8006a4108100402402005450d00200810020b20012001104420067c10b101200241e8006a41086a220342003703002002420037036841c50f4107200241e8006a1003200241d8006a41086a20032903003703002002200229036837035802400240200241d8006a411041d02d410041001000417f460d002002421037022c2002200241d8006a360228200241f8006a200241286a103a20022802782208450d052002200229027c220637022c20022008360228200241f8006a41186a200141186a290000370300200241f8006a41106a200141106a290000370300200241f8006a41086a200141086a29000037030020022001290000370378200241f8006a21032006422088a722052006a7460d010c060b2002410036023020024201370328200241f8006a41186a200141186a290000370300200241f8006a41106a200141106a290000370300200241f8006a41086a200141086a29000037030020022001290000370378200241f8006a21030b200241286a107c200241306a2802002105200228022821080c040b41c1214133102d000b41f4214122102d000b41ec3d103b000b41c1214133102d000b20032900002106200241286a41086a2209200541016a360200200820054105746a22052006370000200541186a200341186a290000370000200541106a200341106a290000370000200541086a200341086a290000370000200241c8006a41086a200928020036020020022002290328370348200241f8006a200241c8006a10a201200228028001210520022802782103200241e8006a41086a220842003703002002420037036841c50f4107200241e8006a1003200241d8006a41086a200829030037030020022002290368370358200241d8006a41102003200510040240200228027c450d00200310020b200228024c450d00200228024810020b200241f8006a41186a200141186a290000370300200241f8006a41106a200141106a290000370300200241f8006a41086a200141086a29000037030020022001290000370378200241c8006a41086a200241186a41086a28020036020020022002290318370348410710012203450d01200220033602282002420737022c200241286a4100410710272002280228200228023022056a220341002800cc0f360000200241e8006a41086a200541076a2205360200200341046a41002f00d00f3b0000200341066a41002d00d20f3a00002002200229032837036820022005360230412010012203450d01200220033602282002422037022c200241286a41004120102720022802282205200228023022086a22032002290378370000200341086a200241f8006a41086a290300370000200341106a200241f8006a41106a290300370000200341186a200241f8006a41186a2903003700002002200841206a2203360230200228022c2109200241e8006a200228027020031027200228026822082002280270220a6a20052003101e1a2002200a20036a220a36027002402009450d00200510020b200228026c2105200241286a200241c8006a10b8012002280230210920022802282103200241e8006a41086a220b4200370300200242003703682008200a200241e8006a1003200241d8006a41086a200b29030037030020022002290368370358200241d8006a41102003200910040240200228022c450d00200310020b02402005450d00200810020b0240200228024c450d00200228024810020b410710012203450d01200220033602782002420737027c200241f8006a410041071027200228027820022802800122056a220341002800d30f360000200241286a41086a200541076a2205360200200341046a41002f00d70f3b0000200341066a41002d00d90f3a0000200220022903783703282002200536028001412010012203450d01200220033602782002422037027c200241f8006a4100412010272002280278220520022802800122086a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200841206a220336028001200228027c2101200241286a20022802302003102720022802282208200228023022096a20052003101e1a2002200920036a220336023002402001450d00200510020b200228022c210520022004360278200241e8006a41086a220442003703002002420037036820082003200241e8006a1003200241d8006a41086a200429030037030020022002290368370358200241d8006a4110200241f8006a4104100402402005450d00200810020b410021040b0240024020002d000022034107714101460d0020034105460d0120034102460d0120034101470d01200041086a280200450d01200041046a2802001002200241a0016a24000f0b2004450d00200041086a280200450d00200041046a28020010020b200241a0016a24000f0b101c000ba90301057f230041206b220124000240410710012202450d002001200236021020014207370214200141106a4100410710272001280210200128021822036a220241002800d30f360000200141086a200341076a2203360200200241046a41002f00d70f3b0000200241066a41002d00d90f3a00002001200129031037030020012003360218412010012202450d002001200236021020014220370214200141106a41004120102720012802102203200128021822046a22022000290000370000200241086a200041086a290000370000200241106a200041106a290000370000200241186a200041186a2900003700002001200441206a220036021820012802142104200120012802082000102720012802002202200128020822056a20032000101e1a2001200520006a220036020802402004450d00200310020b20012802042103200141106a41086a220442003703002001420037031020022000200141106a1003200141086a20042903003703002001200129031037030020014110200141106a410041001000210002402003450d00200210020b200141206a24002000417f470f0b101c000bc70908057f017e017f027e017f017e017f017e230041d0006b220324000240200241086a2204280200220520014d0d002002280200220620014105746a220141186a2207290000210820062005417f6a22094105746a2205290000210a200541086a2206290000210b200541106a220c290000210d2007200541186a220e290000370000200141106a2207290000210f2007200d370000200141086a2207290000210d2007200b3700002001290000210b2001200a370000200341106a41186a2008370300200341106a41106a200f370300200341106a41086a2201200d370300200e2008370000200c200f3700002006200d3700002005200b3700002003200b37031020042009360200200341086a200936020020032002290200370300200341c0006a200310a2012003280248210220032802402105200142003703002003420037031041c50f4107200341106a1003200341306a41086a200129030037030020032003290310370330200341306a411020052002100402402003280244450d00200510020b02402003280204450d00200328020010020b0240410710012201450d002003200136021020034207370214200341106a4100410710272003280210200328021822056a220141002800cc0f360000200341306a41086a200541076a2205360200200141046a41002f00d00f3b0000200141066a41002d00d20f3a00002003200329031037033020032005360218412010012201450d002003200136021020034220370214200341106a41004120102720032802102205200328021822026a22012000290000370000200141086a200041086a290000370000200141106a200041106a290000370000200141186a200041186a2900003700002003200241206a220136021820032802142109200341306a20032802382001102720032802302202200328023822046a20052001101e1a2003200420016a220136023802402009450d00200510020b20032802342105200341106a41086a220942003703002003420037031020022001200341106a1003200341306a41086a200929030037030020032003290310370330200341306a4110100502402005450d00200210020b410710012201450d002003200136021020034207370214200341106a4100410710272003280210200328021822056a220141002800d30f360000200341306a41086a200541076a2205360200200141046a41002f00d70f3b0000200141066a41002d00d90f3a00002003200329031037033020032005360218412010012201450d002003200136021020034220370214200341106a41004120102720032802102205200328021822026a22012000290000370000200141086a200041086a290000370000200141106a200041106a290000370000200141186a200041186a2900003700002003200241206a220036021820032802142102200341306a20032802382000102720032802302201200328023822096a20052000101e1a2003200920006a220036023802402002450d00200510020b20032802342105200341106a41086a220242003703002003420037031020012000200341106a1003200341306a41086a200229030037030020032003290310370330200341306a4110100502402005450d00200110020b200341d0006a24000f0b101c000b419c3920012005103c000b9a0301057f230041306b220224000240410810012203450d002002200336022020024208370224200241206a4100410810272002280220200228022822036a42f3e885d3c3cdd8b73a3700002002200341086a360228200241106a41086a200228022836020020022002290320370310412010012203450d002002200336022020024220370224200241206a41004120102720022802202204200228022822056a22032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a2900003700002002200541206a220036022820022802242105200241106a20022802182000102720022802102203200228021822066a20042000101e1a2002200620006a220036021802402005450d00200410020b2002280214210420022001370308200241206a41086a220542003703002002420037032020032000200241206a1003200241106a41086a200529030037030020022002290320370310200241106a4110200241086a4108100402402004450d00200310020b200241306a24000f0b101c000bfd0602067f017e230041306b220224000240410810012203450d00200220033602182002420837021c200241186a4100410810272002280218200228022022036a42f3e885d3a3ec9bb73a3700002002200341086a360220200241086a41086a200228022036020020022002290318370308412010012203450d00200220033602182002422037021c200241186a41004120102720022802182204200228022022056a22032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a2900003700002002200541206a2203360220200228021c2106200241086a20022802102003102720022802082205200228021022076a20042003101e1a2002200720036a220336021002402006450d00200410020b200228020c210442002108200241186a41086a220642003703002002420037031820052003200241186a1003200241086a41086a20062903003703002002200229031837030802400240200241086a411041d02d410041001000417f460d0020024200370318200241086a4110200241186a41084100100041016a41084d0d01200229031821080b02402004450d00200510020b4100210302402008427f510d002008102e560d002000104322082001540d00410810012203450d02200220033602182002420837021c200241186a4100410810272002280218200228022022036a42f3e885d3a3ac98b63a3700002002200341086a360220200241086a41086a200228022036020020022002290318370308412010012203450d02200820017d2108200220033602182002422037021c200241186a41004120102720022802182204200228022022056a22032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a2900003700002002200541206a2200360220200228021c2103200241086a20022802102000102720022802082205200228021022066a20042000101e1a2002200620006a220036021002402003450d00200410020b200228020c210420022008370328200241186a41086a220342003703002002420037031820052000200241186a1003200241086a41086a200329030037030020022002290318370308200241086a4110200241286a41081004410121032004450d00200510020b200241306a240020030f0b41c1214133102d000b101c000bf80301057f230041206b22022400024002400240410710012203450d002002200336021020024207370214200241106a4100410710272002280210200228021822046a220341002800d30f360000200241086a200441076a2204360200200341046a41002f00d70f3b0000200341066a41002d00d90f3a00002002200229031037030020022004360218412010012203450d002002200336021020024220370214200241106a41004120102720022802102204200228021822056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a220136021820022802142105200220022802082001102720022802002203200228020822066a20042001101e1a2002200620016a220136020802402005450d00200410020b20022802042104200241106a41086a220542003703002002420037031020032001200241106a1003200241086a20052903003703002002200229031037030041002101024002402002411041d02d410041001000417f460d00200241003602104101210120024110200241106a41044100100041016a41044d0d01200228021021052004450d040c030b20040d020c030b41c1214133102d000b101c000b200310020b2000200136020020002005360204200241206a24000b8806010a7f230041306b22022400024002400240024002400240024002400240410710012203450d00200220033602182002420737021c200241186a4100410710272002280218200228022022046a220341002800cc0f360000200241086a41086a200441076a2204360200200341046a41002f00d00f3b0000200341066a41002d00d20f3a00002002200229031837030820022004360220412010012203450d00200220033602182002422037021c200241186a41004120102720022802182204200228022022056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a2201360220200228021c2103200241086a20022802102001102720022802082206200228021022056a20042001101e1a2002200520016a220136021002402003450d00200410020b200228020c2107200241186a41086a220342003703002002420037031820062001200241186a1003200241086a41086a200329030037030020022002290318370308200241086a411041d02d410041001000417f460d01200241003602184100200241086a4110200241186a41044100100022012001417f461b220141034d0d0720022802182208417f4c0d082008450d022008100122090d030b101c000b200041003602082000420137020020070d020c030b410121090b2002200836021c200220093602182002410036022002402008450d002001410420014104491b2103200241206a210a41002101410021040340200241003a002f200241086a41102002412f6a41012003100041016a41014b220b450d04200441016a210420022d002f210502402001200228021c470d00200241186a1023200a2802002101200228021821090b2003200b6a2103200920016a20053a0000200a200141016a220136020020042008490d000b200228021821090b2009450d032000200229021c370204200020093602002007450d010b200610020b200241306a24000f0b200228021c450d00200910020b41c1214133102d000b1024000b990401057f230041206b220224000240410710012203450d002002200336021020024207370214200241106a4100410710272002280210200228021822046a220341002800bf10360000200241086a200441076a2204360200200341046a41002f00c3103b0000200341066a41002d00c5103a00002002200229031037030020022004360218412010012203450d002002200336021020024220370214200241106a41004120102720022802102204200228021822056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a220136021820022802142105200220022802082001102720022802002203200228020822066a20042001101e1a2002200620016a220136020802402005450d00200410020b20022802042104200241106a41086a220542003703002002420037031020032001200241106a1003200241086a20052903003703002002200229031037030041002101024002402002411041d02d410041001000417f460d002002410036021020024110200241106a41044100100041016a41044d0d01200228021021012002410036021020024110200241106a41044104100041016a41044d0d01200041086a200228021036020020002001360204410121010b2000200136020002402004450d00200310020b200241206a24000f0b41c1214133102d000b101c000b930503067f017e097f230041d0006b220224002002410036023020012001280208220341002001280200220420012802042205200241306a41042003100022032003417f461b2203410420034104491b6a220636020802400240024002400240200341034d0d0020022802302207ad42287e2208422088a70d042008a72203417f4c0d032003450d012003100122090d02101c000b20004100360200200241d0006a24000f0b410821090b20022007360204200220093602002002410036020802402007450d00200241306a41186a210a200241306a41106a210b4100210c4100210d034020024200370330200141086a220e410020042005200241306a41082006100022032003417f461b2203410820034108491b20066a220636020002400240200341074d0d0020022903302108200a4200370300200b4200370300200241306a41086a220f420037030020024200370330200e410020042005200241306a41202006100022032003417f461b2203412020034120491b20066a22063602002003411f4d0d00200d41016a210d200241106a41186a220e200a290300370300200241106a41106a2210200b290300370300200241106a41086a2211200f29030037030020022002290330370310200c2002280204470d0120021068200241086a280200210c200228020021090c010b2000410036020002402002280204450d00200910020b200241d0006a24000f0b2009200c41286c6a2203200837030020032002290310370308200341206a200e290300370300200341186a2010290300370300200341106a2011290300370300200241086a200c41016a220c360200200d2007490d000b0b20002002290300370200200041086a200241086a280200360200200241d0006a24000f0b105f000b105e000bf40403057f017e037f230041306b22012400200041086a28020021022001410036022820014201370320200141206a4100410410272001280220200128022822036a20023600002001200341046a360228200141086a220420012802283602002001200129032037030002400240024002402002450d0020002802002200200241286c6a21050340200141106a41086a220341003602002001420137031020002903002106200141106a41004108102720032003280200220241086a2207360200200220012802106a2006370000200141106a20074120102720032003280200220741206a22023602002007200128021022086a220341086a200041106a290000370000200341106a200041186a290000370000200341186a200041206a2900003700002003200041086a2900003700002002417f4c0d03024002402002450d002002100122030d010c060b410121030b200141206a41086a220741003602002001200236022420012003360220200141206a41002002102720072007280200220920026a22033602002009200128022022076a20082002101e1a2001280224210202402001280214450d00200810020b200120042802002003102720012802002209200428020022086a20072003101e1a2004200820036a220336020002402002450d00200710020b200041286a22002005470d000c020b0b20012802082103200128020021090b20012802042102200141206a41086a2200420037030020014200370320418f114107200141206a1003200141106a41086a200029030037030020012001290320370310200141106a411020092003100402402002450d00200910020b200141306a24000f0b1019000b101c000bb50201077f230041206b22022400200141086a28020021032002410036021820024201370310200241106a4100410410272002280210200228021822046a20033600002002200441046a360218200241086a2204200228021836020020022002290310370300024002402003450d00200128020021050340410110012201450d022002200136021020024201370214200241106a410041011027200241106a41086a22012001280200220641016a22013602002006200228021022076a20052d00003a00002002280214210620022004280200200110272002280200200428020022086a20072001101e1a2004200820016a36020002402006450d00200710020b200541016a21052003417f6a22030d000b0b20002002290300370200200041086a2004280200360200200241206a24000f0b101c000bd60c03047f047e017f230041f0006b210202400240024002400240024002400240024002400240024002400240024020012d002822034103714101460d0020034102470d01200141206a22032802002204450d0e20032004417f6a3602002001411c6a2d0000450d050c0e0b20012802102204450d01200141106a4100360200024020012802082203200128020c2205460d002004417f7321040340200241c8006a41206a200341206a290300370300200241c8006a41186a200341186a290300370300200241c8006a41106a200341106a290300370300200241c8006a41086a200341086a29030037030020022003290300370348200441016a2204450d072005200341286a2203470d000b200141086a20053602000b200042003703000f0b20012802102204450d01200141106a410036020020012802082203200128020c2205460d022004417f7321040340200241c8006a41206a200341206a290300370300200241c8006a41186a200341186a290300370300200241c8006a41106a200341106a290300370300200241c8006a41086a200341086a29030037030020022003290300370348200441016a2204450d062005200341286a2203470d000b200141086a20053602000c020b20012802082202200128020c460d06200141086a200241286a360200200041286a200241206a290300370300200041206a200241186a290300370300200041186a200241106a290300370300200041106a200241086a29030037030020002002290300370308200042013703000f0b20012802082203200128020c460d00200141086a200341286a360200200241206a200341206a290300370300200241186a200341186a290300370300200241106a200341106a290300370300200241086a200341086a290300370300200220032903003703000c040b200141286a41023a0000200141206a22032802002204450d0820032004417f6a3602002001411c6a2d0000450d050c080b200141186a22042802002203200141146a280200460d082004200341586a220336020020032903004200510d05200241c8006a41206a200341206a2903002206370300200241c8006a41186a200341186a2903002207370300200241c8006a41106a200341106a2903002208370300200241c8006a41086a200341086a2903002209370300200241086a22042008370300200241106a22052007370300200241186a220a20063703002002200329030037034820022009370300200041286a200141246a280200290300370300200041206a200a290300370300200041186a2005290300370300200041106a200429030037030020002002290300370308200042013703000f0b2000200229034837030820004201370300200141086a200341286a360200200041106a200241c8006a41086a290300370300200041186a200241c8006a41106a290300370300200041206a200241c8006a41186a290300370300200041286a200241c8006a41206a2903003703000f0b200141086a200341286a360200200241086a200241c8006a41086a290300370300200241106a200241c8006a41106a290300370300200241186a200241c8006a41186a290300370300200241206a200241c8006a41206a290300370300200220022903483703000b2000200229030037030820004201370300200041106a200241086a290300370300200041186a200241106a290300370300200041206a200241186a290300370300200041286a200241206a2903003703000f0b200042003703000f0b200141186a22042802002203200141146a280200460d022004200341586a220336020020032903004200510d01200241c8006a41206a200341206a2903002206370300200241c8006a41186a200341186a2903002207370300200241c8006a41106a200341106a2903002208370300200241c8006a41086a200341086a2903002209370300200241286a41086a22042008370300200241286a41106a22052007370300200241286a41186a220a20063703002002200329030037034820022009370328200041286a200141246a280200290300370300200041206a200a290300370300200041186a2005290300370300200041106a200429030037030020002002290328370308200042013703000f0b2001411c6a41013a0000200042003703000f0b2001411c6a41013a0000200042003703000f0b200042003703000f0b200042003703000b8c0204017f017e017f017e230041c0006b22022400102e2103200241086a220442003703002002420037030041f726410720021003200241306a41086a2004290300370300200220022903003703300240200241306a411041d02d410041001000417f460d00200242003703000240200241306a4110200241084100100041016a41084d0d0020022903002105200241286a200041286a290300370300200241206a200041206a290300370300200241186a200041186a290300370300200241106a200041106a290300370300200241086a200041086a29030037030020022000290300370300200520037c20022001103f200241c0006a24000f0b41c1214133102d000b41f4214122102d000bba0503047f017e087f230041e0006b22012400200141c0006a41086a220242003703002001420037034041f2224107200141c0006a1003200141086a2002290300370300200120012903403703000240024002402001411041d02d410041001000417f460d00200141003602400240410020014110200141c0006a41044100100022022002417f461b220341034d0d0020012802402204ad42287e2205422088a70d022005a72202417f4c0d03024002402002450d002002100122060d01101c000b410821060b200120043602142001200636021020014100360218024002402004450d002003410420034104491b2107200141c0006a41186a21084100210341002109034020014200370340410020014110200141c0006a41082007100022022002417f461b220241074d0d022001290340210520084200370300200141c0006a41106a220a4200370300200141c0006a41086a220b420037030020014200370340410020014110200141c0006a41202002410820024108491b20076a2207100022022002417f461b2202411f4d0d02200941016a21092002412020024120491b2102200141206a41186a220c2008290300370300200141206a41106a220d200a290300370300200141206a41086a220a200b29030037030020012001290340370320024020032001280214470d00200141106a106f200141106a41086a2802002103200128021021060b200220076a21072006200341286c6a2202200537030020022001290320370308200241206a200c290300370300200241186a200d290300370300200241106a200a290300370300200141106a41086a200341016a220336020020092004490d000b200128021021060b2006450d012000200129021437020420002006360200200141e0006a24000f0b2001280214450d00200610020b41c1214133102d000b41f4214122102d000b1064000b1065000bf40403057f017e037f230041306b22012400200041086a28020021022001410036022820014201370320200141206a4100410410272001280220200128022822036a20023600002001200341046a360228200141086a220420012802283602002001200129032037030002400240024002402002450d0020002802002200200241286c6a21050340200141106a41086a220341003602002001420137031020002903002106200141106a41004108102720032003280200220241086a2207360200200220012802106a2006370000200141106a20074120102720032003280200220741206a22023602002007200128021022086a220341086a200041106a290000370000200341106a200041186a290000370000200341186a200041206a2900003700002003200041086a2900003700002002417f4c0d03024002402002450d002002100122030d010c060b410121030b200141206a41086a220741003602002001200236022420012003360220200141206a41002002102720072007280200220920026a22033602002009200128022022076a20082002101e1a2001280224210202402001280214450d00200810020b200120042802002003102720012802002209200428020022086a20072003101e1a2004200820036a220336020002402002450d00200710020b200041286a22002005470d000c020b0b20012802082103200128020021090b20012802042102200141206a41086a220042003703002001420037032041f2224107200141206a1003200141106a41086a200029030037030020012001290320370310200141106a411020092003100402402002450d00200910020b200141306a24000f0b1019000b101c000b922305077f017e027f017e037f230041b0016b22022400200241003a005020012001280208220320012802002001280204200241d0006a41012003100041016a220341014b6a220436020802400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020034102490d0020022d0050220341074b0d03024020030e080005020404060703000b200241003a0050200141086a20042001280200200141046a280200200241d0006a41012004100041016a220341014b6a220436020020034102490d1e20022d00502203450d0a20034101470d1e200141046a280200210520024100360250200141086a4100200128020022062005200241d0006a41042004100022032003417f461b2207410420074104491b20046a2203360200200741034d0d1e20022802502208ad42187e2209422088a70d202009a72204417f4c0d1f2004450d1b20041001220a0d1c0c210b20004106360200200241b0016a24000f0b200241003a005041042107200141086a200420012802002205200141046a280200220b200241d0006a41012004100041016a220341014b6a220436020020034102490d1020022d0050220341034b0d10024020030e04000e0f10000b20024200370350200141086a41002005200b200241d0006a41082004100022012001417f461b2201410820014108491b20046a360200200141074d0d1020022903502109410121070c0f0b200241003a0050200141086a200420012802002207200141046a2802002205200241d0006a41012004100041016a220341014b6a220436020020034102490d0620022d00502203450d0420034101470d0620024200370350200141086a410020072005200241d0006a41082004100022012001417f461b2201410820014108491b20046a360200200141074d0d06200229035021094202210c0c050b20004106360200200241b0016a24000f0b200241003a0050200141086a200420012802002207200141046a2802002205200241d0006a41012004100041016a220341014b6a220436020020034102490d0820022d00502203450d0620034101470d08420221090c070b200241003a0050200141086a200420012802002207200141046a2802002205200241d0006a41012004100041016a220341014b6a220436020020034102490d1120022d00502203450d0820034101470d1120024100360250200141086a410020072005200241d0006a41042004100022012001417f461b2201410420014104491b20046a360200200141034d0d1120022802502103420221090c200b200241003a0050200141086a200420012802002207200141046a2802002205200241d0006a41012004100041016a220341014b6a2204360200024020034102490d004105210320022d0050220b41034b0d1d0240200b0e0400100e0f000b20024100360250200141086a410020072005200241d0006a41042004100022012001417f461b2201410420014104491b20046a360200200141034d0d1d20022802502101410121030c1f0b410521030c1c0b20024200370350200141086a410020072005200241d0006a41082004100022012001417f461b2201410820014108491b20046a360200200141074d0d01200229035021094201210c0b20004105360200200041086a200c370300200041106a2009370300200041186a2002290350370300200041206a200241d0006a41086a290300370300200041286a200241d0006a41106a290300370300200241b0016a24000f0b20004106360200200241b0016a24000f0b200141046a280200210320024100360250200141086a410020012802002003200241d0006a41042004100022032003417f461b2203410420034104491b20046a2204360200200341034d0d1320022802502203417f4c0d172003450d0e20031001220a450d16200a4100200310171a200141086a28020021040c0f0b20024200370350200141086a410020072005200241d0006a41082004100022012001417f461b22014108200141084922011b20046a36020020010d012002290350210c420121090b20004101360200200041086a2009370300200041106a200c370300200041186a2002290350370300200041206a200241d0006a41086a290300370300200041286a200241d0006a41106a290300370300200241b0016a24000f0b20004106360200200241b0016a24000f0b200241d0006a200110bd0120024180016a41086a2203200241dc006a29020037030020024180016a41106a2204200241e4006a29020037030020024180016a41186a2207200241ec006a29020037030020024180016a41206a2205200241f4006a29020037030020024180016a41286a220b200241fc006a2802003602002002200229025437038001200228025022064106460d08200241206a41286a220a200b280200360200200241206a41206a220b2005290300370300200241206a41186a22052007290300370300200241206a41106a22072004290300370300200241206a41086a220420032903003703002002200229038001370320200241d0006a41286a200a280200360200200241d0006a41206a200b290300370300200241d0006a41186a2005290300370300200241d0006a41106a2007290300370300200241d0006a41086a200429030037030020022002290320370350413010012203450d1220032002290350370204200320063602002003410c6a200241d0006a41086a290300370200200341146a200241e0006a2903003702002003411c6a200241e8006a290300370200200341246a200241f0006a2903003702002003412c6a200241f8006a28020036020020022003360208200241003a0050200141086a2204200428020022042001280200200141046a280200200241d0006a41012004100041016a41014b22016a3602002001450d0720022d0050220141034f0d07420121090c170b20024200370350200141086a41002005200b200241d0006a41082004100022012001417f461b2201410820014108491b20046a360200200141074d0d0220022903502109410221070c010b20024100360250200141086a41002005200b200241d0006a41042004100022012001417f461b2201410420014104491b20046a36020041032107200141034d0d01200228025021060b20004102360200200041086a20073602002000410c6a2006360200200041106a2009370200200041186a2002290350370300200041206a200241d0006a41086a290300370300200041286a200241d0006a41106a290300370300200241b0016a24000f0b20004106360200200241b0016a24000f0b20024200370350200141086a410020072005200241d0006a41082004100022012001417f461b2201410820014108491b20046a360200200141074d0d0f20022903502109410321030c100b20024200370350200141086a410020072005200241d0006a41082004100022012001417f461b2201410820014108491b20046a360200200141074d0d0e20022903502109410421030c0f0b200241d0006a41186a220b4200370300200241d0006a41106a22064200370300200241d0006a41086a220a420037030020024200370350200141086a410020072005200241d0006a41202004100022012001417f461b2201412020014120491b20046a3602002001411f4d0d0220024180016a41186a2201200b29030037030020024180016a41106a2203200629030037030020024180016a41086a2204200a2903003703002002200229035037038001200b200129030037030020062003290300370300200a20042903003703002002200229038001370350410221032002411c6a41026a220420022d00523a0000200241086a41086a2207200241e7006a290000370300200241086a41106a2205200241d0006a411f6a2d00003a0000200220022f01503b011c2002200229005f3703082002280053210120022900572109200241046a41026a20042d00003a0000200241206a41086a2007290300370300200241206a41106a20052d00003a0000200220022f011c3b0104200220022903083703200c0f0b200241086a10220b20004106360200200241b0016a24000f0b200b20024180016a41186a290000370300200620024180016a41106a290000370300200a20024180016a41086a29000037030020022002290080013703500c0a0b4101210a0b200141086a200341002001280200200141046a280200200a20032004100022012001417f461b2201200120034b1b20046a3602000240200320014d0d00200a10020c040b200a450d032003ad22094220862009842109410121010c020b4104210a0b200220083602542002200a3602502002410036025802402008450d00200141086a21044101210d4100210b03402002410036028001200441002006200520024180016a41042003100022072007417f461b2207410420074104491b20036a220f36020002400240200741034d0d002002280280012203417f4c0d09024002402003450d00200310012207450d0a20074100200310171a0c010b410121070b2004200341002006200520072003200f100022052005417f461b2205200520034b1b200f6a3602000240200320054b0d002007450d012003ad22094220862009842109200141046a220e28020021052004280200210320024100360280012004200341002001280200200520024180016a41042003100022052005417f461b2205410420054104491b6a22063602000240200541034d0d002002280280012203417f4c0d0b024002402003450d00200310012205450d0c20054100200310171a200428020021060c010b410121050b2004200341002001280200200e2802002005200320061000220f200f417f461b220f200f20034b1b20066a36020002402003200f4b0d002005450d012003ad220c422086200c84210c200b2002280254470d04200241d0006a1076200241d0006a41086a280200210b2002280250210a0c040b200510020b2009a7450d010b200710020b200228025021040240200b450d00200b41186c21032004210103400240200141046a280200450d00200128020010020b0240200141106a280200450d002001410c6a28020010020b200141186a2101200341686a22030d000b0b2002280254450d04200410020c040b0240200a200b41186c6a22032009370204200320073602002003410c6a2005360200200341106a200c370200200241d0006a41086a200b41016a220b360200200d20084f0d00200d41016a210d20042802002103200e2802002105200128020021060c010b0b2002280250210a0b200a450d0120022902542109410221010b2000200136020420004100360200200041086a200a3602002000410c6a2009370200200041146a20022902503702002000411c6a200241d0006a41086a290200370200200041246a200241e0006a2902003702002000412c6a200241e8006a280200360200200241b0016a24000f0b20004106360200200241b0016a24000f0b1061000b1060000b101c000b1019000b0b0b200241086a41026a2204200241046a41026a2d00003a0000200241d0006a41086a2207200241206a41086a290300370300200241d0006a41106a2205200241206a41106a290300370300200220022f01043b010820022002290320370350024020034105470d0020004106360200200241b0016a24000f0b2002411c6a41026a220b20042d00003a000020024180016a41086a2204200729030037030020024180016a41106a22072005290300370300200220022f01083b011c2002200229035037038001200041086a20033a0000200041043602002000410c6a2001360000200041106a2009370000200020022f011c3b00092000410b6a200b2d00003a0000200041186a200229038001370000200041206a2004290300370000200041286a2007290300370000200241b0016a24000f0b200041033602002000410c6a2002290250370200200041146a200241d8006a2902003702002000411c6a200241e0006a290200370200200041246a200241e8006a2902003702002000412c6a200241f0006a28020036020020002003ad422086200141ff0171ad42088684200984370204200241b0016a24000be60201047f230041206b22022400200241003602082002420137030020024100412010272002280200200228020822036a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002002200341206a2204360208200220044120102720022802002203200228020822056a22042001290020370000200441086a200141286a290000370000200441106a200141306a290000370000200441186a200141386a2900003700002002200541206a220136020802402001417f4c0d00024002402001450d002001100122040d01101c000b410121040b200220013602142002200436021020024100360218200241106a41002001102720022002280218220420016a360218200420022802106a20032001101e1a200041086a20022802183602002000200229031037020002402002280204450d00200310020b200241206a24000f0b1019000be70101037f0240024002402000280200220128020022024103460d0020020d0220012802042202450d0220024101470d012001410c6a280200450d02200141086a2802001002200028020010020f0b20012d00044101470d01200141086a10bf01200028020010020f0b0240200141106a2802002203450d00200141086a2802002102200341186c210303400240200241046a280200450d00200228020010020b0240200241106a280200450d002002410c6a28020010020b200241186a2102200341686a22030d000b0b2001410c6a280200450d00200141086a28020010020b200028020010020be00302057f017e230041206b220124000240410710012202450d002001200236021020014207370214200141106a4100410710272001280210200128021822036a220241002800d92e360000200141086a200341076a2203360200200241046a41002f00dd2e3b0000200241066a41002d00df2e3a00002001200129031037030020012003360218412010012202450d002001200236021020014220370214200141106a41004120102720012802102203200128021822046a22022000290000370000200241086a200041086a290000370000200241106a200041106a290000370000200241186a200041186a2900003700002001200441206a220036021820012802142104200120012802082000102720012802002202200128020822056a20032000101e1a2001200520006a220036020802402004450d00200310020b2001280204210342002106200141106a41086a220442003703002001420037031020022000200141106a1003200141086a200429030037030020012001290310370300024002402001411041d02d410041001000417f460d002001420037031020014110200141106a41084100100041016a41084d0d01200129031021060b02402003450d00200210020b200141206a240020060f0b41c1214133102d000b101c000bd14b05067f017e057f047e047f230041a0076b22022400024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d00002203417f6a220441054b0d0002400240024002400240024020040e06000402030105000b200241f8006a41086a22042000410a6a290000370300200241f8006a41106a2205200041126a290000370300200241f8006a41186a22062000411a6a2900003703002002200041026a29000037037820002d0001450d21200241d8036a41186a2006290300370300200241d8036a41106a2005290300370300200241d8036a41086a2004290300370300200220022903783703d803410810012204450d43200220043602582002420837025c200241d8006a4100410810272002280258200228026022046a42f3cacdd3e38d9eba3a3700002002200441086a360260200241206a41086a200228026036020020022002290358370320412010012204450d43200220043602582002422037025c200241d8006a41004120102720022802582205200228026022066a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002002200641206a2201360260200228025c2106200241206a20022802282001102720022802202204200228022822076a20052001101e1a2002200720016a220136022802402006450d00200510020b20022802242105200241d8006a41086a220642003703002002420037035820042001200241d8006a1003200241c0006a41086a200629030037030020022002290358370340200241c0006a4110200241d8036a412010042005450d38200410020c380b200241d8036a41286a200041306a290300370300200241d8036a41206a200041286a290300370300200241d8036a41186a200041206a290300370300200241d8036a41106a200041186a290300370300200241d8036a41086a200041106a2903003703002002200041086a2903003703d803200241d8036a200110ae0141002101410121040c400b200041086a2903004200510d20200041106a2903002108200241f0036a4200370300200241d8036a41106a4200370300200241d8036a41086a4200370300200242003703d8030240200241d8036a2001460d002001200241d8036a412010060d270b200241d8006a41086a220142003703002002420037035841ad0b4107200241d8006a1003200241c0006a41086a2204200129030037030020022002290358370340200241c0006a411020024190076a410041001000417f470d21200142003703002002420037035841ed2d4107200241d8006a10032004200129030037030020022002290358370340200241c0006a411041d02d410041001000417f460d22200241003602d803200241c0006a4110200241d8036a41044100100041016a41044d0d1a20022802d8030d23200220083703d803200241d8006a41086a220142003703002002420037035841a90c4107200241d8006a1003200241c0006a41086a2205200129030037030020022002290358370340200241c0006a4110200241d8036a4108100441012104200241013a00d803200142003703002002420037035841ad0b4107200241d8006a10032005200129030037030020022002290358370340200241c0006a4110200241d8036a410110040c370b200241086a2205200041106a2903003703002002200041086a29030037030020022d000022044103714101460d0520044102460d0320044103470d2320022d0001210920022802042105410810012206450d40200220063602d803200242083702dc03200241d8036a41004108102720022802d80320022802e00322066a42e4cab5d383cedcb73a3700002002200641086a3602e003200241f8006a41086a20022802e003360200200220022903d803370378410410012206450d40200220063602d803200242043702dc03200241d8036a41004104102720022802d803220720022802e00322066a20053600002002200641046a22063602e00320022802dc03210a200241f8006a200228028001200610272002280278220b200228028001220c6a20072006101e1a2002200c20066a2206360280010240200a450d00200710020b200228027c2107200241d8006a41086a220a420037030020024200370358200b2006200241d8006a1003200241c0006a41086a200a29030037030020022002290358370340200241c0006a411020024190076a410041001000210602402007450d00200b10020b2006417f460d2620011043210820011044420020087d510d27200241e4036a200141086a290000370200200241ec036a200141106a290000370200200241f4036a200141186a290000370200200220053602d803200220012900003702dc03410810012206450d40200220063602782002420837027c200241f8006a410041081027200228027820022802800122066a42e4cab5d3e3ee9bba3a3700002002200641086a36028001200241d8006a41086a220620022802800136020020022002290378370358200241f8006a200241d8036a1045200228027c210c2002280278210b200241d8006a2006280200200228028001220710272002280258220a2006280200220d6a200b2007101e1a2006200d20076a22073602000240200c450d00200b10020b200228025c2106200241d8006a41086a220b420037030020024200370358200a2007200241d8006a1003200241c0006a41086a200b29030037030020022002290358370340200241c0006a411020024190076a410041001000210702402006450d00200a10020b2007417f470d3a20024190076a20051042200241d8036a41186a2207200141186a290000370300200241d8036a41106a220b200141106a290000370300200241d8036a41086a220a200141086a290000370300200220012900003703d8032002280298072206200228029407460d170c390b200241086a2204200041116a290000370300200241106a2205200041196a290000370300200241186a2206200041216a2900003703002002200041096a290000370300200041086a2d000041037122034101460d0520034103460d0320034102470d23200241d8006a41086a220342003703002002420037035841d61d4108200241d8006a1003200241c0006a41086a200329030037030020022002290358370340200241c0006a411041d02d410041001000417f460d122002421037027c2002200241c0006a360278200241d8036a200241f8006a103a20022802d8032206450d27200220022902dc0322083702242002200636022020062008422088a7220741057422036a210520034105754104490d06200621040340200120042203460d182003200141201006450d18200341206a22042001460d182004200141201006450d18200441206a22042001460d182004200141201006450d18200441206a22042001460d182004200141201006450d182005200441206a22046b41057541034b0d000b20034180016a22032005470d070c080b200241f8036a200041246a280200360200200241f0036a2000411c6a290200370300200241e8036a200041146a290200370300200241e0036a2000410c6a2902003703002002200041046a2902003703d803200241d8036a200110db014100210541012104410121010c3d0b200041106a2d00004102470d32419cc200103b000b200241d8036a20022802042205103720022802e003450d25200241d8006a41106a2206200241d8036a41106a290300370300200241d8006a41086a200241d8036a41086a290300370300200220022903d8033703582001200229035810b201450d26200241f8006a41186a2207200141186a290000370300200241f8006a41106a200141106a290000370300200241f8006a41086a200141086a2900003703002002200129000037037820062802002201200241e4006a280200460d110c340b200241d8006a41086a220342003703002002420037035841d61d4108200241d8006a1003200241c0006a41086a2003290300370300200220022903583703404100210b200241c0006a411041d02d410041001000417f460d052002421037027c2002200241c0006a360278200241d8036a200241f8006a103a20022802d8032205450d2c2005200241e0036a280200220941057422036a210720022802dc03210b20034105754104490d0620052106410021030340200120062204460d0a2003200420014120100622064100476a21032006450d0a200441206a22062001460d0a20032006200141201006220a4100476a2103200a450d0a200641206a22062001460d0a20032006200141201006220a4100476a2103200a450d0a200641206a22062001460d0a20032006200141201006220a4100476a2103200a450d0a2007200641206a22066b41057541034b0d000b20044180016a22042007470d070c080b20052903002108200220022802042206360220200241d8006a41086a220442003703002002420037035841a2294107200241d8006a1003200241c0006a41086a200429030037030020022002290358370340200241c0006a411041d02d410041001000417f460d25200242003703d803200241c0006a4110200241d8036a41084100100041016a41084d0d1420022903d8032008560d262001200810b201450d27200241d8006a41086a220442003703002002420037035841a9294107200241d8006a1003200241c0006a41086a200429030037030020022002290358370340410021050240200241c0006a411041d02d410041001000417f460d00200241003602d803200241c0006a4110200241d8036a41044100100041016a41044d0d1820022802d80321050b2002200541016a3602d803200241d8006a41086a220442003703002002420037035841a9294107200241d8006a1003200241c0006a41086a200429030037030020022002290358370340200241c0006a4110200241d8036a41041004412010012204450d3a200241e4036a428180808010370200200141086a2207290000210e200141106a220b290000210f20012900002110200441186a200141186a220a290000370000200441106a200f370000200441086a200e37000020042010370000200220083703d803200220043602e0032005200241d8036a10df01200241d8006a1036200241d8036a200610e001200241f8006a41186a2206200a290000370300200241f8006a41106a200b290000370300200241f8006a41086a20072900003703002002200129000037037820022802602204200228025c460d100c310b200041306a2903002108200241206a41186a2006290300370300200241206a41106a2005290300370300200241206a41086a20042903003703002002200229030037032041d02d200110c60122112008540d2741d02d200241206a10c601210e410810012203450d39200220033602d803200242083702dc03200241d8036a41004108102720022802d80320022802e00322036a42f3e885d3a3ec9bb73a3700002002200341086a3602e003200241f8006a41086a20022802e003360200200220022903d803370378412010012203450d39200220033602d803200242203702dc03200241d8036a41004120102720022802d803220420022802e00322056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a22033602e00320022802dc032106200241f8006a200228028001200310272002280278220520022802800122076a20042003101e1a2002200720036a22033602800102402006450d00200410020b200228027c21044200210f200241d8006a41086a220642003703002002420037035820052003200241d8006a1003200241c0006a41086a2006290300370300200220022903583703400240200241c0006a411041d02d410041001000417f460d00200242003703d803200241c0006a4110200241d8036a41084100100041016a41084d0d1520022903d803210f0b02402004450d00200510020b410810012203450d39200220033602d803200242083702dc03200241d8036a41004108102720022802d80320022802e00322036a42f3e885d3a3ec9bb73a3700002002200341086a3602e003200241f8006a41086a20022802e003360200200220022903d803370378412010012203450d39200220033602d803200242203702dc03200241d8036a41004120102720022802d803220420022802e00322056a22032002290320370000200341086a200241206a41086a290300370000200341106a200241206a41106a290300370000200341186a200241206a41186a2903003700002002200541206a22033602e00320022802dc032106200241f8006a200228028001200310272002280278220520022802800122076a20042003101e1a2002200720036a22033602800102402006450d00200410020b200228027c210442002110200241d8006a41086a220642003703002002420037035820052003200241d8006a1003200241c0006a41086a2006290300370300200220022903583703400240200241c0006a411041d02d410041001000417f460d00200242003703d803200241c0006a4110200241d8036a41084100100041016a41084d0d1620022903d80321100b02402004450d00200510020b200f2010560d28200e20087c220f200e580d2941a00610012203450d392003200241d8036a41b803101e220341003b01be03200341003602b803200341c0036a200241f8006a41e002101e1a200241c8006a4200370300200241d4006a41d43c3602002002200336024420024100360240200241d02d360250200241206a2001460d0b2001200241206a41201006450d0b2002417f360240200241d8036a41186a2207200141186a290000370300200241d8036a41106a220b200141106a290000370300200241d8036a41086a220a200141086a290000370300200220012900003703d8032002200241c0006a41047222043602602002200241c0006a41086a2802003602582002200228024436025c200241f8006a200241d8006a200241d8036a10970141012103200241f8006a41106a2802002105200241f8006a410c6a2802002109200241f8006a41086a2802002106200228027c210c024020022802784101470d00200241d8006a41186a2007290300370300200241d8006a41106a200b290300370300200241d8006a41086a200a290300370300200220022903d803370358410021030b41900210012201450d39201120087d21082001200241d8036a418802101e220141003b018e0220014100360288022003450d09200220013602782002420037027c2006200541286c6a2101200241d8036a200241f8006a109801200241d8036a1099010c0a0b200622032005460d010b200620074105746a2104034020012003460d102003200141201006450d102004200341206a2203470d000b0b200241d8036a41186a200141186a290000370300200241d8036a41106a200141106a290000370300200241d8036a41086a200141086a290000370300200220012900003703d803200241d8036a210320072008a7460d0a0c290b41012105410021094100210341000d270c040b41002103200522042007460d010b034020012004460d022003200420014120100622064100476a21032006450d022007200441206a2204470d000b0b4100450d010c240b41010d230b41dc3b103b000b200241f4036a200241e0006a290300370200200241fc036a200241e8006a29030037020020024184046a200241f0006a290300370200200220063602dc032002200c3602d803200220093602e003200220053602e4032002200241c0006a410c6a3602e803200220022903583702ec0320024198016a42003703002002410036028801200242003703782002200136029401200241d8036a200241f8006a109a0121010b20014201370300200120083703082002417f360240200241d8036a41186a2201200241206a41186a290300370300200241d8036a41106a2206200241206a41106a290300370300200241d8036a41086a2207200241206a41086a290300370300200220022903203703d803200220043602602002200241c0006a41086a2802003602582002200228024436025c200241f8006a200241d8006a200241d8036a10970141012103200241f8006a41106a2802002104200241f8006a410c6a280200210b200241f8006a41086a2802002105200228027c210a024020022802784101470d00200241d8006a41186a2001290300370300200241d8006a41106a2006290300370300200241d8006a41086a2007290300370300200220022903d803370358410021030b41900210012201450d2e2001200241d8036a418802101e220141003b018e022001410036028802024002402003450d00200220013602782002420037027c2005200441286c6a2101200241d8036a200241f8006a109801200241d8036a1099010c010b200241f4036a200241e0006a290300370200200241fc036a200241e8006a29030037020020024184046a200241f0006a290300370200200220053602dc032002200a3602d8032002200b3602e003200220043602e4032002200241c0006a410c6a3602e803200220022903583702ec0320024198016a42003703002002410036028801200242003703782002200136029401200241d8036a200241f8006a109a0121010b200142013703002001200f370308200241003602400b200241d8036a200241c0006a200241206a109b010240024020022802e0032201450d0020022802d80322032001200241206a200241c0006a108e01450d010b200241c8006a290300210820022802442101024020022802dc03450d0020022802d80310020b2001450d22200220083702dc03200220013602d80320024190076a200241d8036a10c7010c220b200241c0006a4104722101024020022802dc03450d00200310020b200241f8006a41086a200141086a28020036020020022001290200370378200241d8036a200241f8006a109d01200241d8036a109e010c210b2002410036022820024201370320200241d8036a41186a200141186a290000370300200241d8036a41106a200141106a290000370300200241d8036a41086a200141086a290000370300200220012900003703d803200241d8036a21030b200241206a107c200241286a2802002107200228022021060c1e0b200241e0006a107c200241e8006a28020021010c220b200241d8006a1074200241e0006a28020021040c200b20024190076a107c20024190076a41086a28020021060c210b41c43b103b000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b41c1214133102d000b418431103b000b41dc32103b000b418c33103b000b41f4214122102d000b41a433103b000b419cc000103b000b41f43b103b000b41f432103b000b41fcc000103b000b4194c100103b000b41c1214133102d000b41b0294124102d000b41e4c000103b000b41f4214122102d000b41b4c000103b000b41ccc000103b000b418c3c103b000b41a43c103b000b41bc3c103b000b41c1214133102d000b200241d8036a41186a2206200520034105746a220341186a2207290000370300200241d8036a41106a220a200341106a220c290000370300200241d8036a41086a220d200341086a2212290000370300200220032900003703d80320052009417f6a22094105746a22042900002108200441086a2213290000210e200441106a2214290000210f2007200441186a2215290000370000200c200f3700002012200e37000020032008370000200420022903d8033700002013200d2903003700002014200a290300370000201520062903003700002002200b36027c200220053602782002200936028001200241d8036a200241f8006a10a20120022802e003210420022802d8032103200241d8006a41086a220642003703002002420037035841d61d4108200241d8006a1003200241c0006a41086a200629030037030020022002290358370340200241c0006a4110200320041004024020022802dc03450d00200310020b0240200b450d00200510020b200241d8006a41086a220342003703002002420037035841c81d4107200241d8006a1003200241c0006a41086a20032903003703002002200229035837034002400240200241c0006a411041d02d410041001000417f460d00200242003703d80302400240200241c0006a4110200241d8036a41084100100041016a41084d0d0020022903d8032108200241d8006a41086a220342003703002002420037035841d21e4107200241d8006a1003200241c0006a41086a200329030037030020022002290358370340200241c0006a411041d02d410041001000417f460d03200242003703d803200241c0006a4110200241d8036a41084100100041016a41084d0d01200120022903d80320087c10c5010c050b41c1214133102d000b41c1214133102d000b41f4214122102d000b41f4214122102d000b200341086a2900002108200341106a290000210e200341186a290000210f200620074105746a22042003290000370000200441186a200f370000200441106a200e370000200441086a2008370000200241206a41086a2203200741016a360200200241f8006a41086a200328020036020020022002290320370378200241d8036a200241f8006a10a20120022802e003210420022802d8032103200241d8006a41086a220542003703002002420037035841d61d4108200241d8006a1003200241c0006a41086a200529030037030020022002290358370340200241c0006a4110200320041004024020022802dc03450d00200310020b0240200228027c450d00200228027810020b2001427f10c5010b20002d000021030b410121040b410121010c070b2002280258200441d8006c6a220120022903d8033703002001200536023020012002290378370234200141086a200241d8036a41086a2205290300370300200141106a200241d8036a41106a290300370300200141186a200241d8036a41186a290300370300200141206a200241d8036a41206a290300370300200141286a200241d8036a41286a2903003703002001413c6a200241f8006a41086a290300370200200141c4006a200241f8006a41106a290300370200200141cc006a2006290300370200200241d8006a41086a2201200441016a36020020052001280200360200200220022903583703d803200241d8036a103e20022802d8032106024020052802002201450d00200141d8006c210420062101034020011038200141d8006a2101200441a87f6a22040d000b0b024020022802dc03450d00200610020b200241206a10220c050b200241d8006a41106a2206200141016a360200200241d8006a41086a220b28020020014105746a22012002290378370000200141086a200241f8006a41086a290300370000200141106a200241f8006a41106a290300370000200141186a2007290300370000200241d8036a41106a2006290300370300200241d8036a41086a200b290300370300200220022903583703d8032005200241d8036a10df010c020b20024190076a41086a220c200641016a360200200a2903002108200b290300210e2007290300210f20022802900720064105746a220620022903d803370000200641186a200f370000200641106a200e370000200641086a2008370000200241206a41086a200c2802003602002002200229039007370320410810012206450d06200220063602d803200242083702dc03200241d8036a41004108102720022802d80320022802e00322066a42e4cab5d3e38e9db93a3700002002200641086a3602e003200241f8006a41086a20022802e003360200200220022903d803370378410410012206450d06200220063602d803200242043702dc03200241d8036a41004104102720022802d803220720022802e00322066a20053600002002200641046a22063602e00320022802dc03210a200241f8006a200228028001200610272002280278220b200228028001220c6a20072006101e1a2002200c20066a220c360280010240200a450d00200710020b200228027c2107200241d8036a200241206a10a20120022802e003210a20022802d8032106200241d8006a41086a220d420037030020024200370358200b200c200241d8006a1003200241c0006a41086a200d29030037030020022002290358370340200241c0006a41102006200a1004024020022802dc03450d00200610020b02402007450d00200b10020b2002280224450d00200228022010020b200241e4036a200141086a290000370200200241ec036a200141106a290000370200200241f4036a200141186a290000370200200220053602d803200220012900003702dc03200220093a0020410810012201450d05200220013602782002420837027c200241f8006a410041081027200228027820022802800122016a42e4cab5d3e3ee9bba3a3700002002200141086a36028001200241d8006a41086a220120022802800136020020022002290378370358200241f8006a200241d8036a1045200228027c210b20022802782106200241d8006a200128020020022802800122051027200228025822072001280200220a6a20062005101e1a2001200a20056a22053602000240200b450d00200610020b200228025c2101200241d8006a41086a220642003703002002420037035820072005200241d8006a1003200241c0006a41086a200629030037030020022002290358370340200241c0006a4110200241206a410110042001450d002007100220044101460d010c020b20044101470d010b200241047210220b41012101410021040b410121050b2003411d74411d75417f4a0d0102400240200341077122034104460d0020034105470d012001450d03200041086a2d00004101470d03200041106a280200450d032000410c6a2802001002200241a0076a24000f0b2004450d02200041086a2d00004101470d022000410c6a104b200241a0076a24000f0b2005450d01200041046a2d00004101470d01200041086a104b200241a0076a24000f0b101c000b200241a0076a24000b080041ec3a1054000b080041ec3a1054000bfe2507097f027e0a7f027e067f017e0d7f230041d0026b220424000240024020014115490d0041012105410121060240024002400340200620057121070340024002402003450d0020054101710d012000200110e1012003417f6a21030c010b2000200110e201200441d0026a24000f0b2001410276220641036c2108200641017421094100210a024020014132490d0020082008417f6a220b2000200841286c6a220c41586a290300220d200c290300220e54220a1b220f200841016a200b2008200a1b200d200e200a1b220d200c41286a290300220e5422101b2000200f41286c6a290300200e200d20101b5422111b210820092009417f6a220c2000200941286c6a220b41586a290300220d200b290300220e54220b1b22122009410172220f200c2009200b1b200d200e200b1b220d2000200f41286c6a290300220e54220f1b2000201241286c6a290300200e200d200f1b5422131b210920062006417f6a22142000200641286c6a221241586a290300220d2012290300220e54220c1b2215200641016a20142006200c1b200d200e200c1b220d201241286a290300220e5422121b2000201541286c6a290300200e200d20121b5422141b210641024101200c1b200c20121b20146a200b6a200f6a20136a200a6a20106a20116a210a0b200a2000200641286c6a290300220d2000200941286c6a290300220e54220c6a200d200e200c1b220d2000200841286c6a290300220e54220b6a210a0240024002400240200020092006200c1b221641286c6a290300200e200d200b1b5a0d00200a41016a220a410b4b0d012007200a45714101470d030c020b200820062009200c1b200b1b21162007200a45714101470d020c010b2001417f6a2117024020014101762208450d002000200141286c6a41586a2106200021090340200441a8016a41206a220c200941206a220a290300370300200441a8016a41186a220b200941186a2210290300370300200441a8016a41106a220f200941106a2212290300370300200441a8016a41086a2211200941086a2213290300370300200420092903003703a801200641086a2214290300210d200641106a2215290300210e200641186a221829030021192006290300211a200a200641206a221b290300370300201020193703002012200e3703002013200d3703002009201a370300201b200c2903003703002018200b2903003703002015200f29030037030020142011290300370300200620042903a801370300200941286a2109200641586a21062008417f6a22080d000b0b201720166b211620074101714101470d010b2000200110e3010d070b024002400240024002402002450d00201620014f0d092000201641286c6a22062903002002290300540d00200441a8016a41206a220a200041206a2212290300370300200441a8016a41186a220b200041186a2211290300370300200441a8016a41106a2210200041106a2213290300370300200441a8016a41086a220f200041086a2209290300370300200420002903003703a801200641086a2208290300210d200641106a220c290300210e200641186a221429030021192006290300211a2012200641206a2215290300370300201120193703002013200e3703002009200d3703002000201a3703002015200a2903003703002014200b290300370300200c20102903003703002008200f290300370300200620042903a8013703002000290300210d200441086a41186a221c2012290300370300200441086a41106a221d2011290300370300200441086a41086a221e201329030037030020042009290300370308200041286a21144100210841002001417f6a22094f0d010c020b201620014f0d07200441a8016a41206a2224200041206a2205290300370300200441a8016a41186a2225200041186a2226290300370300200441a8016a41106a2227200041106a2228290300370300200441a8016a41086a2229200041086a222a290300370300200420002903003703a8012000201641286c6a2206290300210d200641086a2209290300210e200641106a22082903002119200641186a220c290300211a2005200641206a220a2903003703002026201a37030020282019370300202a200e3703002000200d370300200a2024290300370300200c20252903003703002008202729030037030020092029290300370300200620042903a8013703002000290300210d200441086a41186a222b2005290300370300200441086a41106a222c2026290300370300200441086a41086a222d20282903003703002004202a2903003703082001417f6a210941002120200041286a2208210602400340200d20062903005a0d01200641286a2106202041016a22202009490d000b0b200921070240200920204d0d002000200141286c6a41586a2106200921070340200d2006290300540d01200641586a21062007417f6a220720204b0d000b0b20072020490d0620092007490d032008200741286c6a210b41800121164100210a410021154100210c4100211441800121172008202041286c6a222e21180340200b20186b220641286e21090240024002400240024002400240200641a7d0004b221f0d00200941807f6a20092015200a492014200c4922087222101b21062010450d012017200620081b21172006201620081b21160b2014200c470d020c010b2006200641017622176b21162014200c470d010b2017450d0141002106200441286a2214210c201821090340200c20063a0000200c200d20092903005a6a210c200941286a2109200641016a22062017490d000b0b2015200a470d020c010b200441286a220c21142015200a470d010b02402016450d00200b41586a210641002109200441a8016a2215210a0340200a20093a0000200a200d2006290300546a210a200641586a2106200941016a22092016490d000c020b0b200441a8016a220a21150b0240200a20156b2206200c20146b2209200920064b1b221b450d00200441a8026a41206a2222201820142d000041286c6a220641206a290300370300200441a8026a41186a221c200641186a290300370300200441a8026a41106a221d200641106a290300370300200441a8026a41086a221e200641086a290300370300200420062903003703a802201820142d000041286c6a2206200b20152d00002210417f7341286c6a2209290300370300200641206a200941206a290300370300200641186a200941186a290300370300200641106a200941106a290300370300200641086a200941086a2903003703000240201b4101460d00410021080340200b2010417f7341807e7241286c6a22092018201420086a41016a2d000041286c6a2206290300370300200941206a200641206a220f290300370300200941186a200641186a2212290300370300200941106a200641106a2211290300370300200941086a200641086a22132903003703002006200b201520086a41016a2d00002210417f7341286c6a2209290300370300200f200941206a2903003703002012200941186a2903003703002011200941106a2903003703002013200941086a290300370300200841026a2106200841016a220f21082006201b490d000b2015200f6a21152014200f6a21140b200920042903a802370300200941206a2022290300370300200941186a201c290300370300200941106a201d290300370300200941086a201e290300370300201541016a2115201441016a21140b2018201741286c6a20182014200c461b2118200b410020166b41286c6a200b2015200a461b210b201f0d000b024002402014200c4f0d00200b41586a2106200c21080340200441a8026a41206a220a20182008417f6a22082d000041286c6a220941206a2210290300370300200441a8026a41186a220f200941186a2212290300370300200441a8026a41106a2211200941106a2213290300370300200441a8026a41086a2215200941086a221b290300370300200420092903003703a802200641086a2216290300210e200641106a22172903002119200641186a221f290300211a200629030021212010200641206a22222903003703002012201a37030020132019370300201b200e370300200920213703002022200a290300370300201f200f2903003703002017201129030037030020162015290300370300200620042903a802370300200641586a210620142008490d000b200b2014200c6b41286c6a21180c010b20182106200a21082015200a4f0d0003402008417f6a22082d00002109200441a8026a41206a220c200641206a2210290300370300200441a8026a41186a220f200641186a2212290300370300200441a8026a41106a2211200641106a2213290300370300200441a8026a41086a2214200641086a221b290300370300200420062903003703a802200b2009417f7341286c6a2209290300210e200941086a22162903002119200941106a2217290300211a200941186a221f29030021212010200941206a2222290300370300201220213703002013201a370300201b20193703002006200e3703002022200c290300370300201f200f2903003703002017201129030037030020162014290300370300200920042903a802370300200641286a210620152008490d000b2018200a20156b41286c6a21180b2000200d3703002005202b2903003703002026202c2903003703002028202d290300370300200020042903083703080240024020012018202e6b41286e20206a22094d0d002024200529030037030020252026290300370300202720282903003703002029202a290300370300200420002903003703a8012000200941286c6a2206290300210d200641086a2208290300210e200641106a220c2903002119200641186a220a290300211a2005200641206a220b2903003703002026201a37030020282019370300202a200e3703002000200d370300200b2024290300370300200a2025290300370300200c202729030037030020082029290300370300200620042903a801370300200120096b2208450d0120082009200920084b1b210c2001410376210a200641286a210b0240024020092008417f6a22014f0d00200020092002200310c40120062102200b21000c010b200b20012006200310c401200921010b200c200a4f2105200720204d2106200141154f0d070c0b0b41b4c20020092001103c000b41c4c200103b000b410021230c010b410621230b03400240024002400240024002400240024002400240024002400240024002400240024020230e0a04080905060001020307070b200a2014200841286c6a220c41206a2215290300370300200b200c41186a22182903003703002010200c41106a221b290300370300200f200c41086a22162903003703002004200c2903003703a801200641086a2217290300210e200641106a221f2903002119200641186a2220290300211a200629030021212015200641206a22222903003703002018201a370300201b20193703002016200e370300200c20213703002022200a2903003703002020200b290300370300201f20102903003703002017200f290300370300200620042903a801370300200841016a22082009417f6a22094f0d0d410621230c100b2014200841286c6a2106410721230c0f0b2006290300200d540d0a410821230c0e0b200641286a2106200841016a22082009490d08410021230c0d0b200820094f0d06410321230c0c0b2000200941286c6a2106410421230c0b0b2006290300200d5a0d09410921230c0a0b200641586a210620082009417f6a2209490d07410121230c090b2000200d3703002012201c2903003703002011201d2903003703002013201e290300370300200020042903083703082001200841016a2206490d01410221230c080b2000200641286c6a2100200120066b220141154f0d090c0e0b200620011055000b410121230c050b410721230c040b410021230c030b410021230c020b410421230c010b410521230c000b0b0b0b200720091029000b202020071055000b41b4c20020162001103c000b41dcc20020162001103c000b20014102490d002000210a410121090340200941016a210c02402000200941286c6a220641586a22082903002006290300220d5a0d00200441086a41186a2210200641206a220b290300370300200441086a41106a220f200641186a2212290300370300200441086a41086a2211200641106a22132903003703002004200629030837030820062008290300370300200641086a200841086a2903003703002013200841106a2903003703002012200841186a290300370300200b200841206a2903003703004100210b0240024002402009417f6a2208450d00200a21060340200641586a2209290300200d5a0d02200641206a200641786a290300370300200641186a200641706a290300370300200641106a200641686a290300370300200641086a200641606a29030037030020062009290300370300200921062008417f6a22080d000b200921060c020b2000200841286c6a21060c010b2008210b0b2006200d3703002000200b41286c6a22062004290308370308200641206a2010290300370300200641186a200f290300370300200641106a20112903003703000b200a41286a210a200c2109200c2001490d000b0b200441d0026a24000b9a0301057f230041306b220224000240410810012203450d002002200336022020024208370224200241206a4100410810272002280220200228022822036a42f3e885d3a3ec9bb73a3700002002200341086a360228200241106a41086a200228022836020020022002290320370310412010012203450d002002200336022020024220370224200241206a41004120102720022802202204200228022822056a22032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a2900003700002002200541206a220036022820022802242105200241106a20022802182000102720022802102203200228021822066a20042000101e1a2002200620006a220036021802402005450d00200410020b2002280214210420022001370308200241206a41086a220542003703002002420037032020032000200241206a1003200241106a41086a200529030037030020022002290320370310200241106a4110200241086a4108100402402004450d00200310020b200241306a24000f0b101c000bc70302057f017e230041206b220224000240410810012203450d002002200336021020024208370214200241106a4100410810272002280210200228021822036a42f3e885d3a3ac98b63a3700002002200341086a360218200241086a200228021836020020022002290310370300412010012203450d002002200336021020024220370214200241106a41004120102720022802102204200228021822056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a220136021820022802142105200220022802082001102720022802002203200228020822066a20042001101e1a2002200620016a220136020802402005450d00200410020b2002280204210442002107200241106a41086a220542003703002002420037031020032001200241106a1003200241086a200529030037030020022002290310370300024002402002411041d02d410041001000417f460d002002420037031020024110200241106a41084100100041016a41084d0d01200229031021070b02402004450d00200310020b200241206a240020070f0b41c1214133102d000b101c000ba11105027f017e0e7f017e0b7f230041b0036b2202240020024188016a41086a2203200141086a2802003602002002200129020037038801200241086a20024188016a109d01200241306a41206a200241086a41206a280200360200200241306a41186a200241086a41186a290300370300200241306a41106a200241086a41106a290300370300200241306a41086a200241086a41086a2903003703002002200229030837033020024188016a200241306a10c8010240024020022903a80122044202510d00200241f0016a4104722105200241c0016a210620024188016a41206a2107200241b0016a2108200241b8016a2109200241bc016a210a20024194016a210b2002419c016a210c200241ac016a210d0340200241e8006a41186a220120024188016a41186a220e290300370300200241e8006a41106a220f20024188016a41106a2210290300370300200241e8006a41086a22112003290300370300200241d8006a41086a2212200641086a2903003703002002200229038801370368200220062903003703582008290300211320092802002114200a2802002115200241d0016a41186a22162001290300370300200241d0016a41106a2217200f290300370300200241d0016a41086a22182011290300370300200220022903683703d001200241f0016a41086a2012290300370300200220022903583703f001024020044201520d00410810012201450d0320022001360288012002420837028c0120024188016a41004108102720032003280200220141086a36020020012002280288016a42f3e885d3a3ac98b63a370000200241a8026a41086a2201200328020036020020022002290388013703a80241201001220f450d032002200f360288012002422037028c0120024188016a41004120102720032003280200221141206a220f360200201120022802880122126a221120022903d001370000201141086a2018290300370000201141106a2017290300370000201141186a2016290300370000200228028c012119200241a8026a2001280200200f102720022802a80222112001280200221a6a2012200f101e1a2001201a200f6a220f36020002402019450d00201210020b20022802ac022101200220133703880120024190036a41086a2212420037030020024200370390032011200f20024190036a100320024180036a41086a201229030037030020022002290390033703800320024180036a411020024188016a410810042001450d00201110020b024002402014450d00200320022802f0013602002002201536028c012002201436028801200241d0016a20024188016a10c9014101211b2015450d01201410020c010b4100211b0b2003200541086a280200360200200220052902003703880120024180026a20024188016a109801200241a8026a41206a20024180026a41206a280200360200200241a8026a41186a20024180026a41186a290300370300200241a8026a41106a20024180026a41106a290300370300200241a8026a41086a20024180026a41086a29030037030020022002290380023703a80220024188016a200241a8026a10ca010240200228028801450d000340200241d0026a41086a2201200328020036020020022002290388013703d002200b280200211120102802002112200c2802002119200241e0026a41086a220f2001280200360200200220022903d0023703e002024002402011450d00200241f0026a41086a2019360200200220123602f402200220113602f002200e20162903003703002010201729030037030020032018290300370300200720022903e002370200200741086a200f280200360200200220022903d00137038801410810012201450d062002200136029003200242083702940320024190036a41004108102720024190036a41086a22012001280200220f41086a360200200f2002280290036a42f3e885d3b38eddb73a37000020024180036a41086a220f200128020036020020022002290390033703800320024190036a20024188016a10cb01200228029403211c200228029003211a20024180036a200f280200200128020022191027200228028003221d200f280200221e6a201a2019101e1a200f201e20196a221e3602000240201c450d00201a10020b200228028403211a200241a0036a200241f0026a1051200241a0036a41086a280200211c20022802a0032119200142003703002002420037039003201d201e20024190036a1003200f200129030037030020022002290390033703800320024180036a41102019201c1004024020022802a403450d00201910020b0240201a450d00201d10020b0240200d280200450d00200728020010020b2012450d01201110020c010b200720022903e002370200200e20162903003703002010201729030037030020032018290300370300200741086a200f280200360200200220022903d00137038801410810012201450d052002200136029003200242083702940320024190036a41004108102720024190036a41086a22012001280200220f41086a360200200f2002280290036a42f3e885d3b38eddb73a37000020024180036a41086a220f200128020036020020022002290390033703800320024190036a20024188016a10cb01200228029403211a200228029003211220024180036a200f2802002001280200221110272002280280032219200f280200221d6a20122011101e1a200f201d20116a22113602000240201a450d00201210020b20022802840321122001420037030020024200370390032019201120024190036a1003200f200129030037030020022002290390033703800320024180036a4110100502402012450d00201910020b200d280200450d00200728020010020b20024188016a200241a8026a10ca012002280288010d000b0b200241a8026a1099010240201b201445720d002015450d00201410020b20024188016a200241306a10c801200729030022044202520d000b0b200241306a109e01200241b0036a24000f0b101c000bc10b03087f017e027f230041d0016b220224000240024020012802202203450d00200141206a2003417f6a36020020012802082104200128020c2203200128020422052f01be034f0d01200241306a41186a2206200520034105746a220741d8036a290000370300200241306a41106a2208200741d0036a290000370300200241306a41086a2209200741c8036a2900003703002002200741c0036a290000370330200141046a2005360200200141086a20043602002001410c6a200341016a360200200241d0006a41206a22072005200341286c6a220341206a290300370300200241d0006a41186a2205200341186a290300370300200241d0006a41106a2204200341106a290300370300200241d0006a41086a2201200341086a29030037030020022003290300370350200241f8006a41186a2006290300370300200241f8006a41106a2008290300370300200241f8006a41086a2009290300370300200241f8006a41286a2001290300370300200241a8016a2004290300370300200241b0016a2005290300370300200241b8016a20072903003703002002200229033037037820022002290350370398012000200241f8006a41c800101e1a200241d0016a24000f0b20004202370320200241d0016a24000f0b200128020021070240024020052802b8032203450d0020053201bc03210a2002200336027c2002200741016a22073602782002200a4220862004ad84220a370380010c010b2004ad210a410021030b20051002200241106a220820033602002002200736020c02400240200a422088a7220520032f01be034f0d00200241186a2005360200200241146a200a3e020020024100360208200241086a410472210b200241206a21070c010b200241146a2209200a37020020024101360208200aa72104200241086a410472210b200241186a210c2003210503400240024020032802b8032206450d00200741016a210720033201bc034220862004ad84210a200621030c010b2004ad210a410021030b024020051002200820033602002002200736020c0240200a422088a7220520032f01be034f0d00200c20053602002009200aa72204360200200241003602082003210541000d020c010b2009200a370200200aa72104200241013602082003210541010d010b0b200241206a21070b2007200b290200370200200741086a200b41086a290200370200200241306a41086a20022802242206200228022c22084105746a220341c8036a290000370300200241306a41106a200341d0036a290000370300200241306a41186a200341d8036a2900003703002002200341c0036a290000370330200241d0006a41206a2006200841286c6a220341206a290300370300200241d0006a41186a200341186a290300370300200241d0006a41106a200341106a290300370300200241d0006a41086a200341086a290300370300200220032903003703502007280200210920022802282105200241f8006a41086a2204200620084102746a41a4066a280200220736020020024184016a2206200536020020022009417f6a220336027c20022003410047360278024002402003450d002009417e6a2103200241f8006a41047221080340200420072802a0062207360200200620053602002002200336027c200220034100473602782003417f6a2203417f470d000c020b0b200241f8006a41047221080b200120082902003702002001410c6a4100360200200141086a200841086a280200360200200241f8006a41186a200241306a41186a290300370300200241f8006a41106a200241306a41106a290300370300200241f8006a41086a200241306a41086a290300370300200241a0016a200241d0006a41086a290300370300200241a8016a200241d0006a41106a290300370300200241b0016a200241d0006a41186a290300370300200241b8016a200241f0006a2903003703002002200229033037037820022002290350370398012000200241f8006a41c800101e1a200241d0016a24000bb30301057f230041306b220224000240410810012203450d002002200336022020024208370224200241206a4100410810272002280220200228022822036a42f3e885d3b3ec9bb23a3700002002200341086a360228200241106a41086a200228022836020020022002290320370310412010012203450d002002200336022020024220370224200241206a41004120102720022802202204200228022822056a22032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a2900003700002002200541206a220036022820022802242105200241106a20022802182000102720022802102203200228021822066a20042000101e1a2002200620006a220636021802402005450d00200410020b200228021421042002200110512002280208210120022802002100200241206a41086a220542003703002002420037032020032006200241206a1003200241106a41086a200529030037030020022002290320370310200241106a411020002001100402402002280204450d00200010020b02402004450d00200310020b200241306a24000f0b101c000bba0803057f017e057f230041f0006b220224000240024020012802202203450d00200141206a2003417f6a36020020012802082104200128020c2203200128020422052f018e024f0d01200141046a2005360200200141086a20043602002001410c6a200341016a360200200241086a220620052003410c6c6a220341086a28020036020020022003290200370300200241c8006a41086a22052006280200360200200241dc006a2003418c016a280200360200200020022903002207370200200220034184016a290200370254200041086a2005290300370200200041106a200241c8006a41106a29030037020020022007370348200241f0006a24000f0b20004100360200200241f0006a24000f0b20012802002106024002402005280288022203450d00200532018c0221072002200336024c2002200641016a2206360248200220074220862004ad8422073703500c010b2004ad2107410021030b20051002200241086a2208200336020020022006360204024002402007422088a7220520032f018e024f0d00200241106a20053602002002410c6a20073e02002002410036020020024104722109200241186a21060c010b2002410c6a220a2007370200200241013602002007a7210420024104722109200241106a210b20032105034002400240200328028802220c450d00200641016a2106200332018c024220862004ad842107200c21030c010b2004ad2107410021030b024020051002200820033602002002200636020402402007422088a7220520032f018e024f0d00200b2005360200200a2007a72204360200200241003602002003210541000d020c010b200a20073702002007a72104200241013602002003210541010d010b0b200241186a21060b20062009290200370200200641086a200941086a290200370200200241286a41086a200228021c220c2002280224220a410c6c6a220341086a28020036020020022003290200370328200241386a41086a2003418c016a280200360200200220034184016a2902003703382006280200210820022802202105200241c8006a41086a2204200c200a4102746a4194026a2802002206360200200241c8006a410c6a220c200536020020022008417f6a220336024c20022003410047360248024002402003450d002008417e6a2103200241c8006a4104722108034020042006280290022206360200200c20053602002002200336024c200220034100473602482003417f6a2203417f470d000c020b0b200241c8006a41047221080b200120082902003702002001410c6a4100360200200141086a200841086a280200360200200241c8006a41086a2203200241286a41086a280200360200200241dc006a200241386a41086a28020036020020002002290328220737020020022002290338370254200041086a2003290300370200200041106a200241c8006a41106a29030037020020022007370348200241f0006a24000bda0201057f230041206b22022400200241003602082002420137030020024100412010272002280200200228020822036a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002002200341206a2205360208200241106a200141206a1051200228021021032002200520022802182204102720022004200228020822066a22013602082006200228020022056a20032004101e1a02402002280214450d00200310020b02402001417f4c0d00024002402001450d002001100122040d01101c000b410121040b200220013602142002200436021020024100360218200241106a41002001102720022002280218220420016a360218200420022802106a20052001101e1a200041086a20022802183602002000200229031037020002402002280204450d00200510020b200241206a24000f0b1019000b02000be90502047f017e230041d0006b220524000240024002402004417f4c0d000240024002402004450d002004100122060d010c020b410121060b200520043602042005200636020020054100360208200541002004102720052005280208220620046a360208200620052802006a20032004101e1a200541c0006a41086a2204200528020836020020052005290300370340200541186a200241186a290000370300200541106a200241106a290000370300200541086a200241086a290000370300200541286a20042802003602002005200229000037030020052005290340370320410810012204450d002005200436024020054208370244200541c0006a4100410810272005280240200528024822046a42f3e885d3b38eddb73a3700002005200441086a360248200541306a41086a2204200528024836020020052005290340370330200541c0006a200510cb012005280244210720052802402103200541306a200428020020052802482202102720052802302206200428020022086a20032002101e1a2004200820026a220236020002402007450d00200310020b20052802342103200541c0006a41086a220442003703002005420037034020062002200541c0006a1003200541306a41086a20042903003703002005200529034037033002400240024002400240200541306a411041d02d410041001000417f460d00200541003602404100200541306a4110200541c0006a41044100100022042004417f461b220741034d0d0820052802402204417f4c0d062004450d01200410012202450d0520024100200410171a0c020b2000410036020020030d020c030b410121020b20044100200541306a4110200220042007410420074104491b100022072007417f461b4b0d042002450d0520002004ad2209422086200984370204200020023602002003450d010b200610020b0240200541246a280200450d00200541206a28020010020b200541d0006a24000f0b101c000b1019000b200210020b41c1214133102d000bd50402057f017e230041206b220324000240024002400240410810012204450d002003200436021020034208370214200341106a4100410810272003280210200328021822046a42f3e885d3b3ec9bb23a3700002003200441086a360218200341086a200328021836020020032003290310370300412010012204450d002003200436021020034220370214200341106a41004120102720032802102205200328021822066a22042002290000370000200441086a200241086a290000370000200441106a200241106a290000370000200441186a200241186a2900003700002003200641206a220236021820032802142104200320032802082002102720032802002206200328020822076a20052002101e1a2003200720026a220236020802402004450d00200510020b20032802042105200341106a41086a220442003703002003420037031020062002200341106a1003200341086a200429030037030020032003290310370300024002400240024002402003411041d02d410041001000417f460d0020034100360210410020034110200341106a41044100100022022002417f461b220741034d0d0820032802102202417f4c0d062002450d01200210012204450d0520044100200210171a0c020b200041003602082000420137020020050d020c030b410121040b2002410020034110200420022007410420074104491b100022072007417f461b4b0d042004450d0520002002ad2208422086200884370204200020043602002005450d010b200610020b200341206a24000f0b101c000b1019000b200410020b41c1214133102d000ba90701047f230041f0006b220424000240024002402003280200450d00200441086a200341086a28020036020020042003290200370300200441106a41186a200141186a290000370300200441106a41106a200141106a290000370300200441106a41086a200141086a290000370300200441386a200241086a2802003602002004200129000037031020042002290200370330410810012201450d022004200136025020044208370254200441d0006a4100410810272004280250200428025822016a42f3e885d3b38eddb73a3700002004200141086a360258200441c0006a41086a2201200428025836020020042004290350370340200441d0006a200441106a10cb012004280254210520042802502102200441c0006a200128020020042802582203102720042802402206200128020022076a20022003101e1a2001200720036a220336020002402005450d00200210020b20042802442102200441e0006a200410512004280268210520042802602101200441d0006a41086a220742003703002004420037035020062003200441d0006a1003200441c0006a41086a200729030037030020042004290350370340200441c0006a411020012005100402402004280264450d00200110020b02402002450d00200610020b0240200441346a280200450d00200441306a28020010020b2004280204450d0120042802001002200441f0006a24000f0b200441106a41186a200141186a290000370300200441106a41106a200141106a290000370300200441106a41086a200141086a290000370300200441386a200241086a2802003602002004200129000037031020042002290200370330410810012201450d012004200136025020044208370254200441d0006a4100410810272004280250200428025822016a42f3e885d3b38eddb73a3700002004200141086a360258200441c0006a41086a2201200428025836020020042004290350370340200441d0006a200441106a10cb012004280254210520042802502102200441c0006a200128020020042802582203102720042802402206200128020022076a20022003101e1a2001200720036a220336020002402005450d00200210020b20042802442101200441d0006a41086a220242003703002004420037035020062003200441d0006a1003200441c0006a41086a200229030037030020042004290350370340200441c0006a4110100502402001450d00200610020b200441346a280200450d00200441306a28020010020b200441f0006a24000f0b101c000b1e002001200210c9010240200241046a280200450d00200228020010020b0b9a0301057f230041306b220324000240410810012204450d002003200436022020034208370224200341206a4100410810272003280220200328022822046a42f3e885d3a3ac98b63a3700002003200441086a360228200341106a41086a200328022836020020032003290320370310412010012204450d002003200436022020034220370224200341206a41004120102720032802202205200328022822066a22042001290000370000200441086a200141086a290000370000200441106a200141106a290000370000200441186a200141186a2900003700002003200641206a220136022820032802242106200341106a20032802182001102720032802102204200328021822076a20052001101e1a2003200720016a220136021802402006450d00200510020b2003280214210520032002370308200341206a41086a220642003703002003420037032020042001200341206a1003200341106a41086a200629030037030020032003290320370310200341106a4110200341086a4108100402402005450d00200410020b200341306a24000f0b101c000bf90f020b7f017e230041a0036b220424002001280204210520022802082106200228020421072002280200210802400240200128020022092f018e02220a450d004107210b0c010b4101210b0b03400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240200b0e1b0a090b0c0d0708000102030406050e1a0f10141617151819121113130b2009200a410c6c6a210c4100210a200921024108210b0c300b20082002280200200241086a280200220d20062006200d4b1b1006220e450d1b4109210b0c2f0b200e411e76417f73410271417f6a220d450d24410a210b0c2e0b200d4101470d1d410b210b0c2d0b200a41016a210a2002410c6a2202200c470d1b0c1a0b4100417f41012006200d491b2006200d461b220d0d20410c210b0c2b0b200441013a00980120042d0098014101710d154105210b0c2a0b2005450d1d4106210b0c290b2005417f6a21052009200a4102746a4190026a28020022092f018e02220a0d124101210b0c280b200441003a00980120042d009801410171450d180c190b2009418e026a2f0100210a0c130b200141086a2102200aad4220862001ad84210f2007450d184103210b0c250b200810024104210b0c240b20042005360268200420023602782004200936026c2004200f370370200441086a41086a2202200341086a2802003602002004200329020037030820044198016a41086a220a2009200f422088a7410c6c6a2206418c016a220d280000220536020020064184016a2206290000210f20062004290308370000200d2002280200360000200220053602002004200f370398012004200f370308200a20022802003602002004200429030837039801200041013602002000410c6a200a2802003602002000200429039801370204200441a0036a24000f0b200441086a41106a20093602002001200128020841016a3602082004411c6a200aad4220862001ad84220f3702002004200736020c2004200836020820042006ad3703102004200936026c200441003602682004200f3703702004200736024c2004200836024820042006360250200441d8006a41086a200341086a2802003602002004200329020037035820044198016a200441e8006a200441c8006a200441d8006a1089012004280298014101470d1a4110210b0c220b200441286a41086a200441b0016a280200360200200441386a41086a200441bc016a280200360200200420044198016a41106a2903003703282004200441b4016a290200370338200441a4016a2802002102200441c4016a2802002109200441c0016a280200210a200428029c01210520044198016a41086a280200220d280288022206450d1a4111210b0c210b200d2f018c02210d2004200636026c2004200541016a2205360268200420023602702004200d3602744100450d1b4119210b0c200b2005210241c002100122060d1e4118210b0c1f0b101c000b2004200d36026c20042005360268200420023602702002210541010d174112210b0c1d0b200441b4016a210e200441a8016a2108200441e8006a410c6a210c200441c4016a2103200441c0016a21010c180b20032802002109200428029c0141016a2105200d2f018c02210d4113210b0c1b0b200441e8006a41086a2002360200200c200d3602002004200636026c20042005360268200441c8006a41086a200441286a41086a220228020036020020042004290328370348200441d8006a41086a200441386a41086a22062802003602002004200429033837035820044198016a200441e8006a200441c8006a200441d8006a200a2009108a012004280298014101470d114114210b0c1a0b2002200841086a2802003602002006200e41086a280200360200200420082902003703282004200e29020037033820044198016a410c6a28020021022001280200210a20044198016a41086a280200220d2802880222060d164116210b0c190b41c00210012206450d164117210b0c180b200620044198016a418802101e220641003b018e022006410036028802200620042902683702900220064198026a200441e8006a41086a290200370200200641a0026a200441f8006a290200370200200641a8026a20044180016a290200370200200641b0026a20044188016a290200370200200641b8026a20044190016a2902003702002006200228020036029002200220063602002002200228020441016a360204200628029002220241003b018c022002200636028802200620062f018e02220d410c6c6a220220042903283702002002418c016a200441386a41086a280200220536020020024184016a2004290338220f370200200241086a200441286a41086a28020036020020064190026a200d41016a22024102746a200a360200200620062f018e0241016a3b018e0220044198016a41086a2005360200200a20023b018c02200a2006360288022004200f37039801410f210b0c170b20004100360200200441a0036a24000f0b4107210b0c150b4102210b0c140b410d210b0c130b4101210b0c120b4100210b0c110b4108210b0c100b4101210b0c0f0b4105210b0c0e0b4102210b0c0d0b4104210b0c0c0b410e210b0c0b0b410a210b0c0a0b410c210b0c090b410f210b0c080b410f210b0c070b411a210b0c060b4119210b0c050b4112210b0c040b4113210b0c030b4115210b0c020b4118210b0c010b4117210b0c000b0b4501017f230041c0006b22012400200141386a2000410c6a28020036020020012000290204370330200141086a200141306a109d01200141086a109e01200141c0006a24000b7302017f017e024020002802002202417f460d002000200241016a36000002400240200041046a20011096012202450d002002280200450d00200241086a29030021030c010b20002802102001200041146a28020028021411140021030b20002000280200417f6a36000020030f0b109f01000b960501077f230041e0026b22032400200341086a200241086a28020036020020032002290200370300024002400240024020002802000d002000417f360000200341306a41186a2204200141186a290000370300200341306a41106a2205200141106a290000370300200341306a41086a200141086a290000370300200320012900003703302003200041046a3602182003200041086a28020036021020032000280204360214200341b8026a200341106a200341306a10970141012102200341b8026a41106a2802002106200341c4026a2802002107200341b8026a41086a280200210820032802bc022109024020032802b8024101470d00200341106a41186a2004290300370300200341106a41106a2005290300370300200341106a41086a200341306a41086a29030037030020032003290330370310410021020b41900210012201450d012001200341306a418802101e220141003b018e02200141003602880202402002450d00200320013602b802200342003702bc02200341306a200341b8026a109801200341306a1099012008200641286c6a220241106a210120022802102206450d040c030b200341cc006a200341186a290300370200200341d4006a200341206a290300370200200341dc006a200341286a2903003702002003200836023420032009360230200320073602382003200636023c20032000410c6a36024020032003290310370244200341d8026a4200370300200341003602c802200342003703b802200320013602d402200341306a200341b8026a109a01220241106a2101200228021022060d020c030b10c301000b101c000b200241146a280200450d00200610020b20012003290300370200200141086a200341086a28020036020020004100360000200341e0026a24000bab0401097f230041d0026b220324000240024020002802000d002000417f360000200341c8006a41186a2204200141186a290000370300200341c8006a41106a2205200141106a290000370300200341c8006a41086a2206200141086a290000370300200320012900003703482003200041046a3602082003200041086a28020036020020032000280204360204200341206a2003200341c8006a10970141012107200341206a41106a28020021082003412c6a2802002109200341206a41086a280200210a2003280224210b024020032802204101470d00200341186a2004290300370300200341106a2005290300370300200341086a200629030037030020032003290348370300410021070b41900210012201450d012001200341c8006a418802101e220141003b018e022001410036028802024002402007450d002003200136022020034200370224200a200841286c6a2101200341c8006a200341206a109801200341c8006a1099010c010b200341e4006a200341086a290300370200200341ec006a200341106a290300370200200341f4006a200341186a2903003702002003200a36024c2003200b360248200320093602502003200836025420032000410c6a3602582003200329030037025c200341c0006a420037030020034100360230200342003703202003200136023c200341c8006a200341206a109a0121010b200142013703002001200237030820004100360000200341d0026a24000f0b10c301000b101c000bfc0103017f017e047f230041306b2203240020034100360208200342013703002002290300210420034100410810272003280200200328020822056a20043700002003200541086a2206360208200341206a200241086a10a201200328022021052003200620032802282202102720032002200328020822076a22083602082007200328020022066a20052002101e1a02402003280224450d00200510020b200341206a41086a220242003703002003420037032020002001200341206a1003200341106a41086a200229030037030020032003290320370310200341106a411020062008100402402003280204450d00200610020b200341306a24000bfb1903047f017e077f230041d0006b22022400200241003602082002420137030002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001280200417f6a220341044b0d000240024002400240024020030e050004020301000b2002107e2002280200200241086a22032802006a41013a00002003200328020041016a22043602002002410036024820024201370340200141086a28020022054101460d0920054102470d1a200241c0006a107e20022802402205200241c8006a220328020022016a41013a00002003200141016a22013602000c0a0b2002107e2002280200200241086a22032802006a41073a00002003200328020041016a3602002002410036024820024201370340200141086a28020022034101460d0420034102470d1a200241c0006a107e2002280240200241c0006a41086a220328020022056a41013a00002003200541016a2205360200200141106a2903002106200241c0006a20054108102720032003280200220441086a22013602002004200228024022056a20063700000c050b2002107e2002280200200241086a22032802006a41053a00002003200328020041016a360200200241003602382002420137033020012d000422034103714101460d0520034102470d1a200241306a107e2002280230200241306a41086a220328020022056a41013a00002003200541016a2205360200200141086a2802002104200241306a20054104102720032003280200220741046a22013602002007200228023022056a20043600000c060b2002107e2002280200200241086a22032802006a41063a00002003200328020041016a3602002002410036024820024201370340200141086a22042d0000417f6a220341034b0d1a024020030e04000d0a0c000b200241c0006a107e2002280240200241c8006a220328020022056a41003a00002003200541016a22053602002001410c6a2802002104200241c0006a20054104102720032003280200220741046a22013602002007200228024022056a20043600000c0d0b2002107e2002280200200241086a22032802006a41023a00002003200328020041016a3602002002410036024820024201370340200141086a280200417f6a220341034b0d1a024020030e04000f0a0e000b200241c0006a107e2002280240200241c0006a41086a220328020022056a41003a00002003200541016a2205360200200141106a2903002106200241c0006a20054108102720032003280200220441086a22013602002004200228024022056a20063700000c0f0b2002107e2002280200200241086a22032802006a41003a00002003200328020041016a3602002002410036021820024201370310200128020422034101460d0620034102470d1a200241106a107e2002280210200241106a41086a220328020022056a41013a00002003200541016a2208360200200141106a220328020021052002410036024820024201370340200241c0006a4100410410272002280240200228024822046a20053600002002200441046a360248200241206a41086a220420022802483602002002200229034037032020032802002203450d0f200141086a2802002201200341186c6a21090340200241306a41086a2203410036020020024201370330200241c0006a200110512002280240210a200241306a4100200241c0006a41086a220528020022071027200320072003280200220b6a220c360200200b20022802306a200a2007101e1a02402002280244450d00200a10020b200241c0006a2001410c6a220d10512002280240210a200241306a200c200528020022071027200320072003280200220c6a2201360200200c2002280230220b6a200a2007101e1a02402002280244450d00200a10020b2001417f4c0d14024002402001450d002001100122030d010c170b410121030b200541003602002002200136024420022003360240200241c0006a41002001102720052005280200220720016a22033602002007200228024022056a200b2001101e1a2002280244210102402002280234450d00200b10020b200241206a2004280200200310272002280220220a200428020022076a20052003101e1a2004200720036a220336020002402001450d00200510020b200d410c6a22012009470d000c110b0b200241c0006a107e2002280240200241c0006a41086a220328020022056a41003a00002003200541016a2205360200200141106a2903002106200241c0006a20054108102720032003280200220441086a22013602002004200228024022056a20063700000b200228024421042002200241086a22032802002001102720032003280200220720016a360200200720022802006a20052001101e1a2004450d10200510020c100b200241306a107e2002280230200241306a41086a220328020022056a41003a00002003200541016a2207360200200241c0006a200141086a28020010d80120022802402104200241306a200720022802482205102720032005200328020022076a220a360200200720022802306a20042005101e1a02402002280244450d00200410020b410221030240200141056a2d000022014103714102460d004100210320014101470d00410121030b200241306a200a41011027200241386a22012001280200220441016a22013602002004200228023022056a20033a00000b200228023421042002200241086a22032802002001102720032003280200220720016a360200200720022802006a20052001101e1a2004450d0e200510020c0e0b200241c0006a107e2002280240200241c0006a41086a220428020022056a41003a00002004200541016a2205360200200141106a2903002106200241c0006a20054108102720022802402205200428020022016a20063700002004200141086a2201360200200328020021040b200228024421032002200420011027200241086a22042004280200220420016a360200200420022802006a20052001101e1a2003450d0c200510020c0c0b200241106a107e2002280210200241106a41086a220328020022056a41003a00002003200541016a2205360200200241c0006a200141086a105120022802402107200241106a2005200228024822041027200320042003280200220a6a2201360200200a200228021022056a20072004101e1a2002280244450d0a200710020c0a0b200241c0006a107e2002280240200241c0006a41086a220328020022056a41023a00002003200541016a2205360200200141106a2903002106200241c0006a20054108102720032003280200220441086a22013602002004200228024022056a20063700000c030b200241c0006a107e2002280240200241c8006a220328020022056a41023a00002003200541016a22053602002001410c6a2802002104200241c0006a20054104102720032003280200220741046a22013602002007200228024022056a20043600000c050b200241c0006a107e2002280240200241c0006a41086a220328020022056a41033a00002003200541016a2205360200200141106a2903002106200241c0006a20054108102720032003280200220441086a22013602002004200228024022056a20063700000c010b200241c0006a107e2002280240200241c0006a41086a220328020022016a41013a00002003200141016a2201360200200241c0006a20014120102720032003280200220741206a22013602002007200228024022056a220341086a200441096a290000370000200341106a200441116a290000370000200341186a200441196a290000370000200320042900013700000b200228024421042002200241086a22032802002001102720032003280200220720016a360200200720022802006a20052001101e1a2004450d06200510020c060b200241c0006a107e20022802402205200241c8006a220328020022016a41033a00002003200141016a22013602000c010b200241c0006a107e2002280240200241c0006a41086a220328020022056a41013a00002003200541016a2205360200200141106a2903002106200241c0006a20054108102720032003280200220441086a22013602002004200228024022056a20063700000b200228024421042002200241086a22032802002001102720032003280200220720016a360200200720022802006a20052001101e1a2004450d03200510020c030b200228022821032002280220210a0b20022802242104200241106a20082003102720022002280218220720036a22013602182007200228021022056a200a2003101e1a2004450d00200a10020b200228021421042002200241086a22032802002001102720032003280200220720016a360200200720022802006a20052001101e1a2004450d00200510020b20002002290300370200200041086a200241086a280200360200200241d0006a24000f0b1019000b101c000b41ec30103b000b41843e103b000b41ac3f103b000b419435103b000b41943b103b000b41ecc100103b000bc20201027f230041c0006b22022400200241106a41086a220342003703002002420037031020014107200241106a1003200241086a20032903003703002002200229031037030002402002411041d02d410041001000417f460d00200241386a4200370300200241206a41106a4200370300200241206a41086a420037030020024200370320024020024110200241206a4120410010002203417f460d002003411f4d0d0020002002290320370000200041186a200241206a41186a290300370000200041106a200241206a41106a290300370000200041086a200241206a41086a2200290300370000200241106a41086a220342003703002002420037031020014107200241106a10032000200329030037030020022002290310370320200241206a41101005200241c0006a24000f0b41c1214133102d000b41f4214122102d000bb80101027f230041306b22032400200341206a41086a220442003703002003420037032020012002200341206a1003200341086a200429030037030020032003290320370300024002402003411041d02d410041001000417f460d002003421037021420032003360210200341206a200341106a103a20032802202201450d012000200329022437020420002001360200200341306a24000f0b2000410036020820004201370200200341306a24000f0b41c1214133102d000b8d5b05087f037e137f017e017f230041e0016b2202240002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024020002d000022034103714101460d00024020034102460d0020034103470d0d200241206a200041196a290000370300200241186a200041116a290000370300200241106a200041096a29000037030020022000290001370308200241386a1047200228023822042002280240220541286c22066a2107200421030240200641286d4104490d00200421060340200120062203460d062003200141201006450d06200341286a22062001460d0a2006200141201006450d0a200641286a22062001460d0b2006200141201006450d0b200641286a22062001460d0c2006200141201006450d0c2007200641286a22066b41286d41034b0d000b200341a0016a21030b024020032007460d002004200541286c6a2106034020012003460d042003200141201006450d042006200341286a2203470d000b0b2004200228023c10870141fc3e103b000b200041216a2d0000210520024198016a41186a200041196a220329000037030020024198016a41106a200041116a220629000037030020024198016a41086a200041096a22042900003703002002200029000137039801200241386a41186a2003290000370300200241386a41106a2006290000370300200241386a41086a2004290000370300200241e0006a200141086a290000370300200241e8006a200141106a290000370300200241f0006a200141186a2900003703002002200029000137033820022001290000370358410910012203450d17200220033602c001200242093702c401200241c0016a41004109102720022802c00120022802c80122066a220441002900f922370000200241086a41086a2203200641096a2206360200200441086a41002d0081233a0000200220022903c001370308200220063602c801200241c0016a200241386a10be0120022802c401210820022802c0012104200241086a200328020020022802c8012206102720022802082207200328020022096a20042006101e1a2003200920066a220636020002402008450d00200410020b200228020c210320024188016a41086a2204420037030020024200370388012007200620024188016a1003200241f8006a41086a20042903003703002002200229038801370378200241f8006a411041d02d410041001000417f460d02200241003a00c001200241f8006a4110200241c0016a41014100100041016a41014d0d1020022d00c00121062003450d160c150b200041046a280200210d102e210a20024188016a41086a22034200370300200242003703880141e122410a20024188016a1003200241f8006a41086a20032903003703002002200229038801370378200241f8006a411041d02d410041001000417f460d0c20024200370338200241f8006a4110200241386a41084100100041016a41084d0d0a2002290338200a7c210a200241386a1047200228023822072002280240220841286c22066a2105200721030240200641286d4104490d00200721030340200120032206460d052006200141201006450d05200641286a2103200641286a22042001460d062004200141201006450d06200641d0006a2103200441286a22042001460d062004200141201006450d06200641f8006a2103200441286a22042001460d062004200141201006450d062005200441286a22036b41286d41034b0d000b200641a0016a21030b4102210420032005460d052007200841286c6a2106034020012003460d052003200141201006450d052006200341286a2203470d000c060b0b200228023c450d120c110b4102210620030d120c130b200228023c0d0f0c100b200621030b200341206a290300200a5621040b200441024720047121030240200228023c450d00200710020b2003450d0720024198016a200d10d80120022802a00121052002280298012107200241386a41186a22034200370300200241386a41106a22064200370300200241386a41086a220442003703002002420037033820072005200241386a1012200241c0016a41186a22052003290300370300200241c0016a41106a22082006290300370300200241c0016a41086a22092004290300370300200220022903383703c0010240200228029c01450d00200710020b200320052903003703002006200829030037030020042009290300370300200220022903c001370338410710012203450d1020022003360298012002420737029c0120024198016a41004107102720022802980120022802a00122066a220341002800eb22360000200241086a41086a200641076a2206360200200341046a41002f00ef223b0000200341066a41002d00f1223a00002002200229039801370308200220063602a001412010012203450d1020022003360298012002422037029c0120024198016a410041201027200228029801220620022802a00122046a22032002290338370000200341086a200241386a41086a290300370000200341106a200241386a41106a290300370000200341186a200241386a41186a2903003700002002200441206a22033602a001200228029c012107200241086a20022802102003102720022802082204200228021022056a20062003101e1a2002200520036a220336021002402007450d00200610020b200228020c210620024188016a41086a2207420037030020024200370388012004200320024188016a1003200241f8006a41086a20072903003703002002200229038801370378200241f8006a411020024198016a410041001000210302402006450d00200410020b2003417f470d08200241386a200241c0016a10dc01024020022802402203450d002002290338210b20022802442106102e210c02402006450d00200310020b200c200b540d0b0b200241286a10bb01200241386a41186a2206200241c0016a41186a290300370300200241386a41106a2204200241c0016a41106a290300370300200241386a41086a2207200241c0016a41086a290300370300200220022903c00137033820022802302205200228022c460d030c0b0b200228023c0d0b0c0c0b200228023c0d0a0c0b0b200228023c0d090c0a0b200241286a106f200241286a41086a28020021050c070b41c1214133102d000b419c3e103b000b41f4214122102d000b41b43e103b000b41cc3e103b000b41c1214133102d000b41e43e103b000b200241286a41086a200541016a22153602002002280228220f200541286c6a2203200a37030020032002290338370308200341106a2007290300370300200341186a2004290300370300200341206a2006290300370300024002400240024002400240024002400240024002400240024002400240024002400240201541144b0d00201541014d0d01200f200541286c6a21110340201520052203417f6a2205490d100240201520056b22074102490d00200f200341286c6a2204290300200f200541286c6a220e290300220a5a0d00200e2004290300370300200e290308210b200e41086a200441086a290300370300200241386a41186a2200200e41206a2203290300370300200241386a41106a2212200e41186a2206290300370300200241386a41086a2213200e41106a22082903003703002008200441106a2903003703002006200441186a2903003703002003200441206a2903003703002002200b37033841012108024020074103490d0041012106201121030340200641016a220820074f0d150240200341286a2204290300200a5a0d00200620074f0d15200341206a200341c8006a290300370300200341186a200341c0006a290300370300200341106a200341386a290300370300200341086a200341306a29030037030020032004290300370300200641026a2109200821062004210320092007490d010c020b0b20062108200321040b2004200a370300200e200841286c6a22032002290338370308200341206a2000290300370300200341186a2012290300370300200341106a20132903003703000b201141586a211120050d000c020b0b20154101762216ad42287e220a422088a70d0d200aa72203417f4c0d0c4108211702402003450d00200310012217450d160b41002106200241003602a0012002420437039801200f41586a2118200f41887f6a21194104210420024198016a41086a211a2015211003402010211141002110410121070240024002402011417f6a2203450d000240024002400240024002400240200f200341286c6a290300200f2011417e6a220741286c6a290300220a5a0d00410021082007450d022019201141286c6a21030340200a2003290300220b5a0d02200341586a2103200b210a2007417f6a22070d000c030b0b02402007450d002019201141286c6a2103410221070340200a2003290300220b540d04200341586a2103200b210a2011200741016a2207470d000b41002110201121072006200228029c01470d090c080b41022107410021102006200228029c01470d080c070b200721080b024020112008490d00201120154b0d140240201120086b22074101762209450d002018201141286c6a2103200f200841286c6a21050340200241386a41206a220e200541206a2200290300370300200241386a41186a2212200541186a2213290300370300200241386a41106a2214200541106a2210290300370300200241386a41086a221b200541086a221c29030037030020022005290300370338200341086a221d290300210a200341106a221e290300210b200341186a221f290300210c200329030021202000200341206a22212903003703002013200c3703002010200b370300201c200a370300200520203703002021200e290300370300201f2012290300370300201e2014290300370300201d201b29030037030020032002290338370300200341586a2103200541286a21052009417f6a22090d000b0b2008450d030c020b200820111055000b201120076b2208450d010b200741094d0d010b200821102006200228029c01470d030c020b201120154b0d0d200f200841286c6a2112034020112008417f6a2210490d0f0240201120106b22074102490d00200f200841286c6a2208290300200f201041286c6a2200290300220a5a0d00200020082903003703002000290308210b200041086a200841086a290300370300200241386a41186a2213200041206a2203290300370300200241386a41106a2214200041186a2205290300370300200241386a41086a221b200041106a22092903003703002009200841106a2903003703002005200841186a2903003703002003200841206a2903003703002002200b37033841012109024020074103490d0041012105201221030340200541016a220920074f0d090240200341286a2208290300200a5a0d00200520074f0d0b200341206a200341c8006a290300370300200341186a200341c0006a290300370300200341106a200341386a290300370300200341086a200341306a29030037030020032008290300370300200541026a210e2009210520082103200e2007490d010c020b0b20052109200321080b2008200a3703002000200941286c6a22032002290338370308200341206a2013290300370300200341186a2014290300370300200341106a201b2903003703000b2010450d01201241586a2112201021082007410a490d000b0b2006200228029c01470d010b20024198016a107a201a280200210620022802980121040b200420064103746a2203200736020420032010360200201a200641016a2206360200024020064102490d0020022802980121040340024002400240024020042006417f6a4103746a2203280200450d00200420064103746a220841746a2802002205200328020422074d0d00200641024d0d0520042006417d6a22124103746a2802042203200720056a4d0d01200641034d0d05200841646a280200200320056a4d0d010c050b20064103490d012003280204210720042006417d6a22124103746a28020421030b20032007490d010b2006417e6a21120b2006201241016a22134d0d06200620124d0d0720042012410374221b6a2203280204221c20032802006a220320042013410374221d6a22062802002214490d08200320154b0d09200f201441286c6a22112006280204220041286c22066a2107200341286c210402400240024002400240200320146b220820006b220320004f0d0020172007200341286c2206101e220e20066a210520004101480d0120034101480d01201820046a21042007210303402004200341586a2207200541586a2208200829030020072903005422091b2206290300370300200441206a200641206a290300370300200441186a200641186a290300370300200441106a200641106a290300370300200441086a200641086a2903003703002005200820091b210520112007200320091b22034f0d04200441586a2104200e2106200e2005490d000c050b0b201720112006101e220320066a210520004101480d01200820004c0d01200f20046a210920032106201121030340200320072006200729030020062903005422081b2204290300370300200341206a200441206a290300370300200341186a200441186a290300370300200341106a200441106a290300370300200341086a200441086a2903003703002006200641286a20081b2106200341286a2103200741286a200720081b220720094f0d04200520064b0d000c040b0b200721030c010b201121030b201721060b20032006200520066b220420044128706b101e1a201a280200220320124d0d0a2002280298012204201b6a2206201c20006a36020420062014360200200320134d0d0b2004201d6a2206200641086a200320136b41037441786a10391a201a2003417f6a2206360200200641014b0d000b0b20100d000b0240200228029c01450d0020022802980110020b2016450d00201710020b200241286a10bc0120024198016a41186a200241c0016a41186a29030037030020024198016a41106a200241c0016a41106a29030037030020024198016a41086a200241c0016a41086a290300370300200220022903c00137039801200241386a41286a200d41286a290300370300200241386a41206a200d41206a290300370300200241386a41186a200d41186a290300370300200241386a41106a200d41106a290300370300200241386a41086a200d41086a2903003703002002200d290300370338410710012203450d14200220033602082002420737020c200241086a4100410710272002280208200228021022066a220341002800eb2236000020024188016a41086a200641076a2206360200200341046a41002f00ef223b0000200341066a41002d00f1223a0000200220022903083703880120022006360210412010012203450d14200220033602082002422037020c200241086a41004120102720022802082206200228021022046a2203200229039801370000200341086a20024198016a41086a290300370000200341106a20024198016a41106a290300370000200341186a20024198016a41186a2903003700002002200441206a2203360210200228020c210720024188016a20022802900120031027200228028801220420022802900122056a20062003101e1a2002200520036a22053602900102402007450d00200610020b200228028c012106200241086a200241386a10d801200228021021072002280208210320024188016a41086a2208420037030020024200370388012004200520024188016a1003200241f8006a41086a20082903003703002002200229038801370378200241f8006a41102003200710040240200228020c450d00200310020b02402006450d00200410020b024002400240200228023822034103460d0020030d02200228023c2203450d0220034101470d01200241c4006a280200450d02200241c0006a28020010020c020b20022d003c4101470d01200241c0006a10bf010c010b0240200241386a41106a2802002206450d00200241c0006a2802002103200641186c210603400240200341046a280200450d00200328020010020b0240200341106a280200450d002003410c6a28020010020b200341186a2103200641686a22060d000b0b200241c4006a280200450d00200241c0006a28020010020b200241386a41186a2206200241c0016a41186a2204290300370300200241386a41106a2207200241c0016a41106a2205290300370300200241386a41086a2208200241c0016a41086a2209290300370300200220022903c001370338412010012203450d14200141086a220e290000210a200141106a2211290000210b2001290000210c200341186a200141186a2200290000370000200341106a200b370000200341086a200a3700002003200c3700002002200336029801200242818080801037029c01200241386a20024198016a10dd01200620042903003703002007200529030037030020082009290300370300200241e0006a200e290000370300200241e8006a2011290000370300200241f0006a2000290000370300200220022903c00137033820022001290000370358200241386a410110de010240200228022c450d00200228022810020b200d1002200241e0016a24000f0b41ccc100200541016a2007103c000b41dcc10020052007103c000b41acc10020132006103c000b41acc10020122006103c000b201420031055000b200320151029000b41bcc10020122003103c000b41b4c300103b000b20112008417f6a22104f0d010b201020111055000b201120151029000b1065000b1064000b200520151055000b41dcc10020062007103c000b41ccc100200641016a2007103c000b200410020b410b10012203450d02200220033602382002420b37023c200241386a4100410b10272002280238200228024022066a220341002900822337000020024198016a41086a2006410b6a2206360200200341086a41002f008a233b00002003410a6a41002d008c233a0000200220022903383703980120022006360240412010012203450d02200220033602382002422037023c200241386a41004120102720022802382206200228024022046a22032002290308370000200341086a200241086a41086a290300370000200341106a200241086a41106a290300370000200341186a200241086a41186a2903003700002002200441206a2203360240200228023c210720024198016a20022802a00120031027200228029801220420022802a00122056a20062003101e1a2002200520036a22033602a00102402007450d00200610020b200228029c01210620024188016a41086a2207420037030020024200370388012004200320024188016a1003200241f8006a41086a20072903003703002002200229038801370378200241f8006a411020024198016a410041001000210302402006450d00200410020b02400240024002402003417f460d00200241386a200241086a10dc010240024002400240024020022802402208450d0020022002290244220a37022c20022008360228200aa7210e200a422088a72209450d0120094101470d02410021030c030b410021092002410036023020024201370328410121084100210e0b410021060c020b4100210320092106034020032006410176220720036a2204200820044105746a2001412010062205417f4a1b200420051b2103200620076b220641014b0d000b0b200820034105746a2001412010062206450d032006411f7620036a21060b200241386a41186a200141186a290000370300200241386a41106a200141106a290000370300200241386a41086a200141086a2900003703002002200129000037033820092006490d012009200e470d03200241286a107c200228022821080c030b41943f103b000b419cc300103b000b200310c201000b200820064105746a220341206a2003200920066b41057410391a20032002290338370000200341186a200241386a41186a290300370000200341106a200241386a41106a290300370000200341086a200241386a41086a290300370000200241286a41086a200941016a360200102e210a20024188016a41086a220342003703002002420037038801418d23410b20024188016a1003200241f8006a41086a200329030037030020022002290388013703780240200241f8006a411041d02d410041001000417f460d00200242003703380240200241f8006a4110200241386a41084100100041016a41084d0d002002290338210b200241c8006a200241286a41086a2802003602002002200b200a7c37033820022002290328370340410910012203450d0420022003360298012002420937029c0120024198016a41004109102720022802980120022802a00122036a2206410029009823370000200241c0016a41086a200341096a2203360200200641086a41002d00a0233a000020022002290398013703c001200220033602a001412010012203450d0420022003360298012002422037029c0120024198016a410041201027200228029801220620022802a00122046a22032002290308370000200341086a200241086a41086a290300370000200341106a200241086a41106a290300370000200341186a200241086a41186a2903003700002002200441206a22033602a001200228029c012107200241c0016a20022802c8012003102720022802c001220420022802c80122056a20062003101e1a2002200520036a22033602c80102402007450d00200610020b20022802c401210620042003200241386a10d70102402006450d00200410020b0240200241c4006a280200450d00200241c0006a28020010020b200241386a10bb01200228023c210f20022802382110024002400240024020022802402203450d00200341286c41b07f6a2104200241386a41086a2106201021030340200241386a41206a200341206a290300370300200241386a41186a200341186a290300370300200241386a41106a200341106a2903003703002006200341086a29030037030020022003290300370338200241c0016a41186a200641186a290000370300200241c0016a41106a200641106a290000370300200241c0016a41086a200641086a290000370300200220062900003703c001200241c0016a200241086a412010060d02200341286a2103200441586a220441b07f470d000b0b2002410036024020024208370338200f450d0120101002200241386a10bc010c020b20024198016a41206a2206200241386a41206a29030037030020024198016a41186a2207200241386a41186a29030037030020024198016a41106a2205200241386a41106a29030037030020024198016a41086a2208200241386a41086a2903003703002002200229033837039801412810012211450d062011200229039801370300201141206a2006290300370300201141186a2007290300370300201141106a2005290300370300201141086a20082903003703002002201136028801200242818080801037028c01024020044158460d00200341286a2103200241386a41086a21064101210e0340200241386a41206a2205200341206a290300370300200241386a41186a2208200341186a290300370300200241386a41106a2209200341106a2903003703002006200341086a29030037030020022003290300370338200241c0016a41186a200641186a290000370300200241c0016a41106a200641106a290000370300200241c0016a41086a200641086a290000370300200220062900003703c0010240200241c0016a200241086a41201006450d0020024198016a41206a2207200529030037030020024198016a41186a2212200829030037030020024198016a41106a2213200929030037030020024198016a41086a2214200629030037030020022002290338370398012005200729030037030020082012290300370300200920132903003703002006201429030037030020022002290398013703380240200e200228028c01470d0020024188016a200e410110820120022802880121110b2011200e41286c6a22072002290338370300200741206a2005290300370300200741186a2008290300370300200741106a2009290300370300200741086a200629030037030020024188016a41086a200e41016a220e3602000b2004450d01200341286a2103200441586a21040c000b0b0240200f450d00201010020b200241386a41086a20024188016a41086a2802003602002002200229038801370338200228023c2103200241386a10bc012003450d01200228023810020c010b200241386a10bc010b200241386a41186a200241086a41186a290300370300200241386a41106a200241086a41106a290300370300200241386a41086a200241086a41086a29030037030020022002290308370338410b10012203450d0420022003360298012002420b37029c0120024198016a4100410b102720022802980120022802a00122066a2203410029008223370000200241c0016a41086a2006410b6a2206360200200341086a41002f008a233b00002003410a6a41002d008c233a000020022002290398013703c001200220063602a001412010012203450d0420022003360298012002422037029c0120024198016a410041201027200228029801220620022802a00122046a22032002290338370000200341086a200241386a41086a290300370000200341106a200241386a41106a290300370000200341186a200241386a41186a2903003700002002200441206a22033602a001200228029c012107200241c0016a20022802c8012003102720022802c001220420022802c80122056a20062003101e1a2002200520036a22033602c80102402007450d00200610020b20022802c401210620024188016a41086a2207420037030020024200370388012004200320024188016a1003200241f8006a41086a20072903003703002002200229038801370378200241f8006a4110100502402006450d00200410020b200241386a41186a200241086a41186a290300370300200241386a41106a200241086a41106a290300370300200241386a41086a200241086a41086a29030037030020022002290308370338410710012203450d0420022003360298012002420737029c0120024198016a41004107102720022802980120022802a00122066a220341002800eb22360000200241c0016a41086a200641076a2206360200200341046a41002f00ef223b0000200341066a41002d00f1223a000020022002290398013703c001200220063602a001412010012203450d0420022003360298012002422037029c0120024198016a410041201027200228029801220620022802a00122046a22032002290338370000200341086a200241386a41086a290300370000200341106a200241386a41106a290300370000200341186a200241386a41186a2903003700002002200441206a22033602a001200228029c012107200241c0016a20022802c8012003102720022802c001220420022802c80122056a20062003101e1a2002200520036a22033602c80102402007450d00200610020b20022802c401210620024188016a41086a2207420037030020024200370388012004200320024188016a1003200241f8006a41086a20072903003703002002200229038801370378200241f8006a4110100502402006450d00200410020b200241386a1047200228023c211320022802382112024020022802402203450d00200341286c2109200241d8006a210620122103034020062003290000370000200241386a41186a200241086a41186a290300370300200241386a41106a200241086a41106a290300370300200241386a41086a200241086a41086a290300370300200641086a200341086a290000370000200641106a200341106a290000370000200641186a200341186a29000037000020022002290308370338410910012204450d0620022004360298012002420937029c0120024198016a41004109102720024198016a41086a22072007280200220441096a220536020020042002280298016a220841002900f922370000200241c0016a41086a22042005360200200841086a41002d0081233a000020022002290398013703c00120024198016a200241386a10be01200228029c01210e2002280298012105200241c0016a200428020020072802002207102720022802c0012208200428020022116a20052007101e1a2004201120076a22073602000240200e450d00200510020b20022802c401210420024188016a41086a2205420037030020024200370388012008200720024188016a1003200241f8006a41086a20052903003703002002200229038801370378200241f8006a4110100502402004450d00200810020b200341286a2103200941586a22090d000b0b02402013450d00201210020b20002d00004101470d0a0c090b41c1214133102d000b41f4214122102d000b200710020b200641ff01714102470d04410b10012203450d00200220033602382002420b37023c200241386a4100410b10272002280238200228024022066a2203410029008223370000200241c0016a41086a2006410b6a2206360200200341086a41002f008a233b00002003410a6a41002d008c233a0000200220022903383703c00120022006360240412010012203450d00200220033602382002422037023c200241386a41004120102720022802382206200228024022046a2203200229039801370000200341086a20024198016a41086a290300370000200341106a20024198016a41106a290300370000200341186a20024198016a41186a2903003700002002200441206a2203360240200228023c2107200241c0016a20022802c8012003102720022802c001220420022802c80122086a20062003101e1a2002200820036a22033602c80102402007450d00200610020b20022802c401210720024188016a41086a2206420037030020024200370388012004200320024188016a1003200241f8006a41086a20062903003703002002200229038801370378410021030240200241f8006a411041d02d410041001000417f460d00200242103702c4012002200241f8006a3602c001200241386a200241c0016a103a20022802382206450d022002200229023c220a37020c20022006360208200a422088a72103200aa721092007450d040c030b2002410036021020024201370308410121064100210920070d020c030b101c000b41c1214133102d000b200410020b200241386a41186a2204200141186a290000370300200241386a41106a2207200141106a290000370300200241386a41086a2208200141086a29000037030020022001290000370338024020032009470d00200241086a107c200241086a41086a2802002103200228020821060b2008290300210a2007290300210b2004290300210c200620034105746a22062002290338370000200641186a200c370000200641106a200b370000200641086a200a370000200241086a41086a2206200341016a360200200420024198016a41186a290300370300200720024198016a41106a290300370300200820024198016a41086a2903003703002002200229039801370338200241c0016a41086a2006280200360200200220022903083703c001200241386a200241c0016a10dd010b200241386a41186a20024198016a41186a290300370300200241386a41106a20024198016a41106a290300370300200241386a41086a20024198016a41086a290300370300200241e0006a200141086a290000370300200241e8006a200141106a290000370300200241f0006a200141186a290000370300200220022903980137033820022001290000370358200241386a200541ff017141004710de0120002d00004101470d010b200041046a10bf010b200241e0016a24000bcd0402057f017e230041c0006b220224000240024002400240410910012203450d002002200336023020024209370234200241306a4100410910272002280230200228023822036a2204410029009823370000200241086a200341096a2203360200200441086a41002d00a0233a00002002200229033037030020022003360238412010012203450d002002200336023020024220370234200241306a41004120102720022802302204200228023822056a22032001290000370000200341086a200141086a290000370000200341106a200141106a290000370000200341186a200141186a2900003700002002200541206a220136023820022802342105200220022802082001102720022802002203200228020822066a20042001101e1a2002200620016a220136020802402005450d00200410020b20022802042104200241306a41086a220542003703002002420037033020032001200241306a1003200241086a20052903003703002002200229033037030002402002411041d02d410041001000417f460d002002200236021020024110360214200242003703302002410020024110200241306a41084100100022012001417f461b2201410820014108491b360218200141074d0d0220022903302107200241306a200241106a103a20022802302201450d022002200229023437032020002001360208200020073703002000200229032037020c200041146a200241286a2802003602002004450d040c030b2000410036020820040d020c030b101c000b41c1214133102d000b200310020b200241c0006a24000be20301067f230041306b220224000240410b10012203450d00200220033602202002420b370224200241206a4100410b10272002280220200228022822046a2203410029008223370000200241106a41086a2004410b6a2204360200200341086a41002f008a233b00002003410a6a41002d008c233a00002002200229032037031020022004360228412010012203450d002002200336022020024220370224200241206a41004120102720022802202204200228022822056a22032000290000370000200341086a200041086a290000370000200341106a200041106a290000370000200341186a200041186a2900003700002002200541206a220036022820022802242105200241106a20022802182000102720022802102203200228021822066a20042000101e1a2002200620006a220636021802402005450d00200410020b200228021421042002200110a2012002280208210520022802002100200241206a41086a220742003703002002420037032020032006200241206a1003200241106a41086a200729030037030020022002290320370310200241106a411020002005100402402002280204450d00200010020b02402004450d00200310020b0240200141046a280200450d00200128020010020b200241306a24000f0b101c000bc00201057f230041306b22022400200220013a000f0240410910012201450d002002200136022020024209370224200241206a4100410910272002280220200228022822036a220441002900f922370000200241106a41086a2201200341096a2203360200200441086a41002d0081233a00002002200229032037031020022003360228200241206a200010be012002280224210520022802202103200241106a200128020020022802282200102720022802102204200128020022066a20032000101e1a2001200620006a220036020002402005450d00200310020b20022802142103200241206a41086a220542003703002002420037032020042000200241206a10032001200529030037030020022002290320370310200241106a41102002410f6a4101100402402003450d00200410020b200241306a24000f0b101c000bab0201057f230041206b220224000240410810012203450d002002200336021020024208370214200241106a4100410810272002280210200228021822036a42e4cab5d3c3ac99b83a3700002002200341086a360218200241086a200228021836020020022002290310370300410410012203450d002002200336021020024204370214200241106a41004104102720022802102203200228021822046a20003600002002200441046a220036021820022802142105200220022802082000102720022802002204200228020822066a20032000101e1a2002200620006a220036020802402005450d00200310020b2002280204210320042000200110d70102402003450d00200410020b02402001410c6a280200450d00200128020810020b200241206a24000f0b101c000b9c0b04027f017e027f017e230041d0006b220224000240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002400240024002402001280200417f6a220341044b0d000240024002400240024020030e050004020301000b200141086a28020022034101460d0720034102470d16420221040c080b420121040240200141086a28020022034101460d0020034102470d17420221040b20004105360200200041086a2004370300200041106a200141106a290300370300200241d0006a24000f0b20012d000422034103714101460d034102210520034102470d16200141086a28020021030c040b200141086a22052d0000417f6a220341034b0d16024020030e04000c080a000b2001410c6a2802002101410121030c0c0b200141086a280200417f6a220641034b0d1641042103024020060e0400080d0e000b200141106a2903002104410121030c0d0b200128020422034101460d0420034102470d16200141106a2802002205ad42187e2204422088a70d172004a72203417f4c0d18200141086a28020021012003450d0d2003100122060d0e0c100b413010012203450d0f2003200141086a28020010e001200141056a2d00002101410121050b20004103360200200041086a20033602002000200141ff0171410874200572360204200241d0006a24000f0b200141106a2903002107420121040b20004101360200200041106a2007370300200041086a2004370300200241d0006a24000f0b200141106a2802002203417f4c0d14200141086a2802002106410121014101210502402003450d00200310012205450d0c0b2002200336023c2002200536023820024100360240200241386a41002003102720022002280240220520036a360240200520022802386a20062003101e1a200241286a2002280240360200200220022903383703200c0a0b200141106a2903002104410321030c020b200141106a2903002104410221030c050b200141106a2903002104410421030b0c010b41022103200241206a41026a200541036a2d00003a0000200241c0006a200141206a290000370300200241386a41106a200141286a2d00003a0000200220052f00013b01202002200141186a290000370338200141106a29000021042001410c6a28000021010b200020022f01203b000920004104360200200041086a20033a00002000410c6a2001360200200041106a2004370300200041186a20022903383703002000410b6a200241226a2d00003a0000200041206a200241386a41086a290300370300200041286a200241386a41106a290300370300200241d0006a24000f0b2001410c6a2802002105410321030b200041023602002000410c6a2005360200200041086a2003360200200041106a2004370300200241d0006a24000f0b410421060b20022006360208200241003602102002200536020c200241086a4100200341186d10830120022802102103200228020821062002200136021820022001200541186c6a36021c200241386a200241186a103302402002280238450d002006200341186c6a21010340200241206a41106a2205200241386a41106a290300370300200241206a41086a2206200241386a41086a29030037030020022002290338370320200141106a2005290300370200200141086a200629030037020020012002290320370200200341016a2103200141186a2101200241386a200241186a103320022802380d000b0b200241086a41086a2003360200200241206a41086a200336020020022002290308370320410221010b2000200136020420004100360200200041086a2002290320370200200041106a200241206a41086a280200360200200241d0006a24000f0b101c000b41ec30103b000b41843e103b000b41ac3f103b000b419435103b000b41943b103b000b41ecc100103b000b1060000b1061000b1019000b9d08090e7f017e017f017e017f017e017f017e017f230041306b22022400024002400240024020014108490d00200141017641feffffff07712203417f6a220420014f0d032001410d74200173220541117620057322054105742005732206417f2001417f6a677622077122054100200120052001491b6b220520014f0d01200241086a41206a22082000200441286c6a220441206a2209290300370300200241086a41186a220a200441186a220b290300370300200241086a41106a220c200441106a220d290300370300200241086a41086a220e200441086a220f2903003703002000200541286c6a22052903002110200541086a22112903002112200541106a22132903002114200541186a221529030021162009200541206a2217290300370300200b2016370300200d2014370300200f2012370300200429030021122004201037030020022012370308201720082903003703002015200a2903003703002013200c2903003703002011200e29030037030020052002290308370300200320014f0d022006410d7420067322054111762005732205410574200573220620077122054100200120052001491b6b220520014f0d01200241086a41206a22082000200341286c6a220441206a2209290300370300200241086a41186a220a200441186a220b290300370300200241086a41106a220c200441106a220d290300370300200241086a41086a220e200441086a220f2903003703002000200541286c6a22052903002110200541086a22112903002112200541106a22132903002114200541186a221529030021162009200541206a2217290300370300200b2016370300200d2014370300200f2012370300200429030021122004201037030020022012370308201720082903003703002015200a2903003703002013200c2903003703002011200e290300370300200520022903083703002003410172220420014f0d032006410d742006732205411176200573220541057420057320077122054100200120052001491b6b220520014f0d01200241086a41206a22032000200441286c6a220141206a2204290300370300200241086a41186a2206200141186a2207290300370300200241086a41106a2208200141106a2209290300370300200241086a41086a220a200141086a220b2903003703002000200541286c6a22002903002110200041086a22052903002112200041106a220c2903002114200041186a220d29030021162004200041206a220e2903003703002007201637030020092014370300200b2012370300200129030021122001201037030020022012370308200e2003290300370300200d2006290300370300200c20082903003703002005200a290300370300200020022903083703000b200241306a24000f0b41b4c20020052001103c000b200321040b41ecc20020042001103c000bd808070d7f017e017f017e017f027e027f230041306b2202240002400240024002400240024020014101762203450d0003402003417f6a2203210403402004410174220d41017221160240200d41026a220d20014f0d00201620014f0d06200d20162000200d41286c6a2903002000201641286c6a290300541b21160b0240201620014f0d00200420014f0d042000201641286c6a220d2903002000200441286c6a22042903005a0d00200241086a41206a2205200441206a2206290300370300200241086a41186a2207200441186a2208290300370300200241086a41106a2209200441106a220a290300370300200241086a41086a220b200441086a220c290300370300200d41086a220e290300210f200d41106a22102903002111200d41186a22122903002113200d29030021142006200d41206a221529030037030020082013370300200a2011370300200c200f3703002004290300210f200420143703002002200f370308201520052903003703002012200729030037030020102009290300370300200e200b290300370300200d2002290308370300201621040c010b0b20030d000b0b024020014102490d002001210503402005417f6a220520014f0d06200241086a41206a2206200041206a220d290300370300200241086a41186a2207200041186a2216290300370300200241086a41106a2208200041106a220a290300370300200241086a41086a2209200041086a220b2903003703002000200541286c6a2204290300210f200441086a220c2903002111200441106a220e2903002113200441186a22102903002114200d200441206a221229030037030020162014370300200a2013370300200b2011370300200029030021112000200f370300200220113703082012200629030037030020102007290300370300200e2008290300370300200c2009290300370300200420022903083703004100210403402004410174220d41017221160240200d41026a220d20054f0d00201620054f0d07200d20162000200d41286c6a2903002000201641286c6a290300541b21160b0240201620054f0d00200420054f0d052000201641286c6a220d2903002000200441286c6a22042903005a0d002006200441206a220a2903003703002007200441186a220b2903003703002008200441106a220c2903003703002009200441086a220e290300370300200d41086a2210290300210f200d41106a22122903002111200d41186a22152903002113200d2903002114200a200d41206a2203290300370300200b2013370300200c2011370300200e200f3703002004290300210f200420143703002002200f37030820032006290300370300201520072903003703002012200829030037030020102009290300370300200d2002290308370300201621040c010b0b200541014b0d000b0b200241306a24000f0b418cc30020042001103c000b418cc30020042005103c000b41fcc20020162001103c000b41fcc20020162005103c000b41b4c20020052001103c000bac0904097f017e0e7f017e230041306b22022400200041286a2103200041887f6a2104200041586a21054100210620014132492107410121080240024002400340024002400240200820014f0d002005200841286c6a210903402009290300200941286a2209290300540d0220092109200841016a22082001490d000b0b410021092008200146220a0d030c010b410121092008200146220a0d020b20070d012008417f6a220a20014f0d022009450d032000200a41286c6a2209290300210b20092000200841286c220c6a220a290300370300200241086a41206a220d200941206a220e290300370300200241086a41186a220f200941186a2210290300370300200241086a41106a2211200941106a2212290300370300200241086a41086a2213200941086a22142903003703002014200a41086a22152903003703002012200a41106a22162903003703002010200a41186a2217290300370300200e200a41206a22182903003703002002200b3703082018200d2903003703002017200f2903003703002016201129030037030020152013290300370300200a2002290308370300024020084102490d0020002008417e6a220d41286c6a22192903002009290300220b5a0d00200920192903003703002009290308211a2014201941086a290300370300200f200e29030037030020112010290300370300201320122903003703002012201941106a2903003703002010201941186a290300370300200e201941206a2903003703002002201a3703084100210e0240200d450d002004200c6a2109024003402009290300200b5a0d01200941286a2009290300370300200941c8006a200941206a290300370300200941c0006a200941186a290300370300200941386a200941106a290300370300200941306a200941086a290300370300200941586a2109200d417f6a220d0d000b200941286a21190c010b200941286a2119200d210e0b2019200b3703002000200e41286c6a22092002290308370308200941206a200f290300370300200941186a2011290300370300200941106a20132903003703000b200641016a21060240200120086b22124102490d00200a290300220b200a2903285a0d00200a200a41286a220d290300370300200a290308211a2015200d41086a290300370300200f201829030037030020112017290300370300201320162903003703002016200d41106a2903003703002017200d41186a2903003703002018200d41206a2903003703002002201a37030841012116024020124103490d002003200c6a21094101210e02400340200b200941286a220d2903005a0d01200941206a200941c8006a290300370300200941186a200941c0006a290300370300200941106a200941386a290300370300200941086a200941306a2903003703002009200d290300370300200e41026a2110200e41016a2216210e200d210920102012490d000c020b0b200e21162009210d0b200d200b370300200a201641286c6a22092002290308370308200941206a200f290300370300200941186a2011290300370300200941106a20132903003703000b20064105490d000b4100210a0b200241306a2400200a0f0b41ecc200200a2001103c000b41b4c20020082001103c000b0bdb3b02004180080bec282f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f73657373696f6e2f7372632f6c69622e72737365733a696e647365733a6c656e7365733a6c6c637365733a6e6c6e7365733a76616c00000000002f636865636b6f75742f7372632f6c6962636f72652f6f70732f61726974682e72730000000000000000000000000000617474656d707420746f20646976696465206279207a65726f00000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f616c6c206974656d7320636f6d652066726f6d2060766f74657273603b20666f7220616e206974656d20746f20626520696e2060766f7465727360207468657265206d757374206265206120766f746520726567697374657265643b2071656448617368206e6f7420657175616c52756e74696d65206d656d6f7279206578686175737465642e2041626f7274696e676c6962616c6c6f632f7261775f7665632e72736361706163697479206f766572666c6f7774696d3a64696454696d657374616d70206d7573742062652075706461746564206f6e636520696e2074686520626c6f636b2f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f74696d657374616d702f7372632f6c69622e727374696d3a76616c54696d657374616d70206d7573742062652066697273742065787472696e73696320696e2074686520626c6f636b54696d657374616d70206d7573742062652075706461746564206f6e6c79206f6e636520696e2074686520626c6f636b617373657274696f6e206661696c65643a206175782e69735f656d7074792829656e766578745f7365745f73746f726167656578745f6765745f73746f726167656578745f7472616e736665726578745f6372656174656d656d6f727963616c6c002f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f7374616b696e672f7372632f636f6e74726163742e72730000000000000000000000000000000000000000000000000000000000000000007372632f6c69622e72732f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f636f756e63696c2f7372632f6c69622e7273636f753a6e7874636f753a76636f636f753a76626f636f753a767273636f753a617072636f753a6c616374617267657420666f7220696e616374697669747920636c65616e7570206d75737420626520616374697665636f753a766770636f753a63616e616c6c206974656d7320696e2063616e64696461746573206c697374206172652072656769737465726564636f753a726567636f753a63626f636f753a636e6363616e6e6f742070726573656e74206f757473696465206f662070726573656e746174696f6e20706572696f64636f753a737373636f753a707373636f753a77696e6c6561646572626f617264206d757374206578697374207768696c652070726573656e7420706861736520616374697665636f753a61637470726573656e7465642063616e646964617465206d7573742062652063757272656e7463616e646964617465206d757374206e6f7420666f726d2061206475706c696361746564206d656d62657220696620656c656374656463616e646964617465206e6f7420776f72746879206f66206c6561646572626f61726470726573656e746572206d75737420686176652073756666696369656e7420736c61736861626c652066756e647300000000000000002f636865636b6f75742f7372632f6c6962636f72652f736c6963652f6d6f642e7273696e76616c69642063616e64696461746520736c6f7463616e64696461746520686173206e6f7420656e6f7567682066756e64736475706c69636174652063616e646964617465207375626d697373696f6e72657472616374696f6e20696e646578206d69736d6174636872657472616374696f6e20696e64657820696e76616c696463616e6e6f742072657472616374206e6f6e2d766f74657263616e6e6f742072657472616374207768656e2070726573656e74696e676261642074617267657420696e646578626164207265706f7274657220696e64657863616e6e6f74207265617020647572696e67206772616365207065726964766f746520696e646578206e6f742063757272656e74726561706572206d757374206265206120766f74657263616e6e6f74207265617020647572696e672070726573656e746174696f6e20706572696f64617373657274696f6e206661696c65643a202153656c663a3a70726573656e746174696f6e5f6163746976652829636f753a737473636f753a706475636f753a74726d636f753a706572636f753a63636f66696e616c6973652063616e206f6e6c792062652063616c6c656420616674657220612074616c6c7920697320737461727465642e72756e6e6572207570206d757374206265207265676973746572656400617474656d707420746f20646976696465206279207a65726f000000000000002f636865636b6f75742f7372632f6c6962636f72652f6f70732f61726974682e72730000000000000000000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f53746f7261676520726f6f74206d757374206d6174636820746861742063616c63756c617465642e2f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f6578656375746976652f7372632f6c69622e7273617373657274696f6e206661696c65643a206865616465722e6469676573742829203d3d20263c73797374656d3a3a4d6f64756c653c53797374656d3e3e3a3a6469676573742829416c6c207472616e73616374696f6e732073686f756c6420686176652074686520636f7272656374206e6f6e6365416c6c207472616e73616374696f6e732073686f756c642062652070726f7065726c79207369676e65645472616e73616374696f6e207472696520726f6f74206d7573742062652076616c69642e506172656e7420686173682073686f756c642062652076616c69642e7374726f616765206973206e6f74206e756c6c2c207468657265666f7265206d75737420626520612076616c696420747970656c6962636f72652f726573756c742e727373657269616c697a656420617267732073686f756c642062652070726f7669646564206279207468652072756e74696d653b0a090909636f72726563746c792073657269616c697a656420646174612073686f756c6420626520646573657269616c697a61626c653b0a0909097165642f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652d73616e64626f782f7372632f2e2e2f776974686f75745f7374642e72732f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f7374616b696e672f7372632f6c69622e72737374613a6c65637374613a7370657374613a6572617374613a6e73657374613a77696c3a7374613a7661630000000000000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f000000000000002f636865636b6f75742f7372632f6c6962636f72652f6f70732f61726974682e72737374613a6c6f63617373657274696f6e206661696c65643a20746f5f62616c616e6365202b2076616c7565203e20746f5f62616c616e6365617373657274696f6e206661696c65643a203c426f6e646167653c543e3e3a3a676574287472616e736163746f7229203c3d203c426f6e646167653c543e3e3a3a676574286465737429617373657274696f6e206661696c65643a2066726f6d5f62616c616e6365203e3d2076616c756543616e6e6f7420756e7374616b65206966206e6f7420616c7265616479207374616b65642e43616e6e6f74207374616b6520696620616c7265616479207374616b65642e7374613a666565617474656d707420746f207472616e7361637420776974686f757420656e6f7567682066756e647320746f20706179206665657374613a746f74617373657274696f6e206661696c65643a20266465737420213d207472616e736163746f72617373657274696f6e206661696c65643a2062203e3d2076616c756573746f72616765206973206e6f74206e756c6c2c207468657265666f7265206d75737420626520612076616c6964207479706552657175697265642076616c756573206d75737420626520696e2073746f726167652f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f636f756e63696c2f7372632f766f74696e672e7273636f763a706572696f64636f763a70726f636f763a707273636f763a766f74653a636f763a766f746572733a636f763a636f6f6c6f6666636f763a7665746f3a70726f706f73616c206d75737420657869737420746f206265207665746f65646f6e6c7920636f756e63696c6c6f7273206d6179207665746f20636f756e63696c2070726f706f73616c73617373657274696f6e206661696c65643a202153656c663a3a69735f7665746f6564282670726f706f73616c5f68617368294e6f206475706c69636174652070726f706f73616c7320616c6c6f776564617373657274696f6e206661696c65643a2053656c663a3a77696c6c5f7374696c6c5f62655f636f756e63696c6c6f725f6174286175782e7265665f696e746f28292c2065787069727929616c6c207175657565642070726f706f73616c20686173686573206d7573742068617665206173736f6369617465642070726f706f73616c732f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f64656d6f63726163792f7372632f6c69622e727364656d3a6c617564656d3a707562416c6c2063757272656e74207075626c69632070726f706f73616c73206861766520616e20616d6f756e74206c6f636b65646465706f7369746f727320616c7761797320657869737420666f722063757272656e742070726f706f73616c7364656d3a70657264656d3a6e787464656d3a72636f43616e6e6f7420696e6a6563742061207265666572656e64756d207468617420656e6473206561726c696572207468616e2070726563656564696e67207265666572656e64756d63616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75656c6962636f72652f6f7074696f6e2e7273002f636865636b6f75742f7372632f6c6962636f72652f736c6963652f6d6f642e72730000000000000000000000000000617474656d707420746f2063616c63756c617465207468652072656d61696e646572207769746820612064697669736f72206f66207a65726f000000000000002f636865636b6f75742f7372632f6c6962636f72652f6f70732f61726974682e727364656d3a6d696e64656d3a70706363616e206f6e6c79207365636f6e6420616e206578697374696e672070726f706f73616c7472616e736163746f72206d75737420686176652062616c616e636520746f207369676e616c20617070726f76616c2e766f746520676976656e20666f7220696e76616c6964207265666572656e64756d2e617373657274696f6e206661696c65643a203c7374616b696e673a3a4d6f64756c653c543e3e3a3a6465647563745f756e626f6e646564286175782e7265665f696e746f28292c206465706f7369742e3029617373657274696f6e206661696c65643a203c7374616b696e673a3a4d6f64756c653c543e3e3a3a6465647563745f756e626f6e646564286175782e7265665f696e746f28292c2076616c756529617373657274696f6e206661696c65643a2076616c7565203e3d2053656c663a3a6d696e696d756d5f6465706f736974282900000000000000002f636865636b6f75742f7372632f6c6962636f72652f736c6963652f6d6f642e727300000000000000000000000000002f636865636b6f75742f7372632f6c6962616c6c6f632f736c6963652e7273696e7465726e616c206572726f723a20656e746572656420756e726561636861626c6520636f64652f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f636f6e73656e7375732f7372632f6c69622e72733a617574683a7379733a6f6c640000007379733a6e756d7379733a7068617379733a7478727379733a726e647379733a787469426c6f636b206e756d626572206d6179206e65766572206265207a65726f2f55736572732f726f626572742f70726f6a656374732f6574682f706f6c6b61646f742f7375627374726174652f72756e74696d652f73797374656d2f7372632f6c69622e72737379733a6e6f6e7379733a7874647379733a6469676c656e5f5f5068616e746f6d4974656d2073686f756c64206e6576657220626520757365642e3a636f6465000000000000002f636865636b6f75742f7372632f6c6962636f72652f736c6963652f736f72742e7273617373657274696f6e206661696c65643a206d6964203c3d206c656e6c6962636f72652f736c6963652f6d6f642e7273000000000000000000000000002f636865636b6f75742f7372632f6c6962636f72652f736c6963652f6d6f642e7273617373657274696f6e206661696c65643a20696e646578203c3d206c656e6c6962616c6c6f632f7665632e7273617373657274696f6e206661696c65643a20696e646578203c206c656e0041ec300be0124f1600002800000000040000480000003300000001000000711700002300000000040000480000003300000001000000a0040000190000007004000022000000c50100002d000000c00400003900000070040000220000001a0200002d0000004f160000280000001f0e0000530000006f000000090000004f160000280000001f0e00005300000078000000090000009c050000110000008905000013000000e502000005000000df17000014000000d008000005000000df17000014000000d608000005000000fe130000110000009203000005000000b40500002b000000df0500004a0000004b000000030000007117000023000000df0500004a0000002b000000010000008e06000020000000df0500004a00000041000000030000005e06000030000000df0500004a0000004200000003000000300600002e000000df0500004a0000004300000003000000f00600004d0000008700000012000000f00600004d0000008800000012000000f00600004d000000890000000f000000f00600004d0000007000000019000000f00600004d0000007100000019000000f00600004d000000720000000f000000f00600004d0000005e00000016000000f00600004d0000005f00000012000000f00600004d0000003d00000016000000f00600004d0000003e00000018000000f00600004d0000003f000000130000004f16000028000000df0500004a0000002b000000010000005e0700000a000000a8000000020000004f1600002800000068070000480000006500000001000000711700002300000068070000480000006500000001000000ed0a00002e0000006807000048000000e3000000030000006807000048000000e400000003000000c70a0000260000006807000048000000f800000003000000b10a0000160000006807000048000000f9000000030000009b0a0000160000006807000048000000fb000000030000007d0a00001e0000006807000048000000fc000000030000008009000022000000200900000a0000006b0a000012000000680700004800000000010000030000005b0a000010000000680700004800000001010000030000003d0a00001e00000068070000480000001b01000003000000250a00001800000068070000480000001c010000030000000d0a00001800000068070000480000001f01000003000000f40900001900000068070000480000002001000003000000d60900001e00000068070000480000002901000003000000b80900001e00000068070000480000002a01000003000000a20900001600000068070000480000002f010000030000008009000022000000260900000e000000680700004800000044010000030000004a0900002e00000068070000480000004a01000003000000270900002300000068070000480000004d01000003000000f1080000360000006807000048000000500100000400000080090000220000003c02000023000000e00b000039000000b00b0000220000001a0200002d000000900b000019000000b00b000022000000c50100002d0000004f0d00001c000000410c00004a00000050000000030000002b0d000024000000410c00004a00000058000000030000008b0c000048000000410c00004a0000009c00000003000000190c000028000000410c00004a000000a400000003000000010d00002a000000410c00004a000000850000000e000000d30c00002e000000410c00004a0000008b000000040000009e0d000011000000b1030000050000004f160000280000001f0e00005300000008010000090000004f16000028000000720e0000480000005b00000001000000f00e000039000000300f0000220000001a0200002d000000201000001f000000720e000048000000c800000003000000fb0f000025000000720e000048000000d6000000040000007117000023000000720e0000480000005b00000001000000d40f000027000000720e00004800000030020000030000008a0f00004a000000720e0000480000003302000003000000590f000031000000720e00004800000034020000030000000600000000000000010000000700000008000000090000000a0000000b0000000c0000000d0000004610000033000000720e0000480000005702000003000000d40f000027000000720e00004800000016020000030000008010000025000000720e00004800000022020000030000000e00000018000000040000000f000000100000001100000012000000130000001400000015000000a51000001c000000720e00004800000015010000030000004f16000028000000161100004b0000001b000000010000007117000023000000161100004b0000001b000000010000003c1200004b000000161100004b0000004e000000030000001e1200001e000000161100004b0000005200000003000000ec11000032000000161100004b0000005300000003000000c11100002b000000161100004b0000006900000003000000a111000020000000161100004b0000006a000000030000004f16000028000000c01200004a0000003900000001000000401400003900000080140000220000001a0200002d00000010140000220000003c02000023000000d31300002b000000fe130000110000004f010000150000008c13000047000000c01200004a000000d9000000040000007117000023000000c01200004a0000003900000001000000c615000032000000c01200004a0000009300000003000000781500004e000000c01200004a00000094000000030000002615000052000000c01200004a000000a2000000030000000415000022000000c01200004a000000ac00000004000000d414000030000000c01200004a000000af000000040000000016000022000000200900000a0000000016000022000000260900000e000000301600001f000000b20200001e000000301600001f000000b5020000360000004f16000028000000771600004a0000003b00000001000000f41600001e00000012170000470000007d000000030000007117000023000000771600004a0000003b0000000100000000180000220000003d02000023000000c31700001c000000df17000014000000cc0100000d000000a017000023000000910200001d00000000180000220000003c02000023000000a017000023000000a70000003a000000a017000023000000ae00000030000000221800001e000000401800000f00000047030000090000004f1800001d000000401800000f0000006f03000009000000000c076c696e6b696e670302cc3b00ff8401046e616d6501f68401e40100146578745f6765745f73746f726167655f696e746f010a6578745f6d616c6c6f6302086578745f66726565030c6578745f74776f785f313238040f6578745f7365745f73746f7261676505116578745f636c6561725f73746f72616765060a6578745f6d656d636d7007186578745f656e756d6572617465645f747269655f726f6f74080e6578745f7072696e745f75746638090d6578745f7072696e745f6e756d0a0a6578745f6d656d6370790b0b6578745f6d656d6d6f76650c0a6578745f6d656d7365740d166578745f73616e64626f785f6d656d6f72795f6e65770e176578745f73616e64626f785f696e7374616e74696174650f126578745f73616e64626f785f696e766f6b6510166578745f73616e64626f785f6d656d6f72795f67657411166578745f73616e64626f785f6d656d6f72795f736574120e6578745f626c616b65325f323536130d6578745f7072696e745f68657814106578745f73746f726167655f726f6f7415126578745f656432353531395f76657269667916773c7375627374726174655f72756e74696d655f7072696d6974697665733a3a67656e657269633a3a4469676573743c4974656d3e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a686366613333306530633737643531613517066d656d73657418393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a6838313936363666396265663463633931194b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68646339636565313232303362623835621a4b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68353632363038323130343238623465631b4b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68653335663962326562366332393066621c24616c6c6f633a3a616c6c6f633a3a6f6f6d3a3a68613732396634666436376436376633391d8b013c7375627374726174655f72756e74696d655f7072696d6974697665733a3a67656e657269633a3a4865616465723c4e756d6265722c20486173682c204469676573744974656d3e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a68306561356233376164373865313636341e066d656d6370791f573c616c6c6f633a3a7665633a3a5665633c75383e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a683135633166653139313338396266313020a0013c7375627374726174655f72756e74696d655f7072696d6974697665733a3a67656e657269633a3a556e636865636b656445787472696e7369633c4163636f756e7449642c20496e6465782c2043616c6c2c205369676e61747572653e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a686666343637646332363738333264373321583c616c6c6f633a3a626f7865643a3a426f783c543e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a683733356130396161356431326165663322345f5a4e34636f726533707472313364726f705f696e5f706c61636531376834616536316365303665356638316331452e3138363723393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a6835646661343736643064326634353464244b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6831623238376135353263616531393734252b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a683461653631636530366535663831633126a0013c7375627374726174655f72756e74696d655f7072696d6974697665733a3a67656e657269633a3a556e636865636b656445787472696e7369633c4163636f756e7449642c20496e6465782c2043616c6c2c205369676e61747572653e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a656e636f64653a3a6862346461326637656565363934383334273a3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a726573657276653a3a6861623665336266623631626431356231285a3c706f6c6b61646f745f72756e74696d653a3a43616c6c206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a656e636f64653a3a68393931323239363862316130396334322934636f72653a3a736c6963653a3a736c6963655f696e6465785f6c656e5f6661696c3a3a68363938393263393438396363616162622a363c5420617320636f72653a3a636f6e766572743a3a496e746f3c553e3e3a3a696e746f3a3a68353666353936643634373237343833632b8d015f5a4e34395f244c5424616c6c6f632e2e7261775f7665632e2e526177566563244c54245424432424753230244124475424244754243131616c6c6f636174655f696e32385f24753762242475376224636c6f737572652475376424247537642431376838343739373131363565646633646537452e6c6c766d2e3632303339333138363734383337373033382c493c7375627374726174655f72756e74696d655f73657373696f6e3a3a4d6f64756c653c543e3e3a3a726f746174655f73657373696f6e3a3a68663938353764613535613230616562632d2e636f72653a3a6f7074696f6e3a3a6578706563745f6661696c65643a3a68653163323536643932353565393632662e463c7375627374726174655f72756e74696d655f73797374656d3a3a4d6f64756c653c543e3e3a3a626c6f636b5f6e756d6265723a3a68313635316433343866326134346235372f527375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653a3a726571756972653a3a6861313164373161613165393864646363304b3c54206173207375627374726174655f636f6465633a3a6b657965647665633a3a4b657965645665633e3a3a746f5f6b657965645f7665633a3a6866346339626432626430633262303964314f7375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a756e6861736865643a3a6765745f6f725f64656661756c743a3a6837623835343430353965333637333638324b3c54206173207375627374726174655f636f6465633a3a6b657965647665633a3a4b657965645665633e3a3a746f5f6b657965645f7665633a3a686466633130663239626637643964313133523c636f72653a3a697465723a3a436c6f6e65643c493e20617320636f72653a3a697465723a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a683032316562386262636530636661323334583c28412c204229206173207375627374726174655f72756e74696d655f7072696d6974697665733a3a7472616974733a3a45786563757461626c653e3a3a657865637574653a3a6863373034616135306561623165643139359f017375627374726174655f72756e74696d655f636f756e63696c3a3a766f74696e673a3a3c696d706c207375627374726174655f72756e74696d655f7072696d6974697665733a3a7472616974733a3a45786563757461626c6520666f72207375627374726174655f72756e74696d655f636f756e63696c3a3a4d6f64756c653c543e3e3a3a657865637574653a3a683730353563353930613161356165386336597375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653a3a6765745f6f725f64656661756c743a3a686432656434346461383333643033393337473c7375627374726174655f72756e74696d655f64656d6f63726163793a3a4d6f64756c653c543e3e3a3a6465706f7369745f6f663a3a6864356630353863656136333834623032382b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a683436373662323538363033663731396439076d656d6d6f76653a563c616c6c6f633a3a7665633a3a5665633c543e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a68653630626561346331643730393736643b29636f72653a3a70616e69636b696e673a3a70616e69633a3a68313137323734323133346465393231303c36636f72653a3a70616e69636b696e673a3a70616e69635f626f756e64735f636865636b3a3a68363630346666363535326232666562323d413c7375627374726174655f72756e74696d655f7374616b696e673a3a4d6f64756c653c543e3e3a3a726566756e643a3a68633362613564623165383537303661313e86013c7375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a52756e74696d6553746f72616765206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653e3a3a7075743a3a68656161636164343939313263336335363f4e3c7375627374726174655f72756e74696d655f64656d6f63726163793a3a4d6f64756c653c543e3e3a3a696e6a6563745f7265666572656e64756d3a3a6863653264346134373837396137323635404c3c7375627374726174655f72756e74696d655f64656d6f63726163793a3a4d6f64756c653c543e3e3a3a7265666572656e64756d5f696e666f3a3a68356430386136656330613537303133384134616c6c6f633a3a7261775f7665633a3a63617061636974795f6f766572666c6f773a3a686334316261316636346437363033373942473c7375627374726174655f72756e74696d655f64656d6f63726163793a3a4d6f64756c653c543e3e3a3a766f746572735f666f723a3a686539303831303936616133363162333843473c7375627374726174655f72756e74696d655f7374616b696e673a3a4d6f64756c653c543e3e3a3a667265655f62616c616e63653a3a6862653837643063316262386365323731444b3c7375627374726174655f72756e74696d655f7374616b696e673a3a4d6f64756c653c543e3e3a3a72657365727665645f62616c616e63653a3a6865623966656232366134653538343433453e7375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653a3a656e636f64653a3a6835666661663632366231656464306238464d3c7375627374726174655f72756e74696d655f64656d6f63726163793a3a4d6f64756c653c543e3e3a3a636c6561725f7265666572656e64756d3a3a683065326261346565363332393465346547597375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653a3a6765745f6f725f64656661756c743a3a686364633932303862653939363865303148423c7375627374726174655f72756e74696d655f7374616b696e673a3a4d6f64756c653c543e3e3a3a6e65775f6572613a3a6834333536343534386630353530373663493a3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a726573657276653a3a68666363653264376532363234386132664a86013c7375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a52756e74696d6553746f72616765206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653e3a3a7075743a3a68383237346662353239326530653935384b345f5a4e34636f726533707472313364726f705f696e5f706c61636531376834616536316365303665356638316331452e313933304c6d3c7375627374726174655f72756e74696d655f696f3a3a426c616b6554776f323536206173207375627374726174655f72756e74696d655f696f3a3a48617368696e673e3a3a656e756d6572617465645f747269655f726f6f743a3a68373531363037396363363934643362344d11727573745f626567696e5f756e77696e644e08727573745f6f6f6d4f393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a683934323963666464366239343939316550463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a686638333437636630333536663137633751573c616c6c6f633a3a7665633a3a5665633c75383e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a656e636f64653a3a683562613039363631356162393163653352066d616c6c6f63530466726565542d636f72653a3a70616e69636b696e673a3a70616e69635f666d743a3a68343066313034346338363430636537655536636f72653a3a736c6963653a3a736c6963655f696e6465785f6f726465725f6661696c3a3a6838313330343432303532386232613865564b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6832653739643730623164373537336236574b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6834333337316334333361323734393066584b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6835653639393561353131376336316261594b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68393332616436626561643261373838325a4b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68643335646131306634323134323937335b4b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68306464323861643233626338353865665c4b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68323236353666303366323931393738325d4b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68626461366634636434623039663433665e4b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a68303139363230336638363464396133345f4b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6862396532346165643662353163376566604b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6863613166626538323365653436383431614b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6862323236663235303162633264306264624b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6836333364303435386436356363393863634b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6866616563633135353361633333613835644b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6861356133316562653333306639326635654b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6832376361366365373461626664666264664b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a6836323932333830613439323131383638674b3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a616c6c6f636174655f696e3a3a7b7b636c6f737572657d7d3a3a686163306336633862333061653039663768393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a683063653362633633326336616364326169463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a68376636633966373761363663373937636a393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a68343038373662383637653261396330396b463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a68383863616164303861633361623961646c393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a68353262366336626163626135633061386d463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a68623437366264373632363935623330336e463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a68326132353062613265323263336337396f393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a683636323532376436666130383237343470463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a683365363965636439633766616165306371393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a683764313835303766636661646366353972463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a686335663366366638303064303431353273463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a683738366438643636323036316564613074393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a686261353735613734386133306233306375463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a686532653262373435333764623266386476393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a686461363738663731646162613761666577463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a683863323961323539383931333766343978393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a686463356361653038383331346337376679463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a68326161633766383935303734356563397a393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a68646433633635373262343532613031347b463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a68626462393236656664376432346539387c393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a68653333366232306266663138383930347d463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a68346633396332623430636437333963347e393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a68653338643736373866303134323236317f463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a68363862383536613030333235623134628001393c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a68656330653961326130616435633466648101463c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a646f75626c653a3a7b7b636c6f737572657d7d3a3a683838636134306365646335303261316282013a3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a726573657276653a3a683534343836366335623963663730373583013a3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a726573657276653a3a683734393131616635323537633037393784013a3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a726573657276653a3a683735663262666638613830643365623985013a3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a726573657276653a3a683863616636616537333938376436346386013a3c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e3e3a3a726573657276653a3a68653033623365323432663733346433308701503c616c6c6f633a3a7261775f7665633a3a5261775665633c542c20413e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68393537643736623535353030646266348801c3013c616c6c6f633a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75743c27613e2c204b2c20562c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3e3a3a696e736572743a3a68353731386465393136646662313737328901c3013c616c6c6f633a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75743c27613e2c204b2c20562c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4c6561663e2c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3e3a3a696e736572743a3a68373463373532366661626363646564358a01c7013c616c6c6f633a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75743c27613e2c204b2c20562c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496e7465726e616c3e2c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3e3a3a696e736572743a3a68343437336564333066636136316137308b01cb013c616c6c6f633a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75743c27613e2c204b2c20562c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496e7465726e616c3e2c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3e3a3a696e736572745f6669743a3a68326333636630383765623331663734338c01c7013c616c6c6f633a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75743c27613e2c204b2c20562c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496e7465726e616c3e2c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3e3a3a696e736572743a3a68386365653235383631313166343439668d01cb013c616c6c6f633a3a62747265653a3a6e6f64653a3a48616e646c653c616c6c6f633a3a62747265653a3a6e6f64653a3a4e6f64655265663c616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a4d75743c27613e2c204b2c20562c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a496e7465726e616c3e2c20616c6c6f633a3a62747265653a3a6e6f64653a3a6d61726b65723a3a456467653e3e3a3a696e736572745f6669743a3a68663630346163643262623861646636648e013f7375627374726174655f72756e74696d655f7374616b696e673a3a636f6e74726163743a3a657865637574653a3a68666332303937306166616238363265658f01507375627374726174655f72756e74696d655f7374616b696e673a3a636f6e74726163743a3a657865637574653a3a6578745f7365745f73746f726167653a3a68633235623630316631346635383463389001507375627374726174655f72756e74696d655f7374616b696e673a3a636f6e74726163743a3a657865637574653a3a6578745f6765745f73746f726167653a3a683736613962653764306632343937316491014d7375627374726174655f72756e74696d655f7374616b696e673a3a636f6e74726163743a3a657865637574653a3a6578745f7472616e736665723a3a683632326464636435333464616431363892014b7375627374726174655f72756e74696d655f7374616b696e673a3a636f6e74726163743a3a657865637574653a3a6578745f6372656174653a3a68396363303263356565333664303032379301417375627374726174655f72756e74696d655f73616e64626f783a3a696d703a3a64697370617463685f7468756e6b3a3a683939386139316165306131663037633594017f3c7375627374726174655f72756e74696d655f7374616b696e673a3a4f7665726c61794163636f756e7444623c27612c20543e206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a7365745f73746f726167653a3a683035373136666235306661623636643395017f3c7375627374726174655f72756e74696d655f7374616b696e673a3a4f7665726c61794163636f756e7444623c27612c20543e206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a683031326363613031653639396364643996013b3c616c6c6f633a3a62747265653a3a6d61703a3a42547265654d61703c4b2c20563e3e3a3a6765743a3a6865383334633533623431306361303264970134616c6c6f633a3a62747265653a3a7365617263683a3a7365617263685f747265653a3a68613435343266643037623530613430349801653c616c6c6f633a3a62747265653a3a6d61703a3a42547265654d61703c4b2c20563e20617320636f72653a3a697465723a3a7472616974733a3a496e746f4974657261746f723e3a3a696e746f5f697465723a3a68323337613934396465633834333065369901553c616c6c6f633a3a62747265653a3a6d61703a3a496e746f497465723c4b2c20563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68663765393037343761386636613332309a01453c616c6c6f633a3a62747265653a3a6d61703a3a566163616e74456e7472793c27612c204b2c20563e3e3a3a696e736572743a3a68616639316138373166656365356538369b017c3c7375627374726174655f72756e74696d655f7374616b696e673a3a4f7665726c61794163636f756e7444623c27612c20543e206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a6765745f636f64653a3a68636634333438326462356135353864349c01793c7375627374726174655f72756e74696d655f7374616b696e673a3a4f7665726c61794163636f756e7444623c27612c20543e206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a6d657267653a3a68306134623934346339646231343665329d01653c616c6c6f633a3a62747265653a3a6d61703a3a42547265654d61703c4b2c20563e20617320636f72653a3a697465723a3a7472616974733a3a496e746f4974657261746f723e3a3a696e746f5f697465723a3a68336331666362643134643933623735619e01553c616c6c6f633a3a62747265653a3a6d61703a3a496e746f497465723c4b2c20563e20617320636f72653a3a6f70733a3a64726f703a3a44726f703e3a3a64726f703a3a68626262323936373561396334396234399f012e636f72653a3a726573756c743a3a756e777261705f6661696c65643a3a6866313734613335313966343639373764a0016c3c7375627374726174655f72756e74696d655f64656d6f63726163793a3a5072697643616c6c3c543e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a6836313935643931346137663363333636a1010b617574686f726974696573a201563c616c6c6f633a3a7665633a3a5665633c543e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a656e636f64653a3a6834663037313434396230306561366362a30110696e697469616c6973655f626c6f636ba401443c7375627374726174655f72756e74696d655f73797374656d3a3a4d6f64756c653c543e3e3a3a696e697469616c6973653a3a6832326337643330356130373863393035a5010f6170706c795f65787472696e736963a601783c7375627374726174655f72756e74696d655f6578656375746976653a3a4578656375746976653c53797374656d2c20426c6f636b2c205061796d656e742c2046696e616c69736174696f6e3e3e3a3a6170706c795f65787472696e7369635f696e6e65723a3a6836303438333536646465653962326663a7010d657865637574655f626c6f636ba801443c7375627374726174655f72756e74696d655f73797374656d3a3a4d6f64756c653c543e3e3a3a626c6f636b5f686173683a3a6838333036626630323533366265386266a901523c616c6c6f633a3a7665633a3a5665633c543e20617320616c6c6f633a3a7665633a3a53706563457874656e643c542c20493e3e3a3a66726f6d5f697465723a3a6863383933623037366263653438356361aa01423c7375627374726174655f72756e74696d655f73797374656d3a3a4d6f64756c653c543e3e3a3a66696e616c6973653a3a6835643638333133636232646637366465ab010e66696e616c6973655f626c6f636bac010f76616c696461746f725f636f756e74ad010a76616c696461746f7273ae01793c7375627374726174655f72756e74696d655f636f756e63696c3a3a43616c6c3c543e206173207375627374726174655f72756e74696d655f737570706f72743a3a64697370617463683a3a417578446973706174636861626c653e3a3a64697370617463683a3a6836363435303363376332313138323333af01563c55206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c20563e3e3a3a6578697374733a3a6837323366316130366637356338376235b001473c7375627374726174655f72756e74696d655f636f756e63696c3a3a4d6f64756c653c543e3e3a3a72656d6f76655f766f7465723a3a6837326137643235373861356638346333b101563c55206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c20563e3e3a3a696e736572743a3a6830396163353435653961376538333833b2014a3c7375627374726174655f72756e74696d655f7374616b696e673a3a4d6f64756c653c543e3e3a3a6465647563745f756e626f6e6465643a3a6835366234393235363039633261333763b3014c3c7375627374726174655f72756e74696d655f636f756e63696c3a3a4d6f64756c653c543e3e3a3a766f7465725f6c6173745f6163746976653a3a6862336538666236373336303764663063b401473c7375627374726174655f72756e74696d655f636f756e63696c3a3a4d6f64756c653c543e3e3a3a617070726f76616c735f6f663a3a6865333163643561323839663761303839b5014d3c7375627374726174655f72756e74696d655f636f756e63696c3a3a4d6f64756c653c543e3e3a3a63616e6469646174655f7265675f696e666f3a3a6866303561313635613136333135646633b601563c616c6c6f633a3a7665633a3a5665633c543e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a6831613262363530646163366431306537b70186013c7375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a52756e74696d6553746f72616765206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653e3a3a7075743a3a6866373862303163316265363933623132b801563c616c6c6f633a3a7665633a3a5665633c543e206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a656e636f64653a3a6862636662316161343963386239396538b901543c636f72653a3a697465723a3a436861696e3c412c20423e20617320636f72653a3a697465723a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6839313464643736343236613933323338ba01563c7375627374726174655f72756e74696d655f64656d6f63726163793a3a4d6f64756c653c543e3e3a3a696e7465726e616c5f73746172745f7265666572656e64756d3a3a6864663562353935316539353236643238bb01527375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653a3a726571756972653a3a6862646338666238653461356339396261bc0186013c7375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a52756e74696d6553746f72616765206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653e3a3a7075743a3a6836363231356566633664633732336432bd015e3c706f6c6b61646f745f72756e74696d653a3a5072697643616c6c206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a6465636f64653a3a6836636664343364363366653539376139be013e7375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653a3a656e636f64653a3a6834356437316332383730346338366538bf01345f5a4e34636f726533707472313364726f705f696e5f706c61636531376834616536316365303665356638316331452e31383434c001473c7375627374726174655f72756e74696d655f73797374656d3a3a4d6f64756c653c543e3e3a3a6163636f756e745f696e6465783a3a6830663032313835306531326631353532c1016d3c706f6c6b61646f745f72756e74696d653a3a43616c6c206173207375627374726174655f72756e74696d655f737570706f72743a3a64697370617463683a3a417578446973706174636861626c653e3a3a64697370617463683a3a6862353365306137383562356439313664c2012e636f72653a3a726573756c743a3a756e777261705f6661696c65643a3a6835636361383862626431396436663637c3012e636f72653a3a726573756c743a3a756e777261705f6661696c65643a3a6861636366363539333334346266343932c4012d636f72653a3a736c6963653a3a736f72743a3a726563757273653a3a6865653866663861633636343163366337c501563c55206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c20563e3e3a3a696e736572743a3a6836643335643961613335663530373466c601773c7375627374726174655f72756e74696d655f7374616b696e673a3a4469726563744163636f756e744462206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a6839366364653364613533393430373432c701713c7375627374726174655f72756e74696d655f7374616b696e673a3a4469726563744163636f756e744462206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a6d657267653a3a6863386138646538333035626335356661c8015e3c616c6c6f633a3a62747265653a3a6d61703a3a496e746f497465723c4b2c20563e20617320636f72653a3a697465723a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6839663430373961306139316533623539c901563c55206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c20563e3e3a3a696e736572743a3a6839633838336432616334356335643565ca015e3c616c6c6f633a3a62747265653a3a6d61703a3a496e746f497465723c4b2c20563e20617320636f72653a3a697465723a3a6974657261746f723a3a4974657261746f723e3a3a6e6578743a3a6831353032303864643239373239616232cb013e7375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653a3a656e636f64653a3a6866653733303335653834393636616231cc012b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6837313232393564313131373938333732cd01773c7375627374726174655f72756e74696d655f7374616b696e673a3a4469726563744163636f756e744462206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a6765745f73746f726167653a3a6865626533633663393533393837616132ce01743c7375627374726174655f72756e74696d655f7374616b696e673a3a4469726563744163636f756e744462206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a6765745f636f64653a3a6837376330653737383334326563333934cf01773c7375627374726174655f72756e74696d655f7374616b696e673a3a4469726563744163636f756e744462206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a7365745f73746f726167653a3a6862663865653331383633303066393130d001743c7375627374726174655f72756e74696d655f7374616b696e673a3a4469726563744163636f756e744462206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a7365745f636f64653a3a6834393266643631333433343565656533d101773c7375627374726174655f72756e74696d655f7374616b696e673a3a4469726563744163636f756e744462206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a7365745f62616c616e63653a3a6861303936363266636534323061373632d2013e3c616c6c6f633a3a62747265653a3a6d61703a3a42547265654d61703c4b2c20563e3e3a3a696e736572743a3a6863313238323330343366616132306235d3012b636f72653a3a7074723a3a64726f705f696e5f706c6163653a3a6862623666313834333462363831646364d4017f3c7375627374726174655f72756e74696d655f7374616b696e673a3a4f7665726c61794163636f756e7444623c27612c20543e206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a6765745f62616c616e63653a3a6864333339636666326536626431326136d5017c3c7375627374726174655f72756e74696d655f7374616b696e673a3a4f7665726c61794163636f756e7444623c27612c20543e206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a7365745f636f64653a3a6832353031306366393163383531653633d6017f3c7375627374726174655f72756e74696d655f7374616b696e673a3a4f7665726c61794163636f756e7444623c27612c20543e206173207375627374726174655f72756e74696d655f7374616b696e673a3a4163636f756e7444623c543e3e3a3a7365745f62616c616e63653a3a6835663038363634343266663639663034d70186013c7375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a52756e74696d6553746f72616765206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653e3a3a7075743a3a6833663831363961656164316536306634d8015e3c706f6c6b61646f745f72756e74696d653a3a5072697643616c6c206173207375627374726174655f636f6465633a3a736c696361626c653a3a536c696361626c653e3a3a656e636f64653a3a6864323261663136323532663732653865d901587375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653a3a74616b655f6f725f70616e69633a3a6865373635393838373032386265316365da01597375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a67656e657261746f723a3a53746f726167653a3a6765745f6f725f64656661756c743a3a6834623732396637663566373061363932db0181013c7375627374726174655f72756e74696d655f636f756e63696c3a3a766f74696e673a3a43616c6c3c543e206173207375627374726174655f72756e74696d655f737570706f72743a3a64697370617463683a3a417578446973706174636861626c653e3a3a64697370617463683a3a6830653834363332383930313361343764dc014a3c7375627374726174655f72756e74696d655f636f756e63696c3a3a766f74696e673a3a4d6f64756c653c543e3e3a3a7665746f5f6f663a3a6862306633653061333063356237626537dd01563c55206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c20563e3e3a3a696e736572743a3a6834336534383363363337326338613963de01563c55206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c20563e3e3a3a696e736572743a3a6866323533306336323935613261646262df01563c55206173207375627374726174655f72756e74696d655f737570706f72743a3a73746f726167653a3a53746f726167654d61703c4b2c20563e3e3a3a696e736572743a3a6863373164346434623063343438383037e0014c3c706f6c6b61646f745f72756e74696d653a3a5072697643616c6c20617320636f72653a3a636c6f6e653a3a436c6f6e653e3a3a636c6f6e653a3a6833623430356561333864626335613735e10134636f72653a3a736c6963653a3a736f72743a3a627265616b5f7061747465726e733a3a6836346333343639613537386236366265e2012e636f72653a3a736c6963653a3a736f72743a3a68656170736f72743a3a6830386534373738303065643562646365e3013c636f72653a3a736c6963653a3a736f72743a3a7061727469616c5f696e73657274696f6e5f736f72743a3a6838643731323265613337623036313336",
-	"0x0346fb0f1ce64e1a02c4959d38ebad38": "0x00000000"
-}},
-"bootNodes": [
-	"/ip4/104.211.54.233/tcp/30333/p2p/QmRMGcQh69t8a8YwzHkofVo9SFr7ffggUwhAYjVSTChmrd",
-	"/ip4/104.211.48.51/tcp/30333/p2p/QmWCnXrhM1in1qPqVT3rDXQEJHedAzbPDMimdjqy2P9fGn",
-	"/ip4/104.211.48.247/tcp/30333/p2p/QmY33GW69TnTsdQWjAkxJR1GrWTdeV1PmzzcSmUay4HvAB",
-	"/ip4/40.114.120.164/tcp/30333/p2p/QmWzYU5X1NpFrprD1YZF5Lcj9aE5WF4QEg5FpvQx5XGWG7",
-	"/ip4/40.117.153.33/tcp/30333/p2p/QmSz8qCADMmi92QB8dTqMPu56JYQQKZBAHz7y8KXjvqcvW"
-],
-"telemetryUrl": "wss://telemetry.polkadot.io/submit/"
-}
diff --git a/substrate/polkadot/service/src/chain_spec.rs b/substrate/polkadot/service/src/chain_spec.rs
deleted file mode 100644
index dcf487de0bd2d96bd7271d011a367a2044a0f90a..0000000000000000000000000000000000000000
--- a/substrate/polkadot/service/src/chain_spec.rs
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Polkadot chain configurations.
-
-use ed25519;
-use primitives::AuthorityId;
-use polkadot_runtime::{GenesisConfig, ConsensusConfig, CouncilConfig, DemocracyConfig,
-	SessionConfig, StakingConfig, TimestampConfig};
-use service::ChainSpec;
-
-const STAGING_TELEMETRY_URL: &str = "wss://telemetry.polkadot.io/submit/";
-
-pub fn poc_1_testnet_config() -> Result<ChainSpec<GenesisConfig>, String> {
-	ChainSpec::from_embedded(include_bytes!("../res/krummelanke.json"))
-}
-
-fn staging_testnet_config_genesis() -> GenesisConfig {
-	let initial_authorities = vec![
-		hex!["82c39b31a2b79a90f8e66e7a77fdb85a4ed5517f2ae39f6a80565e8ecae85cf5"].into(),
-		hex!["4de37a07567ebcbf8c64568428a835269a566723687058e017b6d69db00a77e7"].into(),
-		hex!["063d7787ebca768b7445dfebe7d62cbb1625ff4dba288ea34488da266dd6dca5"].into(),
-		hex!["8101764f45778d4980dadaceee6e8af2517d3ab91ac9bec9cd1714fa5994081c"].into(),
-	];
-	let endowed_accounts = vec![
-		hex!["f295940fa750df68a686fcf4abd4111c8a9c5a5a5a83c4c8639c451a94a7adfd"].into(),
-	];
-	GenesisConfig {
-		consensus: Some(ConsensusConfig {
-			code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm").to_vec(),	// TODO change
-			authorities: initial_authorities.clone(),
-		}),
-		system: None,
-		session: Some(SessionConfig {
-			validators: initial_authorities.iter().cloned().map(Into::into).collect(),
-			session_length: 60,	// that's 5 minutes per session.
-			broken_percent_late: 50,
-		}),
-		staking: Some(StakingConfig {
-			current_era: 0,
-			intentions: initial_authorities.iter().cloned().map(Into::into).collect(),
-			transaction_base_fee: 100,
-			transaction_byte_fee: 1,
-			existential_deposit: 500,
-			transfer_fee: 0,
-			creation_fee: 0,
-			reclaim_rebate: 0,
-			early_era_slash: 10000,
-			session_reward: 100,
-			balances: endowed_accounts.iter().map(|&k|(k, 1u128 << 60)).collect(),
-			validator_count: 12,
-			sessions_per_era: 12,	// 1 hour per era
-			bonding_duration: 24,	// 1 day per bond.
-		}),
-		democracy: Some(DemocracyConfig {
-			launch_period: 12 * 60 * 24,	// 1 day per public referendum
-			voting_period: 12 * 60 * 24 * 3,	// 3 days to discuss & vote on an active referendum
-			minimum_deposit: 5000,	// 12000 as the minimum deposit for a referendum
-		}),
-		council: Some(CouncilConfig {
-			active_council: vec![],
-			candidacy_bond: 5000,	// 5000 to become a council candidate
-			voter_bond: 1000,		// 1000 down to vote for a candidate
-			present_slash_per_voter: 1,	// slash by 1 per voter for an invalid presentation.
-			carry_count: 6,		// carry over the 6 runners-up to the next council election
-			presentation_duration: 12 * 60 * 24,	// one day for presenting winners.
-			approval_voting_period: 12 * 60 * 24 * 2,	// two days period between possible council elections.
-			term_duration: 12 * 60 * 24 * 24,	// 24 day term duration for the council.
-			desired_seats: 0, // start with no council: we'll raise this once the stake has been dispersed a bit.
-			inactive_grace_period: 1,	// one addition vote should go by before an inactive voter can be reaped.
-
-			cooloff_period: 12 * 60 * 24 * 4, // 4 day cooling off period if council member vetoes a proposal.
-			voting_period: 12 * 60 * 24, // 1 day voting period for council members.
-		}),
-		parachains: Some(Default::default()),
-		timestamp: Some(TimestampConfig {
-			period: 5,					// 5 second block time.
-		}),
-	}
-}
-
-/// Staging testnet config.
-pub fn staging_testnet_config() -> ChainSpec<GenesisConfig> {
-	let boot_nodes = vec![];
-	ChainSpec::from_genesis(
-		"Staging Testnet",
-		"staging_testnet",
-		staging_testnet_config_genesis,
-		boot_nodes,
-		Some(STAGING_TELEMETRY_URL.into()),
-	)
-}
-
-fn testnet_genesis(initial_authorities: Vec<AuthorityId>) -> GenesisConfig {
-	let endowed_accounts = vec![
-		ed25519::Pair::from_seed(b"Alice                           ").public().0.into(),
-		ed25519::Pair::from_seed(b"Bob                             ").public().0.into(),
-		ed25519::Pair::from_seed(b"Charlie                         ").public().0.into(),
-		ed25519::Pair::from_seed(b"Dave                            ").public().0.into(),
-		ed25519::Pair::from_seed(b"Eve                             ").public().0.into(),
-		ed25519::Pair::from_seed(b"Ferdie                          ").public().0.into(),
-	];
-	GenesisConfig {
-		consensus: Some(ConsensusConfig {
-			code: include_bytes!("../../runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm").to_vec(),
-			authorities: initial_authorities.clone(),
-		}),
-		system: None,
-		session: Some(SessionConfig {
-			validators: initial_authorities.iter().cloned().map(Into::into).collect(),
-			session_length: 10,
-			broken_percent_late: 30,
-		}),
-		staking: Some(StakingConfig {
-			current_era: 0,
-			intentions: initial_authorities.iter().cloned().map(Into::into).collect(),
-			transaction_base_fee: 1,
-			transaction_byte_fee: 0,
-			existential_deposit: 500,
-			transfer_fee: 0,
-			creation_fee: 0,
-			reclaim_rebate: 0,
-			balances: endowed_accounts.iter().map(|&k|(k, (1u128 << 60))).collect(),
-			validator_count: 2,
-			sessions_per_era: 5,
-			bonding_duration: 2,
-			early_era_slash: 0,
-			session_reward: 0,
-		}),
-		democracy: Some(DemocracyConfig {
-			launch_period: 9,
-			voting_period: 18,
-			minimum_deposit: 10,
-		}),
-		council: Some(CouncilConfig {
-			active_council: endowed_accounts.iter().filter(|a| initial_authorities.iter().find(|&b| a.0 == b.0).is_none()).map(|a| (a.clone(), 1000000)).collect(),
-			candidacy_bond: 10,
-			voter_bond: 2,
-			present_slash_per_voter: 1,
-			carry_count: 4,
-			presentation_duration: 10,
-			approval_voting_period: 20,
-			term_duration: 1000000,
-			desired_seats: (endowed_accounts.len() - initial_authorities.len()) as u32,
-			inactive_grace_period: 1,
-
-			cooloff_period: 75,
-			voting_period: 20,
-		}),
-		parachains: Some(Default::default()),
-		timestamp: Some(TimestampConfig {
-			period: 5,					// 5 second block time.
-		}),
-	}
-}
-
-fn development_config_genesis() -> GenesisConfig {
-	testnet_genesis(vec![
-		ed25519::Pair::from_seed(b"Alice                           ").public().into(),
-	])
-}
-
-/// Development config (single validator Alice)
-pub fn development_config() -> ChainSpec<GenesisConfig> {
-	ChainSpec::from_genesis("Development", "development", development_config_genesis, vec![], None)
-}
-
-fn local_testnet_genesis() -> GenesisConfig {
-	testnet_genesis(vec![
-		ed25519::Pair::from_seed(b"Alice                           ").public().into(),
-		ed25519::Pair::from_seed(b"Bob                             ").public().into(),
-	])
-}
-
-/// Local testnet config (multivalidator Alice + Bob)
-pub fn local_testnet_config() -> ChainSpec<GenesisConfig> {
-	ChainSpec::from_genesis("Local Testnet", "local_testnet", local_testnet_genesis, vec![], None)
-}
diff --git a/substrate/polkadot/service/src/lib.rs b/substrate/polkadot/service/src/lib.rs
deleted file mode 100644
index 3814a1c98da383959c0f6b7da79454215c7114ec..0000000000000000000000000000000000000000
--- a/substrate/polkadot/service/src/lib.rs
+++ /dev/null
@@ -1,362 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-#![warn(unused_extern_crates)]
-
-//! Polkadot service. Specialized wrapper over substrate service.
-
-extern crate ed25519;
-extern crate polkadot_availability_store as av_store;
-extern crate polkadot_primitives;
-extern crate polkadot_runtime;
-extern crate polkadot_executor;
-extern crate polkadot_api;
-extern crate polkadot_consensus as consensus;
-extern crate polkadot_transaction_pool as transaction_pool;
-extern crate polkadot_network;
-extern crate substrate_primitives as primitives;
-extern crate substrate_network as network;
-extern crate substrate_codec as codec;
-extern crate substrate_client as client;
-extern crate substrate_service as service;
-extern crate tokio;
-
-#[macro_use]
-extern crate log;
-#[macro_use]
-extern crate hex_literal;
-
-pub mod chain_spec;
-
-use std::sync::Arc;
-use std::collections::HashMap;
-
-use codec::{Encode, Decode};
-use transaction_pool::TransactionPool;
-use polkadot_api::{PolkadotApi, light::RemotePolkadotApiWrapper};
-use polkadot_primitives::{parachain, AccountId, Block, BlockId, Hash};
-use polkadot_runtime::GenesisConfig;
-use client::Client;
-use polkadot_network::{PolkadotProtocol, consensus::ConsensusNetwork};
-use tokio::runtime::TaskExecutor;
-use service::FactoryFullConfiguration;
-
-pub use service::{Roles, PruningMode, ExtrinsicPoolOptions,
-	ErrorKind, Error, ComponentBlock, LightComponents, FullComponents};
-pub use client::ExecutionStrategy;
-
-/// Specialised polkadot `ChainSpec`.
-pub type ChainSpec = service::ChainSpec<GenesisConfig>;
-/// Polkadot client type for specialised `Components`.
-pub type ComponentClient<C> = Client<<C as Components>::Backend, <C as Components>::Executor, Block>;
-pub type NetworkService = network::Service<Block, <Factory as service::ServiceFactory>::NetworkProtocol>;
-
-/// A collection of type to generalise Polkadot specific components over full / light client.
-pub trait Components: service::Components {
-	/// Polkadot API.
-	type Api: 'static + PolkadotApi + Send + Sync;
-	/// Client backend.
-	type Backend: 'static + client::backend::Backend<Block>;
-	/// Client executor.
-	type Executor: 'static + client::CallExecutor<Block> + Send + Sync;
-}
-
-impl Components for service::LightComponents<Factory> {
-	type Api = RemotePolkadotApiWrapper<
-		<service::LightComponents<Factory> as service::Components>::Backend,
-		<service::LightComponents<Factory> as service::Components>::Executor,
-	>;
-	type Executor = service::LightExecutor<Factory>;
-	type Backend = service::LightBackend<Factory>;
-}
-
-impl Components for service::FullComponents<Factory> {
-	type Api = service::FullClient<Factory>;
-	type Executor = service::FullExecutor<Factory>;
-	type Backend = service::FullBackend<Factory>;
-}
-
-/// All configuration for the polkadot node.
-pub type Configuration = FactoryFullConfiguration<Factory>;
-
-/// Polkadot-specific configuration.
-#[derive(Default)]
-pub struct CustomConfiguration {
-	/// Set to `Some` with a collator `AccountId` and desired parachain
-	/// if the network protocol should be started in collator mode.
-	pub collating_for: Option<(AccountId, parachain::Id)>,
-}
-
-/// Polkadot config for the substrate service.
-pub struct Factory;
-
-impl service::ServiceFactory for Factory {
-	type Block = Block;
-	type NetworkProtocol = PolkadotProtocol;
-	type RuntimeDispatch = polkadot_executor::Executor;
-	type FullExtrinsicPool = TransactionPoolAdapter<
-		service::FullBackend<Self>,
-		service::FullExecutor<Self>,
-		service::FullClient<Self>
-	>;
-	type LightExtrinsicPool = TransactionPoolAdapter<
-		service::LightBackend<Self>,
-		service::LightExecutor<Self>,
-		RemotePolkadotApiWrapper<service::LightBackend<Self>, service::LightExecutor<Self>>
-	>;
-	type Genesis = GenesisConfig;
-	type Configuration = CustomConfiguration;
-
-	const NETWORK_PROTOCOL_ID: network::ProtocolId = ::polkadot_network::DOT_PROTOCOL_ID;
-
-	fn build_full_extrinsic_pool(config: ExtrinsicPoolOptions, client: Arc<service::FullClient<Self>>)
-		-> Result<Self::FullExtrinsicPool, Error>
-	{
-		let api = client.clone();
-		Ok(TransactionPoolAdapter {
-			pool: Arc::new(TransactionPool::new(config, api)),
-			client: client,
-			imports_external_transactions: true,
-		})
-	}
-
-	fn build_light_extrinsic_pool(config: ExtrinsicPoolOptions, client: Arc<service::LightClient<Self>>)
-		-> Result<Self::LightExtrinsicPool, Error>
-	{
-		let api = Arc::new(RemotePolkadotApiWrapper(client.clone()));
-		Ok(TransactionPoolAdapter {
-			pool: Arc::new(TransactionPool::new(config, api)),
-			client: client,
-			imports_external_transactions: false,
-		})
-	}
-
-	fn build_network_protocol(config: &Configuration)
-		-> Result<PolkadotProtocol, Error>
-	{
-		if let Some((_, ref para_id)) = config.custom.collating_for {
-			info!("Starting network in Collator mode for parachain {:?}", para_id);
-		}
-		Ok(PolkadotProtocol::new(config.custom.collating_for))
-	}
-}
-
-/// Polkadot service.
-pub struct Service<C: Components> {
-	inner: service::Service<C>,
-	client: Arc<ComponentClient<C>>,
-	network: Arc<NetworkService>,
-	api: Arc<<C as Components>::Api>,
-	_consensus: Option<consensus::Service>,
-}
-
-impl <C: Components> Service<C> {
-	pub fn client(&self) -> Arc<ComponentClient<C>> {
-		self.client.clone()
-	}
-
-	pub fn network(&self) -> Arc<NetworkService> {
-		self.network.clone()
-	}
-
-	pub fn api(&self) -> Arc<<C as Components>::Api> {
-		self.api.clone()
-	}
-}
-
-/// Creates light client and register protocol with the network service
-pub fn new_light(config: Configuration, executor: TaskExecutor)
-	-> Result<Service<LightComponents<Factory>>, Error>
-{
-	let service = service::Service::<LightComponents<Factory>>::new(config, executor)?;
-	let api = Arc::new(RemotePolkadotApiWrapper(service.client()));
-	Ok(Service {
-		client: service.client(),
-		network: service.network(),
-		api: api,
-		inner: service,
-		_consensus: None,
-	})
-}
-
-/// Creates full client and register protocol with the network service
-pub fn new_full(config: Configuration, executor: TaskExecutor)
-	-> Result<Service<FullComponents<Factory>>, Error>
-{
-	// open availability store.
-	let av_store = {
-		use std::path::PathBuf;
-
-		let mut path = PathBuf::from(config.database_path.clone());
-		path.push("availability");
-
-		::av_store::Store::new(::av_store::Config {
-			cache_size: None,
-			path,
-		})?
-	};
-
-	let is_validator = (config.roles & Roles::AUTHORITY) == Roles::AUTHORITY;
-	let service = service::Service::<FullComponents<Factory>>::new(config, executor.clone())?;
-
-	// Spin consensus service if configured
-	let consensus = if is_validator {
-		// Load the first available key
-		let key = service.keystore().load(&service.keystore().contents()?[0], "")?;
-		info!("Using authority key {}", key.public());
-
-		let client = service.client();
-
-		let consensus_net = ConsensusNetwork::new(service.network(), client.clone());
-		Some(consensus::Service::new(
-			client.clone(),
-			client.clone(),
-			consensus_net,
-			service.extrinsic_pool(),
-			executor,
-			::std::time::Duration::from_secs(4), // TODO: dynamic
-			key,
-			av_store.clone(),
-		))
-	} else {
-		None
-	};
-
-	service.network().with_spec(|spec, _| spec.register_availability_store(av_store));
-
-	Ok(Service {
-		client: service.client(),
-		network: service.network(),
-		api: service.client(),
-		inner: service,
-		_consensus: consensus,
-	})
-}
-
-/// Creates bare client without any networking.
-pub fn new_client(config: Configuration)
--> Result<Arc<service::ComponentClient<FullComponents<Factory>>>, Error>
-{
-	service::new_client::<Factory>(config)
-}
-
-impl<C: Components> ::std::ops::Deref for Service<C> {
-	type Target = service::Service<C>;
-
-	fn deref(&self) -> &Self::Target {
-		&self.inner
-	}
-}
-
-/// Transaction pool adapter.
-pub struct TransactionPoolAdapter<B, E, A> where A: Send + Sync, E: Send + Sync {
-	imports_external_transactions: bool,
-	pool: Arc<TransactionPool<A>>,
-	client: Arc<Client<B, E, Block>>,
-}
-
-impl<B, E, A> TransactionPoolAdapter<B, E, A>
-	where
-		A: Send + Sync,
-		B: client::backend::Backend<Block> + Send + Sync,
-		E: client::CallExecutor<Block> + Send + Sync,
-{
-	fn best_block_id(&self) -> Option<BlockId> {
-		self.client.info()
-			.map(|info| BlockId::hash(info.chain.best_hash))
-			.map_err(|e| {
-				debug!("Error getting best block: {:?}", e);
-			})
-			.ok()
-	}
-}
-
-impl<B, E, A> network::TransactionPool<Block> for TransactionPoolAdapter<B, E, A>
-	where
-		B: client::backend::Backend<Block> + Send + Sync,
-		E: client::CallExecutor<Block> + Send + Sync,
-		A: polkadot_api::PolkadotApi + Send + Sync,
-{
-	fn transactions(&self) -> Vec<(Hash, Vec<u8>)> {
-		let best_block_id = match self.best_block_id() {
-			Some(id) => id,
-			None => return vec![],
-		};
-		self.pool.cull_and_get_pending(best_block_id, |pending| pending
-			.map(|t| {
-				let hash = t.hash().clone();
-				(hash, t.primitive_extrinsic())
-			})
-			.collect()
-		).unwrap_or_else(|e| {
-			warn!("Error retrieving pending set: {}", e);
-			vec![]
-		})
-	}
-
-	fn import(&self, transaction: &Vec<u8>) -> Option<Hash> {
-		if !self.imports_external_transactions {
-			return None;
-		}
-
-		let encoded = transaction.encode();
-		if let Some(uxt) = Decode::decode(&mut &encoded[..]) {
-			let best_block_id = self.best_block_id()?;
-			match self.pool.import_unchecked_extrinsic(best_block_id, uxt) {
-				Ok(xt) => Some(*xt.hash()),
-				Err(e) => match *e.kind() {
-					transaction_pool::ErrorKind::AlreadyImported(hash) => Some(hash[..].into()),
-					_ => {
-						debug!(target: "txpool", "Error adding transaction to the pool: {:?}", e);
-						None
-					},
-				}
-			}
-		} else {
-			debug!(target: "txpool", "Error decoding transaction");
-			None
-		}
-	}
-
-	fn on_broadcasted(&self, propagations: HashMap<Hash, Vec<String>>) {
-		self.pool.on_broadcasted(propagations)
-	}
-}
-
-impl<B, E, A> service::ExtrinsicPool<Block> for TransactionPoolAdapter<B, E, A>
-	where
-		B: client::backend::Backend<Block> + Send + Sync + 'static,
-		E: client::CallExecutor<Block> + Send + Sync + 'static,
-		A: polkadot_api::PolkadotApi + Send + Sync + 'static,
-{
-	type Api = TransactionPool<A>;
-
-	fn prune_imported(&self, hash: &Hash) {
-		let block = BlockId::hash(*hash);
-		if let Err(e) = self.pool.cull(block) {
-			warn!("Culling error: {:?}", e);
-		}
-
-		if let Err(e) = self.pool.retry_verification(block) {
-			warn!("Re-verifying error: {:?}", e);
-		}
-	}
-
-	fn api(&self) -> Arc<Self::Api> {
-		self.pool.clone()
-	}
-}
-
diff --git a/substrate/polkadot/src/README.adoc b/substrate/polkadot/src/README.adoc
deleted file mode 100644
index fed228df0b6bd3c5a47992412c0b0cd445e25ee6..0000000000000000000000000000000000000000
--- a/substrate/polkadot/src/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Src
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/src/main.rs b/substrate/polkadot/src/main.rs
deleted file mode 100644
index d3e951596e20090dac70c498cd4c27c21de02087..0000000000000000000000000000000000000000
--- a/substrate/polkadot/src/main.rs
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Polkadot CLI
-
-#![warn(missing_docs)]
-
-extern crate polkadot_cli as cli;
-extern crate ctrlc;
-extern crate futures;
-
-#[macro_use]
-extern crate error_chain;
-
-use cli::{ServiceComponents, Service, VersionInfo};
-use futures::sync::oneshot;
-use futures::{future, Future};
-
-use std::cell::RefCell;
-
-mod vergen {
-	#![allow(unused)]
-	include!(concat!(env!("OUT_DIR"), "/version.rs"));
-}
-
-// the regular polkadot worker simply does nothing until ctrl-c
-struct Worker;
-impl cli::IntoExit for Worker {
-	type Exit = future::MapErr<oneshot::Receiver<()>, fn(oneshot::Canceled) -> ()>;
-	fn into_exit(self) -> Self::Exit {
-		// can't use signal directly here because CtrlC takes only `Fn`.
-		let (exit_send, exit) = oneshot::channel();
-
-		let exit_send_cell = RefCell::new(Some(exit_send));
-		ctrlc::CtrlC::set_handler(move || {
-			if let Some(exit_send) = exit_send_cell.try_borrow_mut().expect("signal handler not reentrant; qed").take() {
-				exit_send.send(()).expect("Error sending exit notification");
-			}
-		});
-
-		exit.map_err(drop)
-	}
-}
-
-impl cli::Worker for Worker {
-	type Work = <Self as cli::IntoExit>::Exit;
-	fn work<C: ServiceComponents>(self, _service: &Service<C>) -> Self::Work {
-		use cli::IntoExit;
-		self.into_exit()
-	}
-}
-
-quick_main!(run);
-
-fn run() -> cli::error::Result<()> {
-	let version = VersionInfo {
-		commit: vergen::short_sha(),
-		version: env!("CARGO_PKG_VERSION"),
-		executable_name: "polkadot",
-		author: "Parity Team <admin@parity.io>",
-		description: "Polkadot Node Rust Implementation",
-	};
-	cli::run(::std::env::args(), Worker, version)
-}
diff --git a/substrate/polkadot/statement-table/Cargo.toml b/substrate/polkadot/statement-table/Cargo.toml
deleted file mode 100644
index 97e35d1f5f07c14e48c8148b7bc5a21b6328cc4e..0000000000000000000000000000000000000000
--- a/substrate/polkadot/statement-table/Cargo.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-[package]
-name = "polkadot-statement-table"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-substrate-codec = { path = "../../substrate/codec" }
-substrate-codec-derive = { path = "../../substrate/codec/derive" }
-substrate-primitives = { path = "../../substrate/primitives" }
-polkadot-primitives = { path = "../primitives" }
diff --git a/substrate/polkadot/statement-table/README.adoc b/substrate/polkadot/statement-table/README.adoc
deleted file mode 100644
index 402f55108f4e95fd72ca6da025e22b542a4a48c2..0000000000000000000000000000000000000000
--- a/substrate/polkadot/statement-table/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Statement table
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/statement-table/src/generic.rs b/substrate/polkadot/statement-table/src/generic.rs
deleted file mode 100644
index 2a6c828f5b3254fd902614bd5ad3769157c16801..0000000000000000000000000000000000000000
--- a/substrate/polkadot/statement-table/src/generic.rs
+++ /dev/null
@@ -1,1192 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! The statement table: generic implementation.
-//!
-//! This stores messages other authorities issue about candidates.
-//!
-//! These messages are used to create a proposal submitted to a BFT consensus process.
-//!
-//! Proposals are formed of sets of candidates which have the requisite number of
-//! validity and availability votes.
-//!
-//! Each parachain is associated with two sets of authorities: those which can
-//! propose and attest to validity of candidates, and those who can only attest
-//! to availability.
-
-use std::collections::hash_map::{HashMap, Entry};
-use std::hash::Hash;
-use std::fmt::Debug;
-
-/// Context for the statement table.
-pub trait Context {
-	/// A authority ID
-	type AuthorityId: Debug + Hash + Eq + Clone;
-	/// The digest (hash or other unique attribute) of a candidate.
-	type Digest: Debug + Hash + Eq + Clone;
-	/// The group ID type
-	type GroupId: Debug + Hash + Ord + Eq + Clone;
-	/// A signature type.
-	type Signature: Debug + Eq + Clone;
-	/// Candidate type. In practice this will be a candidate receipt.
-	type Candidate: Debug + Ord + Eq + Clone;
-
-	/// get the digest of a candidate.
-	fn candidate_digest(candidate: &Self::Candidate) -> Self::Digest;
-
-	/// get the group of a candidate.
-	fn candidate_group(candidate: &Self::Candidate) -> Self::GroupId;
-
-	/// Whether a authority is a member of a group.
-	/// Members are meant to submit candidates and vote on validity.
-	fn is_member_of(&self, authority: &Self::AuthorityId, group: &Self::GroupId) -> bool;
-
-	/// Whether a authority is an availability guarantor of a group.
-	/// Guarantors are meant to vote on availability for candidates submitted
-	/// in a group.
-	fn is_availability_guarantor_of(
-		&self,
-		authority: &Self::AuthorityId,
-		group: &Self::GroupId,
-	) -> bool;
-
-	// requisite number of votes for validity and availability respectively from a group.
-	fn requisite_votes(&self, group: &Self::GroupId) -> (usize, usize);
-}
-
-/// Statements circulated among peers.
-#[derive(PartialEq, Eq, Debug, Clone, Encode, Decode)]
-pub enum Statement<C, D> {
-	/// Broadcast by a authority to indicate that this is his candidate for
-	/// inclusion.
-	///
-	/// Broadcasting two different candidate messages per round is not allowed.
-	#[codec(index = "1")]
-	Candidate(C),
-	/// Broadcast by a authority to attest that the candidate with given digest
-	/// is valid.
-	#[codec(index = "2")]
-	Valid(D),
-	/// Broadcast by a authority to attest that the candidate with given digest
-	/// is invalid.
-	#[codec(index = "3")]
-	Invalid(D),
-	/// Broadcast by a authority to attest that the auxiliary data for a candidate
-	/// with given digest is available.
-	#[codec(index = "4")]
-	Available(D),
-}
-
-/// A signed statement.
-#[derive(PartialEq, Eq, Debug, Clone, Encode, Decode)]
-pub struct SignedStatement<C, D, V, S> {
-	/// The statement.
-	pub statement: Statement<C, D>,
-	/// The signature.
-	pub signature: S,
-	/// The sender.
-	pub sender: V,
-}
-
-/// Misbehavior: voting more than one way on candidate validity.
-///
-/// Since there are three possible ways to vote, a double vote is possible in
-/// three possible combinations (unordered)
-#[derive(PartialEq, Eq, Debug, Clone)]
-pub enum ValidityDoubleVote<C, D, S> {
-	/// Implicit vote by issuing and explicity voting validity.
-	IssuedAndValidity((C, S), (D, S)),
-	/// Implicit vote by issuing and explicitly voting invalidity
-	IssuedAndInvalidity((C, S), (D, S)),
-	/// Direct votes for validity and invalidity
-	ValidityAndInvalidity(D, S, S),
-}
-
-/// Misbehavior: multiple signatures on same statement.
-#[derive(PartialEq, Eq, Debug, Clone)]
-pub enum DoubleSign<C, D, S> {
-	/// On candidate.
-	Candidate(C, S, S),
-	/// On validity.
-	Validity(D, S, S),
-	/// On invalidity.
-	Invalidity(D, S, S),
-	/// On availability.
-	Availability(D, S, S),
-}
-
-/// Misbehavior: declaring multiple candidates.
-#[derive(PartialEq, Eq, Debug, Clone)]
-pub struct MultipleCandidates<C, S> {
-	/// The first candidate seen.
-	pub first: (C, S),
-	/// The second candidate seen.
-	pub second: (C, S),
-}
-
-/// Misbehavior: submitted statement for wrong group.
-#[derive(PartialEq, Eq, Debug, Clone)]
-pub struct UnauthorizedStatement<C, D, V, S> {
-	/// A signed statement which was submitted without proper authority.
-	pub statement: SignedStatement<C, D, V, S>,
-}
-
-/// Different kinds of misbehavior. All of these kinds of malicious misbehavior
-/// are easily provable and extremely disincentivized.
-#[derive(PartialEq, Eq, Debug, Clone)]
-pub enum Misbehavior<C, D, V, S> {
-	/// Voted invalid and valid on validity.
-	ValidityDoubleVote(ValidityDoubleVote<C, D, S>),
-	/// Submitted multiple candidates.
-	MultipleCandidates(MultipleCandidates<C, S>),
-	/// Submitted a message that was unauthorized.
-	UnauthorizedStatement(UnauthorizedStatement<C, D, V, S>),
-	/// Submitted two valid signatures for the same message.
-	DoubleSign(DoubleSign<C, D, S>),
-}
-
-/// Type alias for misbehavior corresponding to context type.
-pub type MisbehaviorFor<C> = Misbehavior<<C as Context>::Candidate, <C as Context>::Digest, <C as Context>::AuthorityId, <C as Context>::Signature>;
-
-// kinds of votes for validity
-#[derive(Clone, PartialEq, Eq)]
-enum ValidityVote<S: Eq + Clone> {
-	// implicit validity vote by issuing
-	Issued(S),
-	// direct validity vote
-	Valid(S),
-	// direct invalidity vote
-	Invalid(S),
-}
-
-/// A summary of import of a statement.
-#[derive(Clone, PartialEq, Eq)]
-pub struct Summary<D, G> {
-	/// The digest of the candidate referenced.
-	pub candidate: D,
-	/// The group that candidate is in.
-	pub group_id: G,
-	/// How many validity votes are currently witnessed.
-	pub validity_votes: usize,
-	/// How many availability votes are currently witnessed.
-	pub availability_votes: usize,
-	/// Whether this has been signalled bad by at least one participant.
-	pub signalled_bad: bool,
-}
-
-/// Stores votes and data about a candidate.
-pub struct CandidateData<C: Context> {
-	group_id: C::GroupId,
-	candidate: C::Candidate,
-	validity_votes: HashMap<C::AuthorityId, ValidityVote<C::Signature>>,
-	availability_votes: HashMap<C::AuthorityId, C::Signature>,
-	indicated_bad_by: Vec<C::AuthorityId>,
-}
-
-impl<C: Context> CandidateData<C> {
-	/// whether this has been indicated bad by anyone.
-	pub fn indicated_bad(&self) -> bool {
-		!self.indicated_bad_by.is_empty()
-	}
-
-	// Candidate data can be included in a proposal
-	// if it has enough validity and availability votes
-	// and no authorities have called it bad.
-	fn can_be_included(&self, validity_threshold: usize, availability_threshold: usize) -> bool {
-		self.indicated_bad_by.is_empty()
-			&& self.validity_votes.len() >= validity_threshold
-			&& self.availability_votes.len() >= availability_threshold
-	}
-
-	fn summary(&self, digest: C::Digest) -> Summary<C::Digest, C::GroupId> {
-		Summary {
-			candidate: digest,
-			group_id: self.group_id.clone(),
-			validity_votes: self.validity_votes.len() - self.indicated_bad_by.len(),
-			availability_votes: self.availability_votes.len(),
-			signalled_bad: self.indicated_bad(),
-		}
-	}
-}
-
-// authority metadata
-struct AuthorityData<C: Context> {
-	proposal: Option<(C::Digest, C::Signature)>,
-}
-
-impl<C: Context> Default for AuthorityData<C> {
-	fn default() -> Self {
-		AuthorityData {
-			proposal: None,
-		}
-	}
-}
-
-/// Type alias for the result of a statement import.
-pub type ImportResult<C> = Result<
-	Option<Summary<<C as Context>::Digest, <C as Context>::GroupId>>,
-	MisbehaviorFor<C>
->;
-
-/// Stores votes
-pub struct Table<C: Context> {
-	authority_data: HashMap<C::AuthorityId, AuthorityData<C>>,
-	detected_misbehavior: HashMap<C::AuthorityId, MisbehaviorFor<C>>,
-	candidate_votes: HashMap<C::Digest, CandidateData<C>>,
-	includable_count: HashMap<C::GroupId, usize>,
-}
-
-impl<C: Context> Default for Table<C> {
-	fn default() -> Self {
-		Table {
-			authority_data: HashMap::new(),
-			detected_misbehavior: HashMap::new(),
-			candidate_votes: HashMap::new(),
-			includable_count: HashMap::new(),
-		}
-	}
-}
-
-impl<C: Context> Table<C> {
-	/// Produce a set of proposed candidates.
-	///
-	/// This will be at most one per group, consisting of the
-	/// best candidate for each group with requisite votes for inclusion.
-	///
-	/// The vector is sorted in ascending order by group id.
-	pub fn proposed_candidates<'a>(&'a self, context: &C) -> Vec<&'a C::Candidate> {
-		use std::collections::BTreeMap;
-		use std::collections::btree_map::Entry as BTreeEntry;
-
-		let mut best_candidates = BTreeMap::new();
-		for candidate_data in self.candidate_votes.values() {
-			let group_id = &candidate_data.group_id;
-
-			if !self.includable_count.contains_key(group_id) {
-				continue
-			}
-
-			let (validity_t, availability_t) = context.requisite_votes(group_id);
-
-			if !candidate_data.can_be_included(validity_t, availability_t) { continue }
-			let candidate = &candidate_data.candidate;
-			match best_candidates.entry(group_id.clone()) {
-				BTreeEntry::Occupied(mut occ) => {
-					let candidate_ref = occ.get_mut();
-					if *candidate_ref > candidate {
-						*candidate_ref = candidate;
-					}
-				}
-				BTreeEntry::Vacant(vacant) => { vacant.insert(candidate); },
-			}
-		}
-
-		best_candidates.values().cloned().collect::<Vec<_>>()
-	}
-
-	/// Whether a candidate can be included.
-	pub fn candidate_includable(&self, digest: &C::Digest, context: &C) -> bool {
-		self.candidate_votes.get(digest).map_or(false, |data| {
-			let (v_threshold, a_threshold) = context.requisite_votes(&data.group_id);
-			data.can_be_included(v_threshold, a_threshold)
-		})
-	}
-
-	/// Import a signed statement. Signatures should be checked for validity, and the
-	/// sender should be checked to actually be an authority.
-	///
-	/// If this returns `None`, the statement was either duplicate or invalid.
-	pub fn import_statement(
-		&mut self,
-		context: &C,
-		statement: SignedStatement<C::Candidate, C::Digest, C::AuthorityId, C::Signature>,
-	) -> Option<Summary<C::Digest, C::GroupId>> {
-		let SignedStatement { statement, signature, sender: signer } = statement;
-
-		let res = match statement {
-			Statement::Candidate(candidate) => self.import_candidate(
-				context,
-				signer.clone(),
-				candidate,
-				signature
-			),
-			Statement::Valid(digest) => self.validity_vote(
-				context,
-				signer.clone(),
-				digest,
-				ValidityVote::Valid(signature),
-			),
-			Statement::Invalid(digest) => self.validity_vote(
-				context,
-				signer.clone(),
-				digest,
-				ValidityVote::Invalid(signature),
-			),
-			Statement::Available(digest) => self.availability_vote(
-				context,
-				signer.clone(),
-				digest,
-				signature,
-			),
-		};
-
-		match res {
-			Ok(maybe_summary) => maybe_summary,
-			Err(misbehavior) => {
-				// all misbehavior in agreement is provable and actively malicious.
-				// punishments are not cumulative.
-				self.detected_misbehavior.insert(signer, misbehavior);
-				None
-			}
-		}
-	}
-
-	/// Get a candidate by digest.
-	pub fn get_candidate(&self, digest: &C::Digest) -> Option<&C::Candidate> {
-		self.candidate_votes.get(digest).map(|d| &d.candidate)
-	}
-
-	/// Access all witnessed misbehavior.
-	pub fn get_misbehavior(&self)
-		-> &HashMap<C::AuthorityId, MisbehaviorFor<C>>
-	{
-		&self.detected_misbehavior
-	}
-
-	/// Get the current number of parachains with includable candidates.
-	pub fn includable_count(&self) -> usize {
-		self.includable_count.len()
-	}
-
-	fn import_candidate(
-		&mut self,
-		context: &C,
-		from: C::AuthorityId,
-		candidate: C::Candidate,
-		signature: C::Signature,
-	) -> ImportResult<C> {
-		let group = C::candidate_group(&candidate);
-		if !context.is_member_of(&from, &group) {
-			return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement {
-				statement: SignedStatement {
-					signature,
-					statement: Statement::Candidate(candidate),
-					sender: from,
-				},
-			}));
-		}
-
-		// check that authority hasn't already specified another candidate.
-		let digest = C::candidate_digest(&candidate);
-
-		let new_proposal = match self.authority_data.entry(from.clone()) {
-			Entry::Occupied(mut occ) => {
-				// if digest is different, fetch candidate and
-				// note misbehavior.
-				let existing = occ.get_mut();
-
-				if let Some((ref old_digest, ref old_sig)) = existing.proposal {
-					if old_digest != &digest {
-						const EXISTENCE_PROOF: &str =
-							"when proposal first received from authority, candidate \
-							votes entry is created. proposal here is `Some`, therefore \
-							candidate votes entry exists; qed";
-
-						let old_candidate = self.candidate_votes.get(old_digest)
-							.expect(EXISTENCE_PROOF)
-							.candidate
-							.clone();
-
-						return Err(Misbehavior::MultipleCandidates(MultipleCandidates {
-							first: (old_candidate, old_sig.clone()),
-							second: (candidate, signature.clone()),
-						}));
-					}
-
-					false
-				} else {
-					existing.proposal = Some((digest.clone(), signature.clone()));
-					true
-				}
-			}
-			Entry::Vacant(vacant) => {
-				vacant.insert(AuthorityData {
-					proposal: Some((digest.clone(), signature.clone())),
-				});
-				true
-			}
-		};
-
-		// NOTE: altering this code may affect the existence proof above. ensure it remains
-		// valid.
-		if new_proposal {
-			self.candidate_votes.entry(digest.clone()).or_insert_with(move || CandidateData {
-				group_id: group,
-				candidate: candidate,
-				validity_votes: HashMap::new(),
-				availability_votes: HashMap::new(),
-				indicated_bad_by: Vec::new(),
-			});
-		}
-
-		self.validity_vote(
-			context,
-			from,
-			digest,
-			ValidityVote::Issued(signature),
-		)
-	}
-
-	fn validity_vote(
-		&mut self,
-		context: &C,
-		from: C::AuthorityId,
-		digest: C::Digest,
-		vote: ValidityVote<C::Signature>,
-	) -> ImportResult<C> {
-		let votes = match self.candidate_votes.get_mut(&digest) {
-			None => return Ok(None),
-			Some(votes) => votes,
-		};
-
-		let (v_threshold, a_threshold) = context.requisite_votes(&votes.group_id);
-		let was_includable = votes.can_be_included(v_threshold, a_threshold);
-
-		// check that this authority actually can vote in this group.
-		if !context.is_member_of(&from, &votes.group_id) {
-			let (sig, valid) = match vote {
-				ValidityVote::Valid(s) => (s, true),
-				ValidityVote::Invalid(s) => (s, false),
-				ValidityVote::Issued(_) =>
-					panic!("implicit issuance vote only cast from `import_candidate` after \
-							checking group membership of issuer; qed"),
-			};
-
-			return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement {
-				statement: SignedStatement {
-					signature: sig,
-					sender: from,
-					statement: if valid {
-						Statement::Valid(digest)
-					} else {
-						Statement::Invalid(digest)
-					}
-				}
-			}));
-		}
-
-		// check for double votes.
-		match votes.validity_votes.entry(from.clone()) {
-			Entry::Occupied(occ) => {
-				let make_vdv = |v| Misbehavior::ValidityDoubleVote(v);
-				let make_ds = |ds| Misbehavior::DoubleSign(ds);
-				return if occ.get() != &vote {
-					Err(match (occ.get().clone(), vote) {
-						// valid vote conflicting with candidate statement
-						(ValidityVote::Issued(iss), ValidityVote::Valid(good)) |
-						(ValidityVote::Valid(good), ValidityVote::Issued(iss)) =>
-							make_vdv(ValidityDoubleVote::IssuedAndValidity((votes.candidate.clone(), iss), (digest, good))),
-
-						// invalid vote conflicting with candidate statement
-						(ValidityVote::Issued(iss), ValidityVote::Invalid(bad)) |
-						(ValidityVote::Invalid(bad), ValidityVote::Issued(iss)) =>
-							make_vdv(ValidityDoubleVote::IssuedAndInvalidity((votes.candidate.clone(), iss), (digest, bad))),
-
-						// valid vote conflicting with invalid vote
-						(ValidityVote::Valid(good), ValidityVote::Invalid(bad)) |
-						(ValidityVote::Invalid(bad), ValidityVote::Valid(good)) =>
-							make_vdv(ValidityDoubleVote::ValidityAndInvalidity(digest, good, bad)),
-
-						// two signatures on same candidate
-						(ValidityVote::Issued(a), ValidityVote::Issued(b)) =>
-							make_ds(DoubleSign::Candidate(votes.candidate.clone(), a, b)),
-
-						// two signatures on same validity vote
-						(ValidityVote::Valid(a), ValidityVote::Valid(b)) =>
-							make_ds(DoubleSign::Validity(digest, a, b)),
-
-						// two signature on same invalidity vote
-						(ValidityVote::Invalid(a), ValidityVote::Invalid(b)) =>
-							make_ds(DoubleSign::Invalidity(digest, a, b)),
-					})
-				} else {
-					Ok(None)
-				}
-			}
-			Entry::Vacant(vacant) => {
-				if let ValidityVote::Invalid(_) = vote {
-					votes.indicated_bad_by.push(from);
-				}
-
-				vacant.insert(vote);
-			}
-		}
-
-		let is_includable = votes.can_be_included(v_threshold, a_threshold);
-		update_includable_count(&mut self.includable_count, &votes.group_id, was_includable, is_includable);
-
-		Ok(Some(votes.summary(digest)))
-	}
-
-	fn availability_vote(
-		&mut self,
-		context: &C,
-		from: C::AuthorityId,
-		digest: C::Digest,
-		signature: C::Signature,
-	) -> ImportResult<C> {
-		let votes = match self.candidate_votes.get_mut(&digest) {
-			None => return Ok(None),
-			Some(votes) => votes,
-		};
-
-		let (v_threshold, a_threshold) = context.requisite_votes(&votes.group_id);
-		let was_includable = votes.can_be_included(v_threshold, a_threshold);
-
-		// check that this authority actually can vote in this group.
-		if !context.is_availability_guarantor_of(&from, &votes.group_id) {
-			return Err(Misbehavior::UnauthorizedStatement(UnauthorizedStatement {
-				statement: SignedStatement {
-					signature: signature,
-					statement: Statement::Available(digest),
-					sender: from,
-				}
-			}));
-		}
-
-		match votes.availability_votes.entry(from) {
-			Entry::Occupied(ref occ) if occ.get() != &signature => return Err(
-				Misbehavior::DoubleSign(DoubleSign::Availability(digest, signature, occ.get().clone()))
-			),
-			entry => { let _ = entry.or_insert(signature); },
-		}
-
-		let is_includable = votes.can_be_included(v_threshold, a_threshold);
-		update_includable_count(&mut self.includable_count, &votes.group_id, was_includable, is_includable);
-
-		Ok(Some(votes.summary(digest)))
-	}
-}
-
-fn update_includable_count<G: Hash + Eq + Clone>(map: &mut HashMap<G, usize>, group_id: &G, was_includable: bool, is_includable: bool) {
-	if was_includable && !is_includable {
-		if let Entry::Occupied(mut entry) = map.entry(group_id.clone()) {
-			*entry.get_mut() -= 1;
-			if *entry.get() == 0 {
-				entry.remove();
-			}
-		}
-	}
-
-	if !was_includable && is_includable {
-		*map.entry(group_id.clone()).or_insert(0) += 1;
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use super::*;
-	use std::collections::HashMap;
-
-	fn create<C: Context>() -> Table<C> {
-		Table::default()
-	}
-
-	#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-	struct AuthorityId(usize);
-
-	#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
-	struct GroupId(usize);
-
-	// group, body
-	#[derive(Debug, Copy, Clone, Hash, PartialOrd, Ord, PartialEq, Eq)]
-	struct Candidate(usize, usize);
-
-	#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-	struct Signature(usize);
-
-	#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
-	struct Digest(usize);
-
-	#[derive(Debug, PartialEq, Eq)]
-	struct TestContext {
-		// v -> (validity, availability)
-		authorities: HashMap<AuthorityId, (GroupId, GroupId)>
-	}
-
-	impl Context for TestContext {
-		type AuthorityId = AuthorityId;
-		type Digest = Digest;
-		type Candidate = Candidate;
-		type GroupId = GroupId;
-		type Signature = Signature;
-
-		fn candidate_digest(candidate: &Candidate) -> Digest {
-			Digest(candidate.1)
-		}
-
-		fn candidate_group(candidate: &Candidate) -> GroupId {
-			GroupId(candidate.0)
-		}
-
-		fn is_member_of(
-			&self,
-			authority: &AuthorityId,
-			group: &GroupId
-		) -> bool {
-			self.authorities.get(authority).map(|v| &v.0 == group).unwrap_or(false)
-		}
-
-		fn is_availability_guarantor_of(
-			&self,
-			authority: &AuthorityId,
-			group: &GroupId
-		) -> bool {
-			self.authorities.get(authority).map(|v| &v.1 == group).unwrap_or(false)
-		}
-
-		fn requisite_votes(&self, id: &GroupId) -> (usize, usize) {
-			let mut total_validity = 0;
-			let mut total_availability = 0;
-
-			for &(ref validity, ref availability) in self.authorities.values() {
-				if validity == id { total_validity += 1 }
-				if availability == id { total_availability += 1 }
-			}
-
-			(total_validity / 2 + 1, total_availability / 2 + 1)
-		}
-	}
-
-	#[test]
-	fn submitting_two_candidates_is_misbehavior() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement_a = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-
-		let statement_b = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 999)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-
-		table.import_statement(&context, statement_a);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-
-		table.import_statement(&context, statement_b);
-		assert_eq!(
-			table.detected_misbehavior.get(&AuthorityId(1)).unwrap(),
-			&Misbehavior::MultipleCandidates(MultipleCandidates {
-				first: (Candidate(2, 100), Signature(1)),
-				second: (Candidate(2, 999), Signature(1)),
-			})
-		);
-	}
-
-	#[test]
-	fn submitting_candidate_from_wrong_group_is_misbehavior() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(3), GroupId(455)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-
-		table.import_statement(&context, statement);
-
-		assert_eq!(
-			table.detected_misbehavior.get(&AuthorityId(1)).unwrap(),
-			&Misbehavior::UnauthorizedStatement(UnauthorizedStatement {
-				statement: SignedStatement {
-					statement: Statement::Candidate(Candidate(2, 100)),
-					signature: Signature(1),
-					sender: AuthorityId(1),
-				},
-			})
-		);
-	}
-
-	#[test]
-	fn unauthorized_votes() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(2), (GroupId(3), GroupId(222)));
-				map
-			}
-		};
-
-		let mut table = create();
-
-		let candidate_a = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-		let candidate_a_digest = Digest(100);
-
-		let candidate_b = SignedStatement {
-			statement: Statement::Candidate(Candidate(3, 987)),
-			signature: Signature(2),
-			sender: AuthorityId(2),
-		};
-		let candidate_b_digest = Digest(987);
-
-		table.import_statement(&context, candidate_a);
-		table.import_statement(&context, candidate_b);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2)));
-
-		// authority 1 votes for availability on 2's candidate.
-		let bad_availability_vote = SignedStatement {
-			statement: Statement::Available(candidate_b_digest.clone()),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-		table.import_statement(&context, bad_availability_vote);
-
-		assert_eq!(
-			table.detected_misbehavior.get(&AuthorityId(1)).unwrap(),
-			&Misbehavior::UnauthorizedStatement(UnauthorizedStatement {
-				statement: SignedStatement {
-					statement: Statement::Available(candidate_b_digest),
-					signature: Signature(1),
-					sender: AuthorityId(1),
-				},
-			})
-		);
-
-		// authority 2 votes for validity on 1's candidate.
-		let bad_validity_vote = SignedStatement {
-			statement: Statement::Valid(candidate_a_digest.clone()),
-			signature: Signature(2),
-			sender: AuthorityId(2),
-		};
-		table.import_statement(&context, bad_validity_vote);
-
-		assert_eq!(
-			table.detected_misbehavior.get(&AuthorityId(2)).unwrap(),
-			&Misbehavior::UnauthorizedStatement(UnauthorizedStatement {
-				statement: SignedStatement {
-					statement: Statement::Valid(candidate_a_digest),
-					signature: Signature(2),
-					sender: AuthorityId(2),
-				},
-			})
-		);
-	}
-
-	#[test]
-	fn validity_double_vote_is_misbehavior() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(2), (GroupId(2), GroupId(246)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-		let candidate_digest = Digest(100);
-
-		table.import_statement(&context, statement);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-
-		let valid_statement = SignedStatement {
-			statement: Statement::Valid(candidate_digest.clone()),
-			signature: Signature(2),
-			sender: AuthorityId(2),
-		};
-
-		let invalid_statement = SignedStatement {
-			statement: Statement::Invalid(candidate_digest.clone()),
-			signature: Signature(2),
-			sender: AuthorityId(2),
-		};
-
-		table.import_statement(&context, valid_statement);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2)));
-
-		table.import_statement(&context, invalid_statement);
-
-		assert_eq!(
-			table.detected_misbehavior.get(&AuthorityId(2)).unwrap(),
-			&Misbehavior::ValidityDoubleVote(ValidityDoubleVote::ValidityAndInvalidity(
-				candidate_digest,
-				Signature(2),
-				Signature(2),
-			))
-		);
-	}
-
-	#[test]
-	fn candidate_double_signature_is_misbehavior() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(2), (GroupId(2), GroupId(246)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-
-		table.import_statement(&context, statement);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-
-		let invalid_statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(999),
-			sender: AuthorityId(1),
-		};
-
-		table.import_statement(&context, invalid_statement);
-		assert!(table.detected_misbehavior.contains_key(&AuthorityId(1)));
-	}
-
-	#[test]
-	fn validity_invalidity_double_signature_is_misbehavior() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(2), (GroupId(2), GroupId(246)));
-				map.insert(AuthorityId(3), (GroupId(2), GroupId(222)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-
-		table.import_statement(&context, statement);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-
-		// insert two validity votes from authority 2 with different signatures
-		{
-			let statement = SignedStatement {
-				statement: Statement::Valid(Digest(100)),
-				signature: Signature(2),
-				sender: AuthorityId(2),
-			};
-
-			table.import_statement(&context, statement);
-			assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2)));
-
-			let invalid_statement = SignedStatement {
-				statement: Statement::Valid(Digest(100)),
-				signature: Signature(222),
-				sender: AuthorityId(2),
-			};
-
-			table.import_statement(&context, invalid_statement);
-			assert!(table.detected_misbehavior.contains_key(&AuthorityId(2)));
-		}
-
-		// insert two invalidity votes from authority 2 with different signatures
-		{
-			let statement = SignedStatement {
-				statement: Statement::Invalid(Digest(100)),
-				signature: Signature(3),
-				sender: AuthorityId(3),
-			};
-
-			table.import_statement(&context, statement);
-			assert!(!table.detected_misbehavior.contains_key(&AuthorityId(3)));
-
-			let invalid_statement = SignedStatement {
-				statement: Statement::Invalid(Digest(100)),
-				signature: Signature(333),
-				sender: AuthorityId(3),
-			};
-
-			table.import_statement(&context, invalid_statement);
-			assert!(table.detected_misbehavior.contains_key(&AuthorityId(3)));
-		}
-	}
-
-	#[test]
-	fn issue_and_vote_is_misbehavior() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-		let candidate_digest = Digest(100);
-
-		table.import_statement(&context, statement);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-
-		let extra_vote = SignedStatement {
-			statement: Statement::Valid(candidate_digest.clone()),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-
-		table.import_statement(&context, extra_vote);
-		assert_eq!(
-			table.detected_misbehavior.get(&AuthorityId(1)).unwrap(),
-			&Misbehavior::ValidityDoubleVote(ValidityDoubleVote::IssuedAndValidity(
-				(Candidate(2, 100), Signature(1)),
-				(Digest(100), Signature(1)),
-			))
-		);
-	}
-
-	#[test]
-	fn candidate_can_be_included() {
-		let validity_threshold = 6;
-		let availability_threshold = 34;
-
-		let mut candidate = CandidateData::<TestContext> {
-			group_id: GroupId(4),
-			candidate: Candidate(4, 12345),
-			validity_votes: HashMap::new(),
-			availability_votes: HashMap::new(),
-			indicated_bad_by: Vec::new(),
-		};
-
-		assert!(!candidate.can_be_included(validity_threshold, availability_threshold));
-
-		for i in 0..validity_threshold {
-			candidate.validity_votes.insert(AuthorityId(i + 100), ValidityVote::Valid(Signature(i + 100)));
-		}
-
-		assert!(!candidate.can_be_included(validity_threshold, availability_threshold));
-
-		for i in 0..availability_threshold {
-			candidate.availability_votes.insert(AuthorityId(i + 255), Signature(i + 255));
-		}
-
-		assert!(candidate.can_be_included(validity_threshold, availability_threshold));
-
-		candidate.indicated_bad_by.push(AuthorityId(1024));
-
-		assert!(!candidate.can_be_included(validity_threshold, availability_threshold));
-	}
-
-	#[test]
-	fn includability_counter() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(2), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(3), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(4), (GroupId(455), GroupId(2)));
-				map
-			}
-		};
-
-		// have 2/3 validity guarantors note validity.
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-		let candidate_digest = Digest(100);
-
-		table.import_statement(&context, statement);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-		assert!(!table.candidate_includable(&candidate_digest, &context));
-		assert!(table.includable_count.is_empty());
-
-		let vote = SignedStatement {
-			statement: Statement::Valid(candidate_digest.clone()),
-			signature: Signature(2),
-			sender: AuthorityId(2),
-		};
-
-		table.import_statement(&context, vote);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2)));
-		assert!(!table.candidate_includable(&candidate_digest, &context));
-		assert!(table.includable_count.is_empty());
-
-		// have the availability guarantor note validity.
-		let vote = SignedStatement {
-			statement: Statement::Available(candidate_digest.clone()),
-			signature: Signature(4),
-			sender: AuthorityId(4),
-		};
-
-		table.import_statement(&context, vote);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(4)));
-		assert!(table.candidate_includable(&candidate_digest, &context));
-		assert!(table.includable_count.get(&GroupId(2)).is_some());
-
-		// have the last validity guarantor note invalidity. now it is unincludable.
-		let vote = SignedStatement {
-			statement: Statement::Invalid(candidate_digest.clone()),
-			signature: Signature(3),
-			sender: AuthorityId(3),
-		};
-
-		table.import_statement(&context, vote);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2)));
-		assert!(!table.candidate_includable(&candidate_digest, &context));
-		assert!(table.includable_count.is_empty());
-	}
-
-	#[test]
-	fn candidate_import_gives_summary() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-
-		let summary = table.import_statement(&context, statement)
-			.expect("candidate import to give summary");
-
-		assert_eq!(summary.candidate, Digest(100));
-		assert_eq!(summary.group_id, GroupId(2));
-		assert_eq!(summary.validity_votes, 1);
-		assert_eq!(summary.availability_votes, 0);
-	}
-
-	#[test]
-	fn candidate_vote_gives_summary() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(2), (GroupId(2), GroupId(455)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-		let candidate_digest = Digest(100);
-
-		table.import_statement(&context, statement);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-
-		let vote = SignedStatement {
-			statement: Statement::Valid(candidate_digest.clone()),
-			signature: Signature(2),
-			sender: AuthorityId(2),
-		};
-
-		let summary = table.import_statement(&context, vote)
-			.expect("candidate vote to give summary");
-
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2)));
-
-		assert_eq!(summary.candidate, Digest(100));
-		assert_eq!(summary.group_id, GroupId(2));
-		assert_eq!(summary.validity_votes, 2);
-		assert_eq!(summary.availability_votes, 0);
-	}
-
-	#[test]
-	fn availability_vote_gives_summary() {
-		let context = TestContext {
-			authorities: {
-				let mut map = HashMap::new();
-				map.insert(AuthorityId(1), (GroupId(2), GroupId(455)));
-				map.insert(AuthorityId(2), (GroupId(5), GroupId(2)));
-				map
-			}
-		};
-
-		let mut table = create();
-		let statement = SignedStatement {
-			statement: Statement::Candidate(Candidate(2, 100)),
-			signature: Signature(1),
-			sender: AuthorityId(1),
-		};
-		let candidate_digest = Digest(100);
-
-		table.import_statement(&context, statement);
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(1)));
-
-		let vote = SignedStatement {
-			statement: Statement::Available(candidate_digest.clone()),
-			signature: Signature(2),
-			sender: AuthorityId(2),
-		};
-
-		let summary = table.import_statement(&context, vote)
-			.expect("candidate vote to give summary");
-
-		assert!(!table.detected_misbehavior.contains_key(&AuthorityId(2)));
-
-		assert_eq!(summary.candidate, Digest(100));
-		assert_eq!(summary.group_id, GroupId(2));
-		assert_eq!(summary.validity_votes, 1);
-		assert_eq!(summary.availability_votes, 1);
-	}
-}
diff --git a/substrate/polkadot/statement-table/src/lib.rs b/substrate/polkadot/statement-table/src/lib.rs
deleted file mode 100644
index 02457ac4ae4252eca1605262f32d171e6b4c1b7a..0000000000000000000000000000000000000000
--- a/substrate/polkadot/statement-table/src/lib.rs
+++ /dev/null
@@ -1,88 +0,0 @@
-// You should have received a copy of the GNU General Public License
-// along with Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! The statement table.
-//!
-//! This stores messages other authorities issue about candidates.
-//!
-//! These messages are used to create a proposal submitted to a BFT consensus process.
-//!
-//! Proposals are formed of sets of candidates which have the requisite number of
-//! validity and availability votes.
-//!
-//! Each parachain is associated with two sets of authorities: those which can
-//! propose and attest to validity of candidates, and those who can only attest
-//! to availability.
-
-extern crate substrate_codec as codec;
-extern crate substrate_primitives;
-extern crate polkadot_primitives as primitives;
-
-#[macro_use]
-extern crate substrate_codec_derive;
-
-pub mod generic;
-
-pub use generic::Table;
-
-use primitives::parachain::{Id, CandidateReceipt, CandidateSignature as Signature};
-use primitives::{SessionKey, Hash};
-
-/// Statements about candidates on the network.
-pub type Statement = generic::Statement<CandidateReceipt, Hash>;
-
-/// Signed statements about candidates.
-pub type SignedStatement = generic::SignedStatement<CandidateReceipt, Hash, SessionKey, Signature>;
-
-/// Kinds of misbehavior, along with proof.
-pub type Misbehavior = generic::Misbehavior<CandidateReceipt, Hash, SessionKey, Signature>;
-
-/// A summary of import of a statement.
-pub type Summary = generic::Summary<Hash, Id>;
-
-/// Context necessary to construct a table.
-pub trait Context {
-	/// Whether a authority is a member of a group.
-	/// Members are meant to submit candidates and vote on validity.
-	fn is_member_of(&self, authority: &SessionKey, group: &Id) -> bool;
-
-	/// Whether a authority is an availability guarantor of a group.
-	/// Guarantors are meant to vote on availability for candidates submitted
-	/// in a group.
-	fn is_availability_guarantor_of(
-		&self,
-		authority: &SessionKey,
-		group: &Id,
-	) -> bool;
-
-	// requisite number of votes for validity and availability respectively from a group.
-	fn requisite_votes(&self, group: &Id) -> (usize, usize);
-}
-
-impl<C: Context> generic::Context for C {
-	type AuthorityId = SessionKey;
-	type Digest = Hash;
-	type GroupId = Id;
-	type Signature = Signature;
-	type Candidate = CandidateReceipt;
-
-	fn candidate_digest(candidate: &CandidateReceipt) -> Hash {
-		candidate.hash()
-	}
-
-	fn candidate_group(candidate: &CandidateReceipt) -> Id {
-		candidate.parachain_index.clone()
-	}
-
-	fn is_member_of(&self, authority: &SessionKey, group: &Id) -> bool {
-		Context::is_member_of(self, authority, group)
-	}
-
-	fn is_availability_guarantor_of(&self, authority: &SessionKey, group: &Id) -> bool {
-		Context::is_availability_guarantor_of(self, authority, group)
-	}
-
-	fn requisite_votes(&self, group: &Id) -> (usize, usize) {
-		Context::requisite_votes(self, group)
-	}
-}
diff --git a/substrate/polkadot/test-parachains/.gitignore b/substrate/polkadot/test-parachains/.gitignore
deleted file mode 100644
index 2c96eb1b6517f2617f9ddeae9f07f5fd7bd7ddef..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-target/
-Cargo.lock
diff --git a/substrate/polkadot/test-parachains/README.md b/substrate/polkadot/test-parachains/README.md
deleted file mode 100644
index 4661007f7636098b6544a21ee36a1ff5a6334d53..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Test Parachains
-
-Each parachain consists of three parts: a `#![no_std]` library with the main execution logic, a WASM crate which wraps this logic, and a collator node.
-
-Run `build.sh` in this directory to build all registered test parachains and copy the generated WASM to the `parachain/tests/res` folder.
diff --git a/substrate/polkadot/test-parachains/adder/Cargo.toml b/substrate/polkadot/test-parachains/adder/Cargo.toml
deleted file mode 100644
index 2b41ba9bfa95830a3bb2b0ac53ce67697b098fde..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/adder/Cargo.toml
+++ /dev/null
@@ -1,10 +0,0 @@
-[package]
-name = "adder"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-description = "Test parachain which adds to a number as its state transition"
-
-[dependencies]
-polkadot-parachain = { path = "../../parachain/", default-features = false }
-substrate-codec-derive = { path = "../../../substrate/codec/derive", default-features = false }
-tiny-keccak = "1.4"
diff --git a/substrate/polkadot/test-parachains/adder/collator/Cargo.toml b/substrate/polkadot/test-parachains/adder/collator/Cargo.toml
deleted file mode 100644
index 97ae48cd25c228129db81ee64e31eeb16029cbd4..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/adder/collator/Cargo.toml
+++ /dev/null
@@ -1,15 +0,0 @@
-[package]
-name = "adder-collator"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-adder = { path = ".." }
-polkadot-parachain = { path = "../../../parachain" }
-polkadot-collator = { path = "../../../collator" }
-polkadot-primitives = { path = "../../../primitives" }
-ed25519 = { path = "../../../../substrate/ed25519" }
-parking_lot = "0.4"
-ctrlc = { git = "https://github.com/paritytech/rust-ctrlc.git" }
-futures = "0.1"
-exit-future = "0.1.2"
diff --git a/substrate/polkadot/test-parachains/adder/collator/src/main.rs b/substrate/polkadot/test-parachains/adder/collator/src/main.rs
deleted file mode 100644
index a20e64b23046ca66f0ff02f89fe82f4d20ed9628..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/adder/collator/src/main.rs
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2018 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Collator for polkadot
-
-extern crate adder;
-extern crate polkadot_parachain as parachain;
-extern crate polkadot_primitives as primitives;
-extern crate polkadot_collator as collator;
-extern crate ed25519;
-extern crate parking_lot;
-extern crate ctrlc;
-extern crate futures;
-extern crate exit_future;
-
-use std::cell::RefCell;
-use std::collections::HashMap;
-use std::sync::Arc;
-
-use adder::{HeadData as AdderHead, BlockData as AdderBody};
-use ed25519::Pair;
-use parachain::codec::{Encode, Decode};
-use primitives::parachain::{HeadData, BlockData, Id as ParaId, Message};
-use collator::{InvalidHead, ParachainContext, VersionInfo};
-use parking_lot::Mutex;
-
-const GENESIS: AdderHead = AdderHead {
-	number: 0,
-	parent_hash: [0; 32],
-	post_state: [1, 27, 77, 3, 221, 140, 1, 241, 4, 145, 67, 207, 156, 76, 129, 126, 75, 22, 127, 29, 27, 131, 229, 198, 240, 241, 13, 137, 186, 30, 123, 206],
-};
-
-const GENESIS_BODY: AdderBody = AdderBody {
-	state: 0,
-	add: 0,
-};
-
-#[derive(Clone)]
-struct AdderContext {
-	db: Arc<Mutex<HashMap<AdderHead, AdderBody>>>,
-}
-
-/// The parachain context.
-impl ParachainContext for AdderContext {
-	fn produce_candidate<I: IntoIterator<Item=(ParaId, Message)>>(
-		&self,
-		last_head: HeadData,
-		_ingress: I,
-	) -> Result<(BlockData, HeadData), InvalidHead>
-	{
-		let adder_head = AdderHead::decode(&mut &last_head.0[..])
-			.ok_or(InvalidHead)?;
-
-		let mut db = self.db.lock();
-
-		let last_body = if adder_head == GENESIS {
-			GENESIS_BODY
-		} else {
-			db.get(&adder_head)
-				.expect("All past bodies stored since this is the only collator")
-				.clone()
-		};
-
-		let next_body = AdderBody {
-			state: last_body.state.overflowing_add(last_body.add).0,
-			add: adder_head.number % 100,
-		};
-
-		let next_head = ::adder::execute(adder_head.hash(), adder_head, &next_body)
-			.expect("good execution params; qed");
-
-		let encoded_head = HeadData(next_head.encode());
-		let encoded_body = BlockData(next_body.encode());
-
-		println!("Created collation for #{}, post-state={}",
-			next_head.number, next_body.state.overflowing_add(next_body.add).0);
-
-		db.insert(next_head.clone(), next_body);
-		Ok((encoded_body, encoded_head))
-	}
-}
-
-fn main() {
-	let key = Arc::new(Pair::from_seed(&[1; 32]));
-	let id: ParaId = 100.into();
-
-	println!("Starting adder collator with genesis: ");
-
-	{
-		let encoded = GENESIS.encode();
-		println!("Dec: {:?}", encoded);
-		print!("Hex: 0x");
-		for byte in encoded {
-			print!("{:02x}", byte);
-		}
-
-		println!();
-	}
-
-	// can't use signal directly here because CtrlC takes only `Fn`.
-	let (exit_send, exit) = exit_future::signal();
-
-	let exit_send_cell = RefCell::new(Some(exit_send));
-	ctrlc::CtrlC::set_handler(move || {
-		if let Some(exit_send) = exit_send_cell.try_borrow_mut().expect("signal handler not reentrant; qed").take() {
-			exit_send.fire();
-		}
-	});
-
-	let context = AdderContext {
-		db: Arc::new(Mutex::new(HashMap::new())),
-	};
-
-	let res = ::collator::run_collator(
-		context,
-		id,
-		exit,
-		key,
-		::std::env::args(),
-		VersionInfo {
-			version: "<unknown>",
-			commit: "<unknown>",
-			executable_name: "adder-collator",
-			description: "collator for adder parachain",
-			author: "parity technologies",
-		}
-	);
-
-	if let Err(e) = res {
-		println!("{}", e);
-	}
-}
diff --git a/substrate/polkadot/test-parachains/adder/src/lib.rs b/substrate/polkadot/test-parachains/adder/src/lib.rs
deleted file mode 100644
index a0491ec23b720a93124a037b14b0a180847481b8..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/adder/src/lib.rs
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! Basic parachain that adds a number as part of its state.
-
-#![no_std]
-
-#[macro_use]
-extern crate substrate_codec_derive;
-
-extern crate polkadot_parachain as parachain;
-extern crate tiny_keccak;
-
-use parachain::codec::{self, Encode};
-
-/// Head data for this parachain.
-#[derive(Default, Clone, Hash, Eq, PartialEq, Encode, Decode)]
-pub struct HeadData {
-	/// Block number
-	pub number: u64,
-	/// parent block keccak256
-	pub parent_hash: [u8; 32],
-	/// hash of post-execution state.
-	pub post_state: [u8; 32],
-}
-
-impl HeadData {
-	pub fn hash(&self) -> [u8; 32] {
-		::tiny_keccak::keccak256(&self.encode())
-	}
-}
-
-/// Block data for this parachain.
-#[derive(Default, Clone, Encode, Decode)]
-pub struct BlockData {
-	/// State to begin from.
-	pub state: u64,
-	/// Amount to add (overflowing)
-	pub add: u64,
-}
-
-pub fn hash_state(state: u64) -> [u8; 32] {
-	::tiny_keccak::keccak256(state.encode().as_slice())
-}
-
-/// Start state mismatched with parent header's state hash.
-#[derive(Debug)]
-pub struct StateMismatch;
-
-/// Execute a block body on top of given parent head, producing new parent head
-/// if valid.
-pub fn execute(parent_hash: [u8; 32], parent_head: HeadData, block_data: &BlockData) -> Result<HeadData, StateMismatch> {
-	debug_assert_eq!(parent_hash, parent_head.hash());
-
-	if hash_state(block_data.state) != parent_head.post_state {
-		return Err(StateMismatch);
-	}
-
-	let new_state = block_data.state.overflowing_add(block_data.add).0;
-
-	Ok(HeadData {
-		number: parent_head.number + 1,
-		parent_hash,
-		post_state: hash_state(new_state),
-	})
-}
diff --git a/substrate/polkadot/test-parachains/adder/src/src b/substrate/polkadot/test-parachains/adder/src/src
deleted file mode 120000
index e8310385c56dc4bbe379f43400f3181f6a59f260..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/adder/src/src
+++ /dev/null
@@ -1 +0,0 @@
-src
\ No newline at end of file
diff --git a/substrate/polkadot/test-parachains/adder/wasm/Cargo.toml b/substrate/polkadot/test-parachains/adder/wasm/Cargo.toml
deleted file mode 100644
index 087b937b646d0c5db20f589e3317970ca15339ce..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/adder/wasm/Cargo.toml
+++ /dev/null
@@ -1,20 +0,0 @@
-[package]
-name = "adder-wasm"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-adder = { path = ".." }
-polkadot-parachain = { path = "../../../parachain", default-features = false }
-wee_alloc = { version = "0.4.1" }
-pwasm-libc = { version = "0.2" }
-tiny-keccak = "1.4"
-
-[lib]
-crate-type = ["cdylib"]
-
-[target.release]
-panic = "abort"
-lto = true
-
-[workspace]
diff --git a/substrate/polkadot/test-parachains/adder/wasm/src/lib.rs b/substrate/polkadot/test-parachains/adder/wasm/src/lib.rs
deleted file mode 100644
index 0e16142647ee488358ce43dea9dcac1df4c68851..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/adder/wasm/src/lib.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2017 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-//! WASM validation for adder parachain.
-
-#![no_std]
-
-#![feature(
-	alloc, core_intrinsics, lang_items, panic_implementation, core_panic_info,
-	alloc_error_handler
-)]
-
-extern crate alloc;
-extern crate wee_alloc;
-extern crate pwasm_libc;
-extern crate adder;
-extern crate polkadot_parachain as parachain;
-extern crate tiny_keccak;
-
-// Define global allocator.
-#[global_allocator]
-static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT;
-
-use core::{intrinsics, panic};
-use parachain::ValidationResult;
-use parachain::codec::{Encode, Decode};
-use adder::{HeadData, BlockData};
-
-#[panic_implementation]
-#[no_mangle]
-pub fn panic(_info: &panic::PanicInfo) -> ! {
-	unsafe {
-		intrinsics::abort()
-	}
-}
-
-#[alloc_error_handler]
-#[no_mangle]
-pub fn oom(_: ::core::alloc::Layout) -> ! {
-	unsafe {
-		intrinsics::abort();
-	}
-}
-
-#[no_mangle]
-pub extern fn validate(offset: usize, len: usize) -> usize {
-	let params = unsafe { ::parachain::load_params(offset, len) };
-	let parent_head = HeadData::decode(&mut &params.parent_head[..])
-		.expect("invalid parent head format.");
-
-	let block_data = BlockData::decode(&mut &params.block_data[..])
-		.expect("invalid block data format.");
-
-	let parent_hash = ::tiny_keccak::keccak256(&params.parent_head[..]);
-
-	match ::adder::execute(parent_hash, parent_head, &block_data) {
-		Ok(new_head) => parachain::write_result(ValidationResult { head_data: new_head.encode() }),
-		Err(_) => panic!("execution failure"),
-	}
-}
diff --git a/substrate/polkadot/test-parachains/build.sh b/substrate/polkadot/test-parachains/build.sh
deleted file mode 100755
index d53869f2d4774d611fad28944a046ad877bf0f1a..0000000000000000000000000000000000000000
--- a/substrate/polkadot/test-parachains/build.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-set -e
-
-# Make LLD produce a binary that imports memory from the outside environment.
-export RUSTFLAGS="-C link-arg=--import-memory -C lto=fat -C panic=abort"
-
-for i in adder
-do
-	cd $i/wasm
-	cargo +nightly build --target=wasm32-unknown-unknown --release --no-default-features --target-dir target
-	wasm-gc target/wasm32-unknown-unknown/release/$i'_'wasm.wasm target/wasm32-unknown-unknown/release/$i.wasm
-	cp target/wasm32-unknown-unknown/release/$i.wasm ../../../parachain/tests/res/
-	rm -rf target
-	cd ../..
-done
diff --git a/substrate/polkadot/transaction-pool/Cargo.toml b/substrate/polkadot/transaction-pool/Cargo.toml
deleted file mode 100644
index 588db7ef0b11df017b4ffd0b79305481ac2ee80c..0000000000000000000000000000000000000000
--- a/substrate/polkadot/transaction-pool/Cargo.toml
+++ /dev/null
@@ -1,19 +0,0 @@
-[package]
-name = "polkadot-transaction-pool"
-version = "0.1.0"
-authors = ["Parity Technologies <admin@parity.io>"]
-
-[dependencies]
-log = "0.3.0"
-error-chain = "0.12"
-parking_lot = "0.4"
-polkadot-api = { path = "../api" }
-polkadot-primitives = { path = "../primitives" }
-polkadot-runtime = { path = "../runtime" }
-substrate-client = { path = "../../substrate/client" }
-substrate-codec = { path = "../../substrate/codec" }
-substrate-keyring = { path = "../../substrate/keyring" }
-substrate-extrinsic-pool = { path = "../../substrate/extrinsic-pool" }
-substrate-primitives = { path = "../../substrate/primitives" }
-substrate-runtime-primitives = { path = "../../substrate/runtime/primitives" }
-ed25519 = { path = "../../substrate/ed25519" }
diff --git a/substrate/polkadot/transaction-pool/README.adoc b/substrate/polkadot/transaction-pool/README.adoc
deleted file mode 100644
index 868a3434b3e9e3a580599d4f7cce3e1ca730da30..0000000000000000000000000000000000000000
--- a/substrate/polkadot/transaction-pool/README.adoc
+++ /dev/null
@@ -1,5 +0,0 @@
-
-= Polkadot Transactin pool
-
-placeholder
-//TODO Write content :)
diff --git a/substrate/polkadot/transaction-pool/src/error.rs b/substrate/polkadot/transaction-pool/src/error.rs
deleted file mode 100644
index 99281e8d7864174bdd43c71d0141cae90fb52377..0000000000000000000000000000000000000000
--- a/substrate/polkadot/transaction-pool/src/error.rs
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2018 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-use extrinsic_pool::{self, txpool};
-use polkadot_api;
-use primitives::Hash;
-use runtime::{Address, UncheckedExtrinsic};
-
-error_chain! {
-	links {
-		Pool(txpool::Error, txpool::ErrorKind);
-		Api(polkadot_api::Error, polkadot_api::ErrorKind);
-	}
-	errors {
-		/// Unexpected extrinsic format submitted
-		InvalidExtrinsicFormat {
-			description("Invalid extrinsic format."),
-			display("Invalid extrinsic format."),
-		}
-		/// Attempted to queue an inherent transaction.
-		IsInherent(xt: UncheckedExtrinsic) {
-			description("Inherent transactions cannot be queued."),
-			display("Inehrent transactions cannot be queued."),
-		}
-		/// Attempted to queue a transaction with bad signature.
-		BadSignature(e: &'static str) {
-			description("Transaction had bad signature."),
-			display("Transaction had bad signature: {}", e),
-		}
-		/// Attempted to queue a transaction that is already in the pool.
-		AlreadyImported(hash: Hash) {
-			description("Transaction is already in the pool."),
-			display("Transaction {:?} is already in the pool.", hash),
-		}
-		/// Import error.
-		Import(err: Box<::std::error::Error + Send>) {
-			description("Error importing transaction"),
-			display("Error importing transaction: {}", err.description()),
-		}
-		/// Runtime failure.
-		UnrecognisedAddress(who: Address) {
-			description("Unrecognised address in extrinsic"),
-			display("Unrecognised address in extrinsic: {}", who),
-		}
-		/// Extrinsic too large
-		TooLarge(got: usize, max: usize) {
-			description("Extrinsic too large"),
-			display("Extrinsic is too large ({} > {})", got, max),
-		}
-	}
-}
-
-impl extrinsic_pool::api::Error for Error {
-	fn into_pool_error(self) -> ::std::result::Result<txpool::Error, Self> {
-		match self {
-			Error(ErrorKind::Pool(e), c) => Ok(txpool::Error(e, c)),
-			e => Err(e),
-		}
-	}
-}
diff --git a/substrate/polkadot/transaction-pool/src/lib.rs b/substrate/polkadot/transaction-pool/src/lib.rs
deleted file mode 100644
index 676b0d9773b42bd3661d74d6db2c5db2d13923ba..0000000000000000000000000000000000000000
--- a/substrate/polkadot/transaction-pool/src/lib.rs
+++ /dev/null
@@ -1,742 +0,0 @@
-// Copyright 2018 Parity Technologies (UK) Ltd.
-// This file is part of Polkadot.
-
-// Polkadot 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.
-
-// Polkadot 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 Polkadot.  If not, see <http://www.gnu.org/licenses/>.
-
-extern crate ed25519;
-extern crate substrate_client as client;
-extern crate substrate_codec as codec;
-extern crate substrate_extrinsic_pool as extrinsic_pool;
-extern crate substrate_primitives;
-extern crate substrate_runtime_primitives;
-extern crate polkadot_runtime as runtime;
-extern crate polkadot_primitives as primitives;
-extern crate polkadot_api;
-extern crate parking_lot;
-
-#[cfg(test)]
-extern crate substrate_keyring;
-
-#[macro_use]
-extern crate error_chain;
-
-#[macro_use]
-extern crate log;
-
-mod error;
-
-use std::{
-	cmp::Ordering,
-	collections::HashMap,
-	ops::Deref,
-	sync::Arc,
-};
-
-use codec::{Decode, Encode};
-use extrinsic_pool::{
-	api::{ExtrinsicPool, EventStream},
-	txpool::{self, Readiness, scoring::{Change, Choice}},
-	watcher::Watcher,
-	Pool,
-	Listener,
-};
-use polkadot_api::PolkadotApi;
-use primitives::{AccountId, BlockId, Hash, Index, UncheckedExtrinsic as FutureProofUncheckedExtrinsic};
-use runtime::{Address, UncheckedExtrinsic};
-use substrate_runtime_primitives::traits::{Bounded, Checkable, Hash as HashT, BlakeTwo256};
-
-pub use extrinsic_pool::txpool::{Options, Status, LightStatus, VerifiedTransaction as VerifiedTransactionOps};
-pub use error::{Error, ErrorKind, Result};
-
-/// Maximal size of a single encoded extrinsic.
-///
-/// See also polkadot-consensus::MAX_TRANSACTIONS_SIZE
-const MAX_TRANSACTION_SIZE: usize = 4 * 1024 * 1024;
-
-/// Type alias for convenience.
-pub type CheckedExtrinsic = <UncheckedExtrinsic as Checkable<fn(Address) -> std::result::Result<AccountId, &'static str>>>::Checked;
-
-/// A verified transaction which should be includable and non-inherent.
-#[derive(Clone, Debug)]
-pub struct VerifiedTransaction {
-	original: UncheckedExtrinsic,
-	inner: Option<CheckedExtrinsic>,
-	sender: Option<AccountId>,
-	hash: Hash,
-	encoded_size: usize,
-}
-
-impl VerifiedTransaction {
-	/// Access the underlying transaction.
-	pub fn as_transaction(&self) -> &UncheckedExtrinsic {
-		&self.original
-	}
-
-	/// Convert to primitive unchecked extrinsic.
-	pub fn primitive_extrinsic(&self) -> ::primitives::UncheckedExtrinsic {
-		Decode::decode(&mut self.as_transaction().encode().as_slice())
-			.expect("UncheckedExtrinsic shares repr with Vec<u8>; qed")
-	}
-
-	/// Consume the verified transaction, yielding the checked counterpart.
-	pub fn into_inner(self) -> Option<CheckedExtrinsic> {
-		self.inner
-	}
-
-	/// Get the 256-bit hash of this transaction.
-	pub fn hash(&self) -> &Hash {
-		&self.hash
-	}
-
-	/// Get the account ID of the sender of this transaction.
-	pub fn sender(&self) -> Option<AccountId> {
-		self.sender
-	}
-
-	/// Get the account ID of the sender of this transaction.
-	pub fn index(&self) -> Index {
-		self.original.extrinsic.index
-	}
-
-	/// Get encoded size of the transaction.
-	pub fn encoded_size(&self) -> usize {
-		self.encoded_size
-	}
-
-	/// Returns `true` if the transaction is not yet fully verified.
-	pub fn is_fully_verified(&self) -> bool {
-		self.inner.is_some()
-	}
-}
-
-impl txpool::VerifiedTransaction for VerifiedTransaction {
-	type Hash = Hash;
-	type Sender = Option<AccountId>;
-
-	fn hash(&self) -> &Self::Hash {
-		&self.hash
-	}
-
-	fn sender(&self) -> &Self::Sender {
-		&self.sender
-	}
-
-	fn mem_usage(&self) -> usize {
-		self.encoded_size // TODO
-	}
-}
-
-/// Scoring implementation for polkadot transactions.
-#[derive(Debug)]
-pub struct Scoring;
-
-impl txpool::Scoring<VerifiedTransaction> for Scoring {
-	type Score = u64;
-	type Event = ();
-
-	fn compare(&self, old: &VerifiedTransaction, other: &VerifiedTransaction) -> Ordering {
-		old.index().cmp(&other.index())
-	}
-
-	fn choose(&self, old: &VerifiedTransaction, new: &VerifiedTransaction) -> Choice {
-		if old.is_fully_verified() {
-			assert!(new.is_fully_verified(), "Scoring::choose called with transactions from different senders");
-			if old.index() == new.index() {
-				// TODO [ToDr] Do we allow replacement? If yes then it should be Choice::ReplaceOld
-				return Choice::RejectNew;
-			}
-		}
-
-		// This will keep both transactions, even though they have the same indices.
-		// It's fine for not fully verified transactions, we might also allow it for
-		// verified transactions but it would mean that only one of the two is actually valid
-		// (most likely the first to be included in the block).
-		Choice::InsertNew
-	}
-
-	fn update_scores(
-		&self,
-		xts: &[txpool::Transaction<VerifiedTransaction>],
-		scores: &mut [Self::Score],
-		_change: Change<()>
-	) {
-		for i in 0..xts.len() {
-			if !xts[i].is_fully_verified() {
-				scores[i] = 0;
-			} else {
-				// all the same score since there are no fees.
-				// TODO: prioritize things like misbehavior or fishermen reports
-				scores[i] = 1;
-			}
-		}
-	}
-
-	fn should_replace(&self, old: &VerifiedTransaction, _new: &VerifiedTransaction) -> bool {
-		// Always replace not fully verified transactions.
-		!old.is_fully_verified()
-	}
-}
-
-/// Readiness evaluator for polkadot transactions.
-pub struct Ready<'a, A: 'a + PolkadotApi> {
-	at_block: BlockId,
-	api: &'a A,
-	known_nonces: HashMap<AccountId, ::primitives::Index>,
-}
-
-impl<'a, A: 'a + PolkadotApi> Ready<'a, A> {
-	/// Create a new readiness evaluator at the given block. Requires that
-	/// the ID has already been checked for local corresponding and available state.
-	fn create(at: BlockId, api: &'a A) -> Self {
-		Ready {
-			at_block: at,
-			api,
-			known_nonces: HashMap::new(),
-		}
-	}
-}
-
-impl<'a, T: 'a + PolkadotApi> Clone for Ready<'a, T> {
-	fn clone(&self) -> Self {
-		Ready {
-			at_block: self.at_block.clone(),
-			api: self.api,
-			known_nonces: self.known_nonces.clone(),
-		}
-	}
-}
-
-impl<'a, A: 'a + PolkadotApi> txpool::Ready<VerifiedTransaction> for Ready<'a, A>
-{
-	fn is_ready(&mut self, xt: &VerifiedTransaction) -> Readiness {
-		let sender = match xt.sender() {
-			Some(sender) => sender,
-			None => return Readiness::Future
-		};
-
-		trace!(target: "transaction-pool", "Checking readiness of {} (from {})", xt.hash, Hash::from(sender));
-
-		// TODO: find a way to handle index error properly -- will need changes to
-		// transaction-pool trait.
-		let (api, at_block) = (&self.api, &self.at_block);
-		let next_index = self.known_nonces.entry(sender)
-			.or_insert_with(|| api.index(at_block, sender).ok().unwrap_or_else(Bounded::max_value));
-
-		trace!(target: "transaction-pool", "Next index for sender is {}; xt index is {}", next_index, xt.original.extrinsic.index);
-
-		let result = match xt.original.extrinsic.index.cmp(&next_index) {
-			// TODO: this won't work perfectly since accounts can now be killed, returning the nonce
-			// to zero.
-			// We should detect if the index was reset and mark all transactions as `Stale` for cull to work correctly.
-			// Otherwise those transactions will keep occupying the queue.
-			// Perhaps we could mark as stale if `index - state_index` > X?
-			Ordering::Greater => Readiness::Future,
-			Ordering::Equal => Readiness::Ready,
-			// TODO [ToDr] Should mark transactions referrencing too old blockhash as `Stale` as well.
-			Ordering::Less => Readiness::Stale,
-		};
-
-		// remember to increment `next_index`
-		*next_index = next_index.saturating_add(1);
-
-		result
-	}
-}
-
-pub struct Verifier<'a, A: 'a> {
-	api: &'a A,
-	at_block: BlockId,
-}
-
-impl<'a, A> Verifier<'a, A> where
-	A: 'a + PolkadotApi,
-{
-	const NO_ACCOUNT: &'static str = "Account not found.";
-
-	fn lookup(&self, address: Address) -> ::std::result::Result<AccountId, &'static str> {
-		// TODO [ToDr] Consider introducing a cache for this.
-		match self.api.lookup(&self.at_block, address.clone()) {
-			Ok(Some(address)) => Ok(address),
-			Ok(None) => Err(Self::NO_ACCOUNT.into()),
-			Err(e) => {
-				error!("Error looking up address: {:?}: {:?}", address, e);
-				Err("API error.")
-			},
-		}
-	}
-}
-
-impl<'a, A> txpool::Verifier<UncheckedExtrinsic> for Verifier<'a, A> where
-	A: 'a + PolkadotApi,
-{
-	type VerifiedTransaction = VerifiedTransaction;
-	type Error = Error;
-
-	fn verify_transaction(&self, uxt: UncheckedExtrinsic) -> Result<Self::VerifiedTransaction> {
-		if !uxt.is_signed() {
-			bail!(ErrorKind::IsInherent(uxt))
-		}
-
-		let encoded = uxt.encode();
-		let encoded_size = encoded.len();
-
-		if encoded_size > MAX_TRANSACTION_SIZE {
-			bail!(ErrorKind::TooLarge(encoded_size, MAX_TRANSACTION_SIZE));
-		}
-
-		let hash = BlakeTwo256::hash(&encoded);
-		debug!(target: "transaction-pool", "Transaction submitted: {}", ::substrate_primitives::hexdisplay::HexDisplay::from(&encoded));
-
-		let inner = match uxt.clone().check_with(|a| self.lookup(a)) {
-			Ok(xt) => Some(xt),
-			// keep the transaction around in the future pool and attempt to promote it later.
-			Err(Self::NO_ACCOUNT) => None,
-			Err(e) => bail!(e),
-		};
-		let sender = inner.as_ref().map(|x| x.signed.clone());
-
-		if encoded_size < 1024 {
-			debug!(target: "transaction-pool", "Transaction verified: {} => {:?}", hash, uxt);
-		} else {
-			debug!(target: "transaction-pool", "Transaction verified: {} ({} bytes is too large to display)", hash, encoded_size);
-		}
-
-		Ok(VerifiedTransaction {
-			original: uxt,
-			inner,
-			sender,
-			hash,
-			encoded_size
-		})
-	}
-}
-
-/// The polkadot transaction pool.
-///
-/// Wraps a `extrinsic_pool::Pool`.
-pub struct TransactionPool<A> {
-	inner: Pool<Hash, VerifiedTransaction, Scoring, Error>,
-	api: Arc<A>,
-}
-
-impl<A> TransactionPool<A> where
-	A: PolkadotApi,
-{
-	/// Create a new transaction pool.
-	pub fn new(options: Options, api: Arc<A>) -> Self {
-		TransactionPool {
-			inner: Pool::new(options, Scoring),
-			api,
-		}
-	}
-
-	/// Attempt to directly import `UncheckedExtrinsic` without going through serialization.
-	pub fn import_unchecked_extrinsic(&self, block: BlockId, uxt: UncheckedExtrinsic) -> Result<Arc<VerifiedTransaction>> {
-		let verifier = Verifier {
-			api: &*self.api,
-			at_block: block,
-		};
-		self.inner.submit(verifier, vec![uxt]).map(|mut v| v.swap_remove(0))
-	}
-
-	/// Retry to import all semi-verified transactions (unknown account indices)
-	pub fn retry_verification(&self, block: BlockId) -> Result<()> {
-		let to_reverify = self.inner.remove_sender(None);
-		let verifier = Verifier {
-			api: &*self.api,
-			at_block: block,
-		};
-
-		self.inner.submit(verifier, to_reverify.into_iter().map(|tx| tx.original.clone()))?;
-		Ok(())
-	}
-
-	/// Reverify transaction that has been reported incorrect.
-	///
-	/// Returns `Ok(None)` in case the hash is missing, `Err(e)` in case of verification error and new transaction
-	/// reference otherwise.
-	///
-	/// TODO [ToDr] That method is currently unused, should be used together with BlockBuilder
-	/// when we detect that particular transaction has failed.
-	/// In such case we will attempt to remove or re-verify it.
-	pub fn reverify_transaction(&self, block: BlockId, hash: Hash) -> Result<Option<Arc<VerifiedTransaction>>> {
-		let result = self.inner.remove(&[hash], false).pop().expect("One hash passed; one result received; qed");
-		if let Some(tx) = result {
-			self.import_unchecked_extrinsic(block, tx.original.clone()).map(Some)
-		} else {
-			Ok(None)
-		}
-	}
-
-	/// Cull old transactions from the queue.
-	pub fn cull(&self, block: BlockId) -> Result<usize> {
-		let ready = Ready::create(block, &*self.api);
-		Ok(self.inner.cull(None, ready))
-	}
-
-	/// Cull transactions from the queue and then compute the pending set.
-	pub fn cull_and_get_pending<F, T>(&self, block: BlockId, f: F) -> Result<T> where
-		F: FnOnce(txpool::PendingIterator<VerifiedTransaction, Ready<A>, Scoring, Listener<Hash>>) -> T,
-	{
-		let ready = Ready::create(block, &*self.api);
-		self.inner.cull(None, ready.clone());
-		Ok(self.inner.pending(ready, f))
-	}
-
-	/// Remove a set of transactions idenitified by hashes.
-	pub fn remove(&self, hashes: &[Hash], is_valid: bool) -> Vec<Option<Arc<VerifiedTransaction>>> {
-		self.inner.remove(hashes, is_valid)
-	}
-}
-
-impl<A> Deref for TransactionPool<A> {
-	type Target = Pool<Hash, VerifiedTransaction, Scoring, Error>;
-
-	fn deref(&self) -> &Self::Target {
-		&self.inner
-	}
-}
-
-// TODO: more general transaction pool, which can handle more kinds of vec-encoded transactions,
-// even when runtime is out of date.
-impl<A> ExtrinsicPool<FutureProofUncheckedExtrinsic, BlockId, Hash> for TransactionPool<A> where
-	A: Send + Sync + 'static,
-	A: PolkadotApi,
-{
-	type Error = Error;
-
-	fn submit(&self, block: BlockId, xts: Vec<FutureProofUncheckedExtrinsic>) -> Result<Vec<Hash>> {
-		xts.into_iter()
-			.map(|xt| xt.encode())
-			.map(|encoded| {
-				let decoded = UncheckedExtrinsic::decode(&mut &encoded[..]).ok_or(ErrorKind::InvalidExtrinsicFormat)?;
-				let tx = self.import_unchecked_extrinsic(block, decoded)?;
-				Ok(*tx.hash())
-			})
-			.collect()
-	}
-
-	fn submit_and_watch(&self, block: BlockId, xt: FutureProofUncheckedExtrinsic) -> Result<Watcher<Hash>> {
-		let encoded = xt.encode();
-		let decoded = UncheckedExtrinsic::decode(&mut &encoded[..]).ok_or(ErrorKind::InvalidExtrinsicFormat)?;
-
-		let verifier = Verifier {
-			api: &*self.api,
-			at_block: block,
-		};
-
-		self.inner.submit_and_watch(verifier, decoded)
-	}
-
-	fn light_status(&self) -> LightStatus {
-		self.inner.light_status()
-	}
-
-	fn import_notification_stream(&self) -> EventStream {
-		self.inner.import_notification_stream()
-	}
-}
-
-#[cfg(test)]
-mod tests {
-	use std::sync::{atomic::{self, AtomicBool}, Arc};
-	use super::TransactionPool;
-	use substrate_keyring::Keyring::{self, *};
-	use codec::{Decode, Encode};
-	use polkadot_api::{PolkadotApi, BlockBuilder, Result};
-	use primitives::{AccountId, AccountIndex, Block, BlockId, Hash, Index, SessionKey,
-		UncheckedExtrinsic as FutureProofUncheckedExtrinsic};
-	use runtime::{RawAddress, Call, TimestampCall, BareExtrinsic, Extrinsic, UncheckedExtrinsic};
-	use primitives::parachain::{DutyRoster, Id as ParaId};
-	use substrate_runtime_primitives::{MaybeUnsigned, generic};
-
-	struct TestBlockBuilder;
-	impl BlockBuilder for TestBlockBuilder {
-		fn push_extrinsic(&mut self, _extrinsic: FutureProofUncheckedExtrinsic) -> Result<()> { unimplemented!() }
-		fn bake(self) -> Result<Block> { unimplemented!() }
-	}
-
-	fn number_of(at: &BlockId) -> u32 {
-		match at {
-			generic::BlockId::Number(n) => *n as u32,
-			_ => 0,
-		}
-	}
-
-	#[derive(Default, Clone)]
-	struct TestPolkadotApi {
-		no_lookup: Arc<AtomicBool>,
-	}
-
-	impl TestPolkadotApi {
-		fn without_lookup() -> Self {
-			TestPolkadotApi {
-				no_lookup: Arc::new(AtomicBool::new(true)),
-			}
-		}
-
-		pub fn enable_lookup(&self) {
-			self.no_lookup.store(false, atomic::Ordering::SeqCst);
-		}
-	}
-
-	impl PolkadotApi for TestPolkadotApi {
-		type BlockBuilder = TestBlockBuilder;
-
-		fn session_keys(&self, _at: &BlockId) -> Result<Vec<SessionKey>> { unimplemented!() }
-		fn validators(&self, _at: &BlockId) -> Result<Vec<AccountId>> { unimplemented!() }
-		fn random_seed(&self, _at: &BlockId) -> Result<Hash> { unimplemented!() }
-		fn duty_roster(&self, _at: &BlockId) -> Result<DutyRoster> { unimplemented!() }
-		fn timestamp(&self, _at: &BlockId) -> Result<u64> { unimplemented!() }
-		fn evaluate_block(&self, _at: &BlockId, _block: Block) -> Result<bool> { unimplemented!() }
-		fn active_parachains(&self, _at: &BlockId) -> Result<Vec<ParaId>> { unimplemented!() }
-		fn parachain_code(&self, _at: &BlockId, _parachain: ParaId) -> Result<Option<Vec<u8>>> { unimplemented!() }
-		fn parachain_head(&self, _at: &BlockId, _parachain: ParaId) -> Result<Option<Vec<u8>>> { unimplemented!() }
-		fn build_block(&self, _at: &BlockId, _inherent: ::primitives::InherentData) -> Result<Self::BlockBuilder> { unimplemented!() }
-		fn inherent_extrinsics(&self, _at: &BlockId, _inherent: ::primitives::InherentData) -> Result<Vec<Vec<u8>>> { unimplemented!() }
-
-		fn index(&self, _at: &BlockId, _account: AccountId) -> Result<Index> {
-			Ok((_account[0] as u32) + number_of(_at))
-		}
-		fn lookup(&self, _at: &BlockId, _address: RawAddress<AccountId, AccountIndex>) -> Result<Option<AccountId>> {
-			match _address {
-				RawAddress::Id(i) => Ok(Some(i)),
-				RawAddress::Index(_) if self.no_lookup.load(atomic::Ordering::SeqCst) => Ok(None),
-				RawAddress::Index(i) => Ok(match (i < 8, i + (number_of(_at) as u64) % 8) {
-					(false, _) => None,
-					(_, 0) => Some(Alice.to_raw_public().into()),
-					(_, 1) => Some(Bob.to_raw_public().into()),
-					(_, 2) => Some(Charlie.to_raw_public().into()),
-					(_, 3) => Some(Dave.to_raw_public().into()),
-					(_, 4) => Some(Eve.to_raw_public().into()),
-					(_, 5) => Some(Ferdie.to_raw_public().into()),
-					(_, 6) => Some(One.to_raw_public().into()),
-					(_, 7) => Some(Two.to_raw_public().into()),
-					_ => None,
-				}),
-			}
-		}
-	}
-
-	fn uxt(who: Keyring, nonce: Index, use_id: bool) -> UncheckedExtrinsic {
-		let sxt = BareExtrinsic {
-			signed: who.to_raw_public().into(),
-			index: nonce,
-			function: Call::Timestamp(TimestampCall::set(0)),
-		};
-		let sig = sxt.using_encoded(|e| who.sign(e));
-		UncheckedExtrinsic::new(Extrinsic {
-			signed: if use_id { RawAddress::Id(sxt.signed) } else { RawAddress::Index(
-				match who {
-					Alice => 0,
-					Bob => 1,
-					Charlie => 2,
-					Dave => 3,
-					Eve => 4,
-					Ferdie => 5,
-					One => 6,
-					Two => 7,
-				}
-			)},
-			index: sxt.index,
-			function: sxt.function,
-		}, MaybeUnsigned(sig.into())).using_encoded(|e| UncheckedExtrinsic::decode(&mut &e[..])).unwrap()
-	}
-
-	fn pool(api: &TestPolkadotApi) -> TransactionPool<TestPolkadotApi> {
-		TransactionPool::new(Default::default(), Arc::new(api.clone()))
-	}
-
-	#[test]
-	fn id_submission_should_work() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, true)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209)]);
-	}
-
-	#[test]
-	fn index_submission_should_work() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, false)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209)]);
-	}
-
-	#[test]
-	fn multiple_id_submission_should_work() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, true)).unwrap();
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 210, true)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209), (Some(Alice.to_raw_public().into()), 210)]);
-	}
-
-	#[test]
-	fn multiple_index_submission_should_work() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, false)).unwrap();
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 210, false)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209), (Some(Alice.to_raw_public().into()), 210)]);
-	}
-
-	#[test]
-	fn id_based_early_nonce_should_be_culled() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 208, true)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![]);
-	}
-
-	#[test]
-	fn index_based_early_nonce_should_be_culled() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 208, false)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![]);
-	}
-
-	#[test]
-	fn id_based_late_nonce_should_be_queued() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 210, true)).unwrap();
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![]);
-
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, true)).unwrap();
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209), (Some(Alice.to_raw_public().into()), 210)]);
-	}
-
-	#[test]
-	fn index_based_late_nonce_should_be_queued() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 210, false)).unwrap();
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![]);
-
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, false)).unwrap();
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![(Some(Alice.to_raw_public().into()), 209), (Some(Alice.to_raw_public().into()), 210)]);
-	}
-
-	#[test]
-	fn index_then_id_submission_should_make_progress() {
-		let api = TestPolkadotApi::without_lookup();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, false)).unwrap();
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 210, true)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![]);
-
-		api.enable_lookup();
-		pool.retry_verification(BlockId::number(0)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![
-			(Some(Alice.to_raw_public().into()), 209),
-			(Some(Alice.to_raw_public().into()), 210)
-		]);
-	}
-
-	#[test]
-	fn retrying_verification_might_not_change_anything() {
-		let api = TestPolkadotApi::without_lookup();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, false)).unwrap();
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 210, true)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![]);
-
-		pool.retry_verification(BlockId::number(1)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![]);
-	}
-
-	#[test]
-	fn id_then_index_submission_should_make_progress() {
-		let api = TestPolkadotApi::without_lookup();
-		let pool = pool(&api);
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 209, true)).unwrap();
-		pool.import_unchecked_extrinsic(BlockId::number(0), uxt(Alice, 210, false)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![
-			(Some(Alice.to_raw_public().into()), 209)
-		]);
-
-		// when
-		api.enable_lookup();
-		pool.retry_verification(BlockId::number(0)).unwrap();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(0), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![
-			(Some(Alice.to_raw_public().into()), 209),
-			(Some(Alice.to_raw_public().into()), 210)
-		]);
-	}
-
-	#[test]
-	fn index_change_should_result_in_second_tx_culled_or_future() {
-		let api = TestPolkadotApi::default();
-		let pool = pool(&api);
-		let block = BlockId::number(0);
-		pool.import_unchecked_extrinsic(block, uxt(Alice, 209, false)).unwrap();
-		let hash = *pool.import_unchecked_extrinsic(block, uxt(Alice, 210, false)).unwrap().hash();
-
-		let pending: Vec<_> = pool.cull_and_get_pending(block, |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![
-			(Some(Alice.to_raw_public().into()), 209),
-			(Some(Alice.to_raw_public().into()), 210)
-		]);
-
-		// first xt is mined, but that has a side-effect of switching index 0 from Alice to Bob.
-		// second xt now invalid signature, so it fails.
-
-		// there is no way of reporting this back to the queue right now (TODO). this should cause
-		// the queue to flush all information regarding the sender index/account.
-
-		// after this, a re-evaluation of the second's readiness should result in it being thrown
-		// out (or maybe placed in future queue).
-		let err = pool.reverify_transaction(BlockId::number(1), hash).unwrap_err();
-		match *err.kind() {
-			::error::ErrorKind::Msg(ref m) if m == "bad signature in extrinsic" => {},
-			ref e => assert!(false, "The transaction should be rejected with BadSignature error, got: {:?}", e),
-		}
-
-		let pending: Vec<_> = pool.cull_and_get_pending(BlockId::number(1), |p| p.map(|a| (a.sender(), a.index())).collect()).unwrap();
-		assert_eq!(pending, vec![]);
-
-	}
-}