diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..8d66637
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Cargo__rust_scrypt_.xml b/.idea/libraries/Cargo__rust_scrypt_.xml
new file mode 100644
index 0000000..b43b64c
--- /dev/null
+++ b/.idea/libraries/Cargo__rust_scrypt_.xml
@@ -0,0 +1,121 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/Rust__rust_scrypt_.xml b/.idea/libraries/Rust__rust_scrypt_.xml
new file mode 100644
index 0000000..c9aa681
--- /dev/null
+++ b/.idea/libraries/Rust__rust_scrypt_.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml
new file mode 100644
index 0000000..3efe9d6
--- /dev/null
+++ b/.idea/markdown-navigator.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml
new file mode 100644
index 0000000..57927c5
--- /dev/null
+++ b/.idea/markdown-navigator/profiles_settings.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..1871c1d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,236 @@
+
+
+
+
+
+
+
+
+
+
+ Abstraction issuesJava
+
+
+ Assignment issuesJava
+
+
+ BashSupport
+
+
+ Class metricsJava
+
+
+ Class structureJava
+
+
+ Clojure
+
+
+ Cloning issuesJava
+
+
+ Code maturity issuesJava
+
+
+ Code style issuesJava
+
+
+ Compiler issuesJava
+
+
+ Control FlowGroovy
+
+
+ Control flow issuesJava
+
+
+ Data flow issuesJava
+
+
+ Declaration redundancyJava
+
+
+ Dependency issuesJava
+
+
+ Encapsulation issuesJava
+
+
+ Error handlingJava
+
+
+ Finalization issuesJava
+
+
+ General
+
+
+ GeneralJava
+
+
+ Groovy
+
+
+ Guice Inspections
+
+
+ HTML
+
+
+ ImportsJava
+
+
+ Inheritance issuesJava
+
+
+ Initialization issuesJava
+
+
+ Internationalization issues
+
+
+ Internationalization issuesJava
+
+
+ J2ME issuesJava
+
+
+ JUnit issuesJava
+
+
+ Java
+
+
+ Java language level issuesJava
+
+
+ Java language level migration aidsJava
+
+
+ JavaBeans issuesJava
+
+
+ Javadoc issuesJava
+
+
+ Logging issuesJava
+
+
+ Manifest
+
+
+ Memory issuesJava
+
+
+ Method MetricsGroovy
+
+
+ Method metricsJava
+
+
+ Modularization issuesJava
+
+
+ Naming ConventionsGroovy
+
+
+ Naming conventionsJava
+
+
+ Numeric issuesJava
+
+
+ Packaging issuesJava
+
+
+ Pattern Validation
+
+
+ Performance issuesJava
+
+
+ Portability issuesJava
+
+
+ Potentially confusing code constructsGroovy
+
+
+ Probable bugsGroovy
+
+
+ Probable bugsJava
+
+
+ Properties Files
+
+
+ Properties FilesJava
+
+
+ Resource management issuesJava
+
+
+ Rust
+
+
+ Security issuesJava
+
+
+ Serialization issuesJava
+
+
+ StyleGroovy
+
+
+ Threading issuesGroovy
+
+
+ Threading issuesJava
+
+
+ Visibility issuesJava
+
+
+ XML
+
+
+ toString() issuesJava
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Go 1.6.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..36c48d6
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..619fbfc
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,921 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ scrypt_platform
+ config.h
+ warnp.h"
+ scryptenc_cpuperf.c
+ scryptenc_cpuperf.
+ scryptenc_cpuperf
+ crypto_scrypt
+ libscrypt
+ crypto_scrypt_internal
+ ca
+ calu
+ cal
+ calib
+ calibr
+ calibra
+ calibrate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ DEFINITION_ORDER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ project
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Cargo.lock b/Cargo.lock
new file mode 100644
index 0000000..f4e211f
--- /dev/null
+++ b/Cargo.lock
@@ -0,0 +1,1080 @@
+[root]
+name = "rust-scrypt"
+version = "0.1.0"
+dependencies = [
+ "emerald-core 0.1.0 (git+https://github.com/r8d8/emerald-rs.git?branch=feature/mod)",
+ "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "advapi32-sys"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "aho-corasick"
+version = "0.6.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "antidote"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "arrayvec"
+version = "0.3.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "nodrop 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "odds 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "base64"
+version = "0.5.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "bitflags"
+version = "0.9.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "byteorder"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "bytes"
+version = "0.4.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "cfg-if"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "chrono"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+ "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "core-foundation"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "core-foundation-sys"
+version = "0.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "crypt32-sys"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "dtoa"
+version = "0.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "emerald-core"
+version = "0.1.0"
+source = "git+https://github.com/r8d8/emerald-rs.git?branch=feature/mod#06689bda48afb7e40ed9daaf281b5151d9959985"
+dependencies = [
+ "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "chrono 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hyper 0.10.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "jsonrpc-core 7.0.1 (git+https://github.com/paritytech/jsonrpc.git)",
+ "jsonrpc-minihttp-server 7.0.1 (git+https://github.com/paritytech/jsonrpc.git)",
+ "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "reqwest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "secp256k1 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
+ "uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "fnv"
+version = "1.0.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "foreign-types"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "futures"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "gcc"
+version = "0.3.51"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "glob"
+version = "0.2.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "globset"
+version = "0.1.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "httparse"
+version = "1.2.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "hyper"
+version = "0.10.12"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "base64 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "httparse 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num_cpus 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
+ "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "hyper-native-tls"
+version = "0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hyper 0.10.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "native-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "idna"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-bidi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "iovec"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "itoa"
+version = "0.3.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "jsonrpc-core"
+version = "7.0.1"
+source = "git+https://github.com/paritytech/jsonrpc.git#415d0d861b5ef948584cffdacdcc7765d45071de"
+dependencies = [
+ "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "jsonrpc-minihttp-server"
+version = "7.0.1"
+source = "git+https://github.com/paritytech/jsonrpc.git#415d0d861b5ef948584cffdacdcc7765d45071de"
+dependencies = [
+ "jsonrpc-core 7.0.1 (git+https://github.com/paritytech/jsonrpc.git)",
+ "jsonrpc-server-utils 7.0.1 (git+https://github.com/paritytech/jsonrpc.git)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "parking_lot 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-minihttp 0.1.0 (git+https://github.com/tomusdrw/tokio-minihttp)",
+ "tokio-proto 0.1.0 (git+https://github.com/tomusdrw/tokio-proto)",
+ "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "jsonrpc-server-utils"
+version = "7.0.1"
+source = "git+https://github.com/paritytech/jsonrpc.git#415d0d861b5ef948584cffdacdcc7765d45071de"
+dependencies = [
+ "globset 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "jsonrpc-core 7.0.1 (git+https://github.com/paritytech/jsonrpc.git)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-core 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-io 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "kernel32-sys"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "language-tags"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "lazy_static"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "lazycell"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "libc"
+version = "0.2.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "libflate"
+version = "0.1.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "log"
+version = "0.3.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "matches"
+version = "0.1.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "memchr"
+version = "1.0.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "mime"
+version = "0.2.6"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "mio"
+version = "0.6.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)",
+ "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "miow"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "native-tls"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "openssl 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "schannel 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "security-framework 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "security-framework-sys 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "net2"
+version = "0.2.29"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "cfg-if 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "nodrop"
+version = "0.1.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "odds 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "num"
+version = "0.1.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num-bigint 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-complex 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-iter 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-rational 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "num-bigint"
+version = "0.1.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "num-complex"
+version = "0.1.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "num-integer"
+version = "0.1.34"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "num-iter"
+version = "0.1.33"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "num-rational"
+version = "0.1.38"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num-bigint 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.1.39"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "num_cpus"
+version = "1.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "odds"
+version = "0.2.25"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "openssl"
+version = "0.9.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "foreign-types 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "openssl-sys"
+version = "0.9.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "pkg-config 0.3.9 (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 = "parking_lot"
+version = "0.4.4"
+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.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread-id 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "parking_lot_core"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "smallvec 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "percent-encoding"
+version = "1.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "pkg-config"
+version = "0.3.9"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "quote"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "rand"
+version = "0.3.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "redox_syscall"
+version = "0.1.18"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "regex"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "thread_local 0.3.3 (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.4.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "reqwest"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "hyper 0.10.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hyper-native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libflate 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_urlencoded 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "rust-crypto"
+version = "0.2.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "rustc-serialize"
+version = "0.3.24"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "schannel"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "secur32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "scoped-tls"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "secp256k1"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "arrayvec 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)",
+ "gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_json 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "secur32-sys"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "security-framework"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "security-framework-sys 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "security-framework-sys"
+version = "0.1.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde"
+version = "0.6.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "serde_derive"
+version = "1.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde_derive_internals 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde_derive_internals"
+version = "0.15.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde_json"
+version = "0.6.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "num 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde_json"
+version = "1.0.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "serde_urlencoded"
+version = "0.5.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "slab"
+version = "0.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "smallvec"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "smallvec"
+version = "0.4.0"
+source = "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 = "syn"
+version = "0.11.11"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "synom"
+version = "0.11.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "take"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "tempdir"
+version = "0.3.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread-id"
+version = "3.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "thread_local"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "thread-id 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "time"
+version = "0.1.37"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)",
+ "redox_syscall 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tokio-core"
+version = "0.1.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)",
+ "scoped-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-io 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tokio-io"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tokio-minihttp"
+version = "0.1.0"
+source = "git+https://github.com/tomusdrw/tokio-minihttp#8acbafae3e77e7f7eb516b441ec84695580221dd"
+dependencies = [
+ "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "httparse 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)",
+ "time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-core 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-proto 0.1.0 (git+https://github.com/tomusdrw/tokio-proto)",
+ "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tokio-proto"
+version = "0.1.0"
+source = "git+https://github.com/tomusdrw/tokio-proto#f6ee08cb594fa2fc1b4178eaaca0855d66e68fd3"
+dependencies = [
+ "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-core 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "tokio-service"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "traitobject"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "typeable"
+version = "0.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "unicase"
+version = "1.4.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "version_check 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "unicode-bidi"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "unicode-normalization"
+version = "0.1.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "unicode-xid"
+version = "0.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "unreachable"
+version = "0.1.1"
+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 = "url"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "idna 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
+ "percent-encoding 1.0.0 (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 = "uuid"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "version_check"
+version = "0.1.2"
+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 = "winapi"
+version = "0.2.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "winapi-build"
+version = "0.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
+name = "ws2_32-sys"
+version = "0.2.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[metadata]
+"checksum advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a"
+"checksum aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699"
+"checksum antidote 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "34fde25430d87a9388dadbe6e34d7f72a462c8b43ac8d309b42b0a8505d7e2a5"
+"checksum arrayvec 0.3.23 (registry+https://github.com/rust-lang/crates.io-index)" = "699e63a93b79d717e8c3b5eb1b28b7780d0d6d9e59a72eb769291c83b0c8dc67"
+"checksum base64 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "30e93c03064e7590d0466209155251b90c22e37fab1daf2771582598b5827557"
+"checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5"
+"checksum byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c40977b0ee6b9885c9013cd41d9feffdd22deb3bb4dc3a71d901cc7a77de18c8"
+"checksum bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8b24f16593f445422331a5eed46b72f7f171f910fead4f2ea8f17e727e9c5c14"
+"checksum cfg-if 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c47d456a36ebf0536a6705c83c1cbbcb9255fbc1d905a6ded104f479268a29"
+"checksum chrono 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d9123be86fd2a8f627836c235ecdf331fdd067ecf7ac05aa1a68fbcf2429f056"
+"checksum core-foundation 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "25bfd746d203017f7d5cbd31ee5d8e17f94b6521c7af77ece6c9e4b2d4b16c67"
+"checksum core-foundation-sys 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "065a5d7ffdcbc8fa145d6f0746f3555025b9097a9e9cda59f7467abae670c78d"
+"checksum crypt32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e34988f7e069e0b2f3bfc064295161e489b2d4e04a2e4248fb94360cdf00b4ec"
+"checksum dtoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "80c8b71fd71146990a9742fc06dcbbde19161a267e0ad4e572c35162f4578c90"
+"checksum emerald-core 0.1.0 (git+https://github.com/r8d8/emerald-rs.git?branch=feature/mod)" = ""
+"checksum fnv 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6cc484842f1e2884faf56f529f960cc12ad8c71ce96cc7abba0a067c98fee344"
+"checksum foreign-types 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3e4056b9bd47f8ac5ba12be771f77a0dae796d1bbaaf5fd0b9c2d38b69b8a29d"
+"checksum futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4b63a4792d4f8f686defe3b39b92127fea6344de5d38202b2ee5a11bbbf29d6a"
+"checksum gcc 0.3.51 (registry+https://github.com/rust-lang/crates.io-index)" = "120d07f202dcc3f72859422563522b66fe6463a4c513df062874daad05f85f0a"
+"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb"
+"checksum globset 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90d069fe6beb9be359ef505650b3f73228c5591a3c4b1f32be2f4f44459ffa3a"
+"checksum httparse 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "af2f2dd97457e8fb1ae7c5a420db346af389926e36f43768b96f101546b04a07"
+"checksum hyper 0.10.12 (registry+https://github.com/rust-lang/crates.io-index)" = "0f01e4a20f5dfa5278d7762b7bdb7cab96e24378b9eca3889fbd4b5e94dc7063"
+"checksum hyper-native-tls 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "72332e4a35d3059583623b50e98e491b78f8b96c5521fcb3f428167955aa56e8"
+"checksum idna 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2233d4940b1f19f0418c158509cd7396b8d70a5db5705ce410914dc8fa603b37"
+"checksum iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29d062ee61fccdf25be172e70f34c9f6efc597e1fb8f6526e8437b2046ab26be"
+"checksum itoa 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eb2f404fbc66fd9aac13e998248505e7ecb2ad8e44ab6388684c5fb11c6c251c"
+"checksum jsonrpc-core 7.0.1 (git+https://github.com/paritytech/jsonrpc.git)" = ""
+"checksum jsonrpc-minihttp-server 7.0.1 (git+https://github.com/paritytech/jsonrpc.git)" = ""
+"checksum jsonrpc-server-utils 7.0.1 (git+https://github.com/paritytech/jsonrpc.git)" = ""
+"checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d"
+"checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a"
+"checksum lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3b37545ab726dd833ec6420aaba8231c5b320814b9029ad585555d2a03e94fbf"
+"checksum lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce12306c4739d86ee97c23139f3a34ddf0387bbf181bc7929d287025a8c3ef6b"
+"checksum libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)" = "38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc"
+"checksum libflate 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "591fb1342cbc9be24883f22f97bd7ede01dd1f3821833c4ff07435c7270cc1f6"
+"checksum log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b"
+"checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376"
+"checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4"
+"checksum mime 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ba626b8a6de5da682e1caa06bdb42a335aee5a84db8e5046a3e8ab17ba0a3ae0"
+"checksum mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9e965267d4d58496fc4f740e9861118367f13570cadf66316ed2c3f2f14d87c7"
+"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
+"checksum native-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1e94a2fc65a44729fe969cc973da87c1052ae3f000b2cb33029f14aeb85550d5"
+"checksum net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)" = "bc01404e7568680f1259aa5729539f221cb1e6d047a0d9053cab4be8a73b5d67"
+"checksum nodrop 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "52cd74cd09beba596430cc6e3091b74007169a56246e1262f0ba451ea95117b2"
+"checksum num 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "2c3a3dc9f30bf824141521b30c908a859ab190b76e20435fcd89f35eb6583887"
+"checksum num-bigint 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "6361748d02e5291c72a422dc8ed4d8464a80cb1e618971f6fffe6d52d97e3286"
+"checksum num-complex 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)" = "412dfc143c56579aa6a22c574e38ddbf724522f1280ae2b257498cccff3fb6af"
+"checksum num-integer 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)" = "ef1a4bf6f9174aa5783a9b4cc892cacd11aebad6c69ad027a0b65c6ca5f8aa37"
+"checksum num-iter 0.1.33 (registry+https://github.com/rust-lang/crates.io-index)" = "f7d1891bd7b936f12349b7d1403761c8a0b85a18b148e9da4429d5d102c1a41e"
+"checksum num-rational 0.1.38 (registry+https://github.com/rust-lang/crates.io-index)" = "33c881e104a26e1accc09449374c095ff2312c8e0c27fab7bbefe16eac7c776d"
+"checksum num-traits 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "1708c0628602a98b52fad936cf3edb9a107af06e52e49fdf0707e884456a6af6"
+"checksum num_cpus 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6e416ba127a4bb3ff398cb19546a8d0414f73352efe2857f4060d36f5fe5983a"
+"checksum odds 0.2.25 (registry+https://github.com/rust-lang/crates.io-index)" = "c3df9b730298cea3a1c3faa90b7e2f9df3a9c400d0936d6015e6165734eefcba"
+"checksum openssl 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)" = "11ba043cb65fc9af71a431b8a36ffe8686cd4751cdf70a473ec1d01066ac7e41"
+"checksum openssl-sys 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)" = "236c718c2e2c2b58a546d86ffea5194400bb15dbe01ca85325ffd357b03cf66c"
+"checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37"
+"checksum parking_lot 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "37f364e2ce5efa24c7d0b6646d5bb61145551a0112f107ffd7499f1a3e322fbd"
+"checksum parking_lot_core 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0ad2c4d148942b3560034785bf19df586ebba53351e8c78f84984147d5795eef"
+"checksum percent-encoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"
+"checksum pkg-config 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3a8b4c6b8165cd1a1cd4b9b120978131389f64bdaf456435caa41e630edba903"
+"checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a"
+"checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d"
+"checksum redox_syscall 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "3041aeb6000db123d2c9c751433f526e1f404b23213bd733167ab770c3989b4d"
+"checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"
+"checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"
+"checksum reqwest 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1d56dbe269dbe19d716b76ec8c3efce8ef84e974f5b7e5527463e8c0507d4e17"
+"checksum rust-crypto 0.2.36 (registry+https://github.com/rust-lang/crates.io-index)" = "f76d05d3993fd5f4af9434e8e436db163a12a9d40e1a58a726f27a01dfd12a2a"
+"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda"
+"checksum schannel 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4e45ac5e9e4698c1c138d2972bedcd90b81fe1efeba805449d2bdd54512de5f9"
+"checksum scoped-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d"
+"checksum secp256k1 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "89337332d12a98dd8f949f3fcfa5bc505783e9b620317ef1bbd89af7d4ca7302"
+"checksum secur32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3f412dfa83308d893101dd59c10d6fda8283465976c28c287c5c855bf8d216bc"
+"checksum security-framework 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "42ddf098d78d0b64564b23ee6345d07573e7d10e52ad86875d89ddf5f8378a02"
+"checksum security-framework-sys 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "5bacdada57ea62022500c457c8571c17dfb5e6240b7c8eac5916ffa8c7138a55"
+"checksum serde 0.6.15 (registry+https://github.com/rust-lang/crates.io-index)" = "c97b18e9e53de541f11e497357d6c5eaeb39f0cb9c8734e274abe4935f6991fa"
+"checksum serde 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f530d36fb84ec48fb7146936881f026cdbf4892028835fd9398475f82c1bb4"
+"checksum serde_derive 1.0.8 (registry+https://github.com/rust-lang/crates.io-index)" = "10552fad5500771f3902d0c5ba187c5881942b811b7ba0d8fbbfbf84d80806d3"
+"checksum serde_derive_internals 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "37aee4e0da52d801acfbc0cc219eb1eda7142112339726e427926a6f6ee65d3a"
+"checksum serde_json 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b5aaee47e038bf9552d30380d3973fff2593ee0a76d81ad4c581f267cdcadf36"
+"checksum serde_json 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "48b04779552e92037212c3615370f6bd57a40ebba7f20e554ff9f55e41a69a7b"
+"checksum serde_urlencoded 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce0fd303af908732989354c6f02e05e2e6d597152870f2c6990efb0577137480"
+"checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23"
+"checksum smallvec 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4c8cbcd6df1e117c2210e13ab5109635ad68a929fcbb8964dc965b76cb5ee013"
+"checksum smallvec 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2e40af10aafe98b4d8294ae8388d8a5cd0707c65d364872efe72d063ec44bee0"
+"checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b"
+"checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad"
+"checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6"
+"checksum take 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b157868d8ac1f56b64604539990685fa7611d8fa9e5476cf0c02cf34d32917c5"
+"checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6"
+"checksum thread-id 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8df7875b676fddfadffd96deea3b1124e5ede707d4884248931077518cf1f773"
+"checksum thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c85048c6260d17cf486ceae3282d9fb6b90be220bf5b28c400f5485ffc29f0c7"
+"checksum time 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "ffd7ccbf969a892bf83f1e441126968a07a3941c24ff522a26af9f9f4585d1a3"
+"checksum tokio-core 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6a20ba4738d283cac7495ca36e045c80c2a8df3e05dd0909b17a06646af5a7ed"
+"checksum tokio-io 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c2c3ce9739f7387a0fa65b5421e81feae92e04d603f008898f4257790ce8c2db"
+"checksum tokio-minihttp 0.1.0 (git+https://github.com/tomusdrw/tokio-minihttp)" = ""
+"checksum tokio-proto 0.1.0 (git+https://github.com/tomusdrw/tokio-proto)" = ""
+"checksum tokio-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "24da22d077e0f15f55162bdbdc661228c1581892f52074fb242678d015b45162"
+"checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079"
+"checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887"
+"checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33"
+"checksum unicode-bidi 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a6a2c4e3710edd365cd7e78383153ed739fa31af19f9172f72d3575060f5a43a"
+"checksum unicode-normalization 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "51ccda9ef9efa3f7ef5d91e8f9b83bbe6955f9bf86aec89d5cce2c874625920f"
+"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc"
+"checksum unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91"
+"checksum url 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a69a2e36a5e5ed3f3063c8c64a3b028c4d50d689fa6c862abd7cfe65f882595c"
+"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122"
+"checksum uuid 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b5d0f5103675a280a926ec2f9b7bcc2ef49367df54e8c570c3311fec919f9a8b"
+"checksum version_check 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2bb3950bf29e36796dea723df1747619dd331881aefef75b7cf1c58fdd738afe"
+"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d"
+"checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a"
+"checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc"
+"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e"
diff --git a/Cargo.toml b/Cargo.toml
new file mode 100644
index 0000000..27a41eb
--- /dev/null
+++ b/Cargo.toml
@@ -0,0 +1,12 @@
+[package]
+name = "rust-scrypt"
+version = "0.1.0"
+build = "build.rs"
+links = "scrypt"
+
+[build-dependencies]
+gcc = "0.3"
+
+
+[dependencies]
+emerald-core = {git = "https://github.com/r8d8/emerald-rs.git", branch = "feature/mod"}
\ No newline at end of file
diff --git a/build.rs b/build.rs
new file mode 100644
index 0000000..50706c2
--- /dev/null
+++ b/build.rs
@@ -0,0 +1,11 @@
+extern crate gcc;
+use std::env;
+use std::path::PathBuf;
+
+fn main() {
+ let out_path = PathBuf::from(env::var("OUT_DIR").unwrap());
+
+ gcc::compile_library("libscrypt.a", &["ext/scrypt/scrypt_ext.c"]);
+// println!("cargo:rustc-link-search=native={}", out_path.to_str().unwrap());
+// println!("cargo:rustc-link-lib=static=scrypt");
+}
\ No newline at end of file
diff --git a/ext/scrypt/cpusupport.h b/ext/scrypt/cpusupport.h
new file mode 100644
index 0000000..a542a49
--- /dev/null
+++ b/ext/scrypt/cpusupport.h
@@ -0,0 +1,105 @@
+#ifndef _CPUSUPPORT_H_
+#define _CPUSUPPORT_H_
+
+/*
+ * To enable support for non-portable CPU features at compile time, one or
+ * more CPUSUPPORT_ARCH_FEATURE macros should be defined. This can be done
+ * directly on the compiler command line via -D CPUSUPPORT_ARCH_FEATURE or
+ * -D CPUSUPPORT_ARCH_FEATURE=1; or a file can be created with the
+ * necessary #define lines and then -D CPUSUPPORT_CONFIG_FILE=cpuconfig.h
+ * (or similar) can be provided to include that file here.
+ */
+#ifdef CPUSUPPORT_CONFIG_FILE
+#include CPUSUPPORT_CONFIG_FILE
+#endif
+
+/**
+ * The CPUSUPPORT_FEATURE macro declares the necessary variables and
+ * functions for detecting CPU feature support at run time. The function
+ * defined in the macro acts to cache the result of the ..._detect function
+ * using the ..._present and ..._init variables. The _detect function and the
+ * _present and _init variables are turn defined by CPUSUPPORT_FEATURE_DECL in
+ * appropriate cpusupport_foo_bar.c file.
+ *
+ * In order to allow CPUSUPPORT_FEATURE to be used for features which do not
+ * have corresponding CPUSUPPORT_FEATURE_DECL blocks in another source file,
+ * we abuse the C preprocessor: If CPUSUPPORT_${enabler} is defined to 1, then
+ * we access _present_1, _init_1, and _detect_1; but if it is not defined, we
+ * access _present_CPUSUPPORT_${enabler} etc., which we define as static, thus
+ * preventing the compiler from emitting a reference to an external symbol.
+ *
+ * In this way, it becomes possible to issue CPUSUPPORT_FEATURE invocations
+ * for nonexistent features without running afoul of the requirement that
+ * "If an identifier declared with external linkage is used... in the entire
+ * program there shall be exactly one external definition" (C99 standard, 6.9
+ * paragraph 5). In practice, this means that users of the cpusupport code
+ * can omit build and runtime detection files without changing the framework
+ * code.
+ */
+#define CPUSUPPORT_FEATURE__(arch_feature, enabler, enabled) \
+ static int cpusupport_ ## arch_feature ## _present ## _CPUSUPPORT_ ## enabler; \
+ static int cpusupport_ ## arch_feature ## _init ## _CPUSUPPORT_ ## enabler; \
+ static inline int cpusupport_ ## arch_feature ## _detect ## _CPUSUPPORT_ ## enabler(void) { return (0); } \
+ extern int cpusupport_ ## arch_feature ## _present_ ## enabled; \
+ extern int cpusupport_ ## arch_feature ## _init_ ## enabled; \
+ int cpusupport_ ## arch_feature ## _detect_ ## enabled(void); \
+ \
+ static inline int \
+ cpusupport_ ## arch_feature(void) \
+ { \
+ \
+ if (cpusupport_ ## arch_feature ## _present_ ## enabled) \
+ return (1); \
+ else if (cpusupport_ ## arch_feature ## _init_ ## enabled) \
+ return (0); \
+ cpusupport_ ## arch_feature ## _present_ ## enabled = \
+ cpusupport_ ## arch_feature ## _detect_ ## enabled(); \
+ cpusupport_ ## arch_feature ## _init_ ## enabled = 1; \
+ return (cpusupport_ ## arch_feature ## _present_ ## enabled); \
+ } \
+ static void (* cpusupport_ ## arch_feature ## _dummyptr)(void); \
+ static inline void \
+ cpusupport_ ## arch_feature ## _dummyfunc(void) \
+ { \
+ \
+ (void)cpusupport_ ## arch_feature ## _present ## _CPUSUPPORT_ ## enabler; \
+ (void)cpusupport_ ## arch_feature ## _init ## _CPUSUPPORT_ ## enabler; \
+ (void)cpusupport_ ## arch_feature ## _detect ## _CPUSUPPORT_ ## enabler; \
+ (void)cpusupport_ ## arch_feature ## _present_ ## enabled; \
+ (void)cpusupport_ ## arch_feature ## _init_ ## enabled; \
+ (void)cpusupport_ ## arch_feature ## _detect_ ## enabled; \
+ (void)cpusupport_ ## arch_feature ## _dummyptr; \
+ } \
+ static void (* cpusupport_ ## arch_feature ## _dummyptr)(void) = cpusupport_ ## arch_feature ## _dummyfunc; \
+ struct cpusupport_ ## arch_feature ## _dummy
+#define CPUSUPPORT_FEATURE_(arch_feature, enabler, enabled) \
+ CPUSUPPORT_FEATURE__(arch_feature, enabler, enabled)
+#define CPUSUPPORT_FEATURE(arch, feature, enabler) \
+ CPUSUPPORT_FEATURE_(arch ## _ ## feature, enabler, CPUSUPPORT_ ## enabler)
+
+/*
+ * CPUSUPPORT_FEATURE_DECL(arch, feature):
+ * Macro which defines variables and provides a function declaration for
+ * detecting the presence of "feature" on the "arch" architecture. The
+ * function body following this macro expansion must return nonzero if the
+ * feature is present, or zero if the feature is not present or the detection
+ * fails for any reason.
+ */
+#define CPUSUPPORT_FEATURE_DECL(arch, feature) \
+ int cpusupport_ ## arch ## _ ## feature ## _present_1 = 0; \
+ int cpusupport_ ## arch ## _ ## feature ## _init_1 = 0; \
+ int \
+ cpusupport_ ## arch ## _ ## feature ## _detect_1(void)
+
+/*
+ * List of features. If a feature here is not enabled by the appropriate
+ * CPUSUPPORT_ARCH_FEATURE macro being defined, it has no effect; but if the
+ * relevant macro may be defined (e.g., by Build/cpusupport.sh successfully
+ * compiling Build/cpusupport-ARCH-FEATURE.c) then the C file containing the
+ * corresponding run-time detection code (cpusupport_arch_feature.c) must be
+ * compiled and linked in.
+ */
+CPUSUPPORT_FEATURE(x86, aesni, X86_AESNI);
+CPUSUPPORT_FEATURE(x86, sse2, X86_SSE2);
+
+#endif /* !_CPUSUPPORT_H_ */
diff --git a/ext/scrypt/crypto_scrypt.c b/ext/scrypt/crypto_scrypt.c
new file mode 100644
index 0000000..d38d710
--- /dev/null
+++ b/ext/scrypt/crypto_scrypt.c
@@ -0,0 +1,257 @@
+/*-
+ * Copyright 2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+/* #include "bsdtar_platform.h" */
+
+#include
+#if !defined(WINDOWS_OS)
+ #include
+ #ifndef HAVE_MMAP
+ #define HAVE_MMAP 1
+ #endif
+#endif
+#include
+#include
+#include
+#include
+
+#include "cpusupport.h"
+#include "sha256.h"
+//#include "warnp.h"
+
+#include "crypto_scrypt_smix.h"
+#include "crypto_scrypt_smix_sse2.h"
+
+#include "crypto_scrypt.h"
+#include "warnp.h"
+
+static void (*smix_func)(uint8_t *, size_t, uint64_t, void *, void *) = NULL;
+
+/**
+ * _crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen, smix):
+ * Perform the requested scrypt computation, using ${smix} as the smix routine.
+ */
+static int
+_crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
+ const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t _r, uint32_t _p,
+ uint8_t * buf, size_t buflen,
+ void (*smix)(uint8_t *, size_t, uint64_t, void *, void *))
+{
+ void * B0, * V0, * XY0;
+ uint8_t * B;
+ uint32_t * V;
+ uint32_t * XY;
+ size_t r = _r, p = _p;
+ uint32_t i;
+
+ /* Sanity-check parameters. */
+#if SIZE_MAX > UINT32_MAX
+ if (buflen > (((uint64_t)(1) << 32) - 1) * 32) {
+ errno = EFBIG;
+ goto err0;
+ }
+#endif
+ if ((uint64_t)(r) * (uint64_t)(p) >= (1 << 30)) {
+ errno = EFBIG;
+ goto err0;
+ }
+ if (((N & (N - 1)) != 0) || (N < 2)) {
+ errno = EINVAL;
+ goto err0;
+ }
+ if ((r > SIZE_MAX / 128 / p) ||
+#if SIZE_MAX / 256 <= UINT32_MAX
+ (r > (SIZE_MAX - 64) / 256) ||
+#endif
+ (N > SIZE_MAX / 128 / r)) {
+ errno = ENOMEM;
+ goto err0;
+ }
+
+ /* Allocate memory. */
+#ifdef HAVE_POSIX_MEMALIGN
+ if ((errno = posix_memalign(&B0, 64, 128 * r * p)) != 0)
+ goto err0;
+ B = (uint8_t *)(B0);
+ if ((errno = posix_memalign(&XY0, 64, 256 * r + 64)) != 0)
+ goto err1;
+ XY = (uint32_t *)(XY0);
+#if !defined(MAP_ANON) || !defined(HAVE_MMAP)
+ if ((errno = posix_memalign(&V0, 64, 128 * r * N)) != 0)
+ goto err2;
+ V = (uint32_t *)(V0);
+#endif
+#else
+ if ((B0 = malloc(128 * r * p + 63)) == NULL)
+ goto err0;
+ B = (uint8_t *)(((uintptr_t)(B0) + 63) & ~ (uintptr_t)(63));
+ if ((XY0 = malloc(256 * r + 64 + 63)) == NULL)
+ goto err1;
+ XY = (uint32_t *)(((uintptr_t)(XY0) + 63) & ~ (uintptr_t)(63));
+#if !defined(MAP_ANON) || !defined(HAVE_MMAP)
+ if ((V0 = malloc(128 * r * N + 63)) == NULL)
+ goto err2;
+ V = (uint32_t *)(((uintptr_t)(V0) + 63) & ~ (uintptr_t)(63));
+#endif
+#endif
+#if defined(MAP_ANON) && defined(HAVE_MMAP)
+ if ((V0 = mmap(NULL, 128 * r * N, PROT_READ | PROT_WRITE,
+#ifdef MAP_NOCORE
+ MAP_ANON | MAP_PRIVATE | MAP_NOCORE,
+#else
+ MAP_ANON | MAP_PRIVATE,
+#endif
+ -1, 0)) == MAP_FAILED)
+ goto err2;
+ V = (uint32_t *)(V0);
+#endif
+
+ /* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
+ PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
+
+ /* 2: for i = 0 to p - 1 do */
+ for (i = 0; i < p; i++) {
+ /* 3: B_i <-- MF(B_i, N) */
+ (smix)(&B[i * 128 * r], r, N, V, XY);
+ }
+
+ /* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
+ PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
+
+ /* Free memory. */
+#if defined(MAP_ANON) && defined(HAVE_MMAP)
+ if (munmap(V0, 128 * r * N))
+ goto err2;
+#else
+ free(V0);
+#endif
+ free(XY0);
+ free(B0);
+
+ /* Success! */
+ return (0);
+
+err2:
+ free(XY0);
+err1:
+ free(B0);
+err0:
+ /* Failure! */
+ return (-1);
+}
+
+#define TESTLEN 64
+static struct scrypt_test {
+ const char * passwd;
+ const char * salt;
+ uint64_t N;
+ uint32_t r;
+ uint32_t p;
+ uint8_t result[TESTLEN];
+} testcase = {
+ .passwd = "pleaseletmein",
+ .salt = "SodiumChloride",
+ .N = 16,
+ .r = 8,
+ .p = 1,
+ .result = {
+ 0x25, 0xa9, 0xfa, 0x20, 0x7f, 0x87, 0xca, 0x09,
+ 0xa4, 0xef, 0x8b, 0x9f, 0x77, 0x7a, 0xca, 0x16,
+ 0xbe, 0xb7, 0x84, 0xae, 0x18, 0x30, 0xbf, 0xbf,
+ 0xd3, 0x83, 0x25, 0xaa, 0xbb, 0x93, 0x77, 0xdf,
+ 0x1b, 0xa7, 0x84, 0xd7, 0x46, 0xea, 0x27, 0x3b,
+ 0xf5, 0x16, 0xa4, 0x6f, 0xbf, 0xac, 0xf5, 0x11,
+ 0xc5, 0xbe, 0xba, 0x4c, 0x4a, 0xb3, 0xac, 0xc7,
+ 0xfa, 0x6f, 0x46, 0x0b, 0x6c, 0x0f, 0x47, 0x7b,
+ }
+};
+
+static int
+testsmix(void (*smix)(uint8_t *, size_t, uint64_t, void *, void *))
+{
+ uint8_t hbuf[TESTLEN];
+
+ /* Perform the computation. */
+ if (_crypto_scrypt(
+ (const uint8_t *)testcase.passwd, strlen(testcase.passwd),
+ (const uint8_t *)testcase.salt, strlen(testcase.salt),
+ testcase.N, testcase.r, testcase.p, hbuf, TESTLEN, smix))
+ return (-1);
+
+ /* Does it match? */
+ return (memcmp(testcase.result, hbuf, TESTLEN));
+}
+
+static void
+selectsmix(void)
+{
+
+#ifdef CPUSUPPORT_X86_SSE2
+ /* If we're running on an SSE2-capable CPU, try that code. */
+ if (cpusupport_x86_sse2()) {
+ /* If SSE2ized smix works, use it. */
+ if (!testsmix(crypto_scrypt_smix_sse2)) {
+ smix_func = crypto_scrypt_smix_sse2;
+ return;
+ }
+ warn0("Disabling broken SSE2 scrypt support - please report bug!");
+ }
+#endif
+
+ /* If generic smix works, use it. */
+ if (!testsmix(crypto_scrypt_smix)) {
+ smix_func = crypto_scrypt_smix;
+ return;
+ }
+ warn0("Generic scrypt code is broken - please report bug!");
+
+ /* If we get here, something really bad happened. */
+ abort();
+}
+
+/**
+ * crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
+ * Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
+ * p, buflen) and write the result into buf. The parameters r, p, and buflen
+ * must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
+ * must be a power of 2 greater than 1.
+ *
+ * Return 0 on success; or -1 on error.
+ */
+int
+crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
+ const uint8_t * salt, size_t saltlen, uint64_t N, uint32_t _r, uint32_t _p,
+ uint8_t * buf, size_t buflen)
+{
+
+ if (smix_func == NULL)
+ selectsmix();
+
+ return (_crypto_scrypt(passwd, passwdlen, salt, saltlen, N, _r, _p,
+ buf, buflen, smix_func));
+}
diff --git a/ext/scrypt/crypto_scrypt.h b/ext/scrypt/crypto_scrypt.h
new file mode 100644
index 0000000..e7e0082
--- /dev/null
+++ b/ext/scrypt/crypto_scrypt.h
@@ -0,0 +1,47 @@
+/*-
+ * Copyright 2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+#ifndef _CRYPTO_SCRYPT_H_
+#define _CRYPTO_SCRYPT_H_
+
+#include
+#include
+
+/**
+ * crypto_scrypt(passwd, passwdlen, salt, saltlen, N, r, p, buf, buflen):
+ * Compute scrypt(passwd[0 .. passwdlen - 1], salt[0 .. saltlen - 1], N, r,
+ * p, buflen) and write the result into buf. The parameters r, p, and buflen
+ * must satisfy r * p < 2^30 and buflen <= (2^32 - 1) * 32. The parameter N
+ * must be a power of 2 greater than 1.
+ *
+ * Return 0 on success; or -1 on error.
+ */
+int crypto_scrypt(const uint8_t *, size_t, const uint8_t *, size_t, uint64_t,
+ uint32_t, uint32_t, uint8_t *, size_t);
+
+#endif /* !_CRYPTO_SCRYPT_H_ */
diff --git a/ext/scrypt/crypto_scrypt_smix.c b/ext/scrypt/crypto_scrypt_smix.c
new file mode 100644
index 0000000..da3aeb4
--- /dev/null
+++ b/ext/scrypt/crypto_scrypt_smix.c
@@ -0,0 +1,214 @@
+/*-
+ * Copyright 2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+#include
+#include
+
+#include "sysendian.h"
+
+#include "crypto_scrypt_smix.h"
+
+static void blkcpy(void *, const void *, size_t);
+static void blkxor(void *, const void *, size_t);
+static void salsa20_8(uint32_t[16]);
+static void blockmix_salsa8(const uint32_t *, uint32_t *, uint32_t *, size_t);
+static uint64_t integerify(const void *, size_t);
+
+static void
+blkcpy(void * dest, const void * src, size_t len)
+{
+ size_t * D = dest;
+ const size_t * S = src;
+ size_t L = len / sizeof(size_t);
+ size_t i;
+
+ for (i = 0; i < L; i++)
+ D[i] = S[i];
+}
+
+static void
+blkxor(void * dest, const void * src, size_t len)
+{
+ size_t * D = dest;
+ const size_t * S = src;
+ size_t L = len / sizeof(size_t);
+ size_t i;
+
+ for (i = 0; i < L; i++)
+ D[i] ^= S[i];
+}
+
+/**
+ * salsa20_8(B):
+ * Apply the salsa20/8 core to the provided block.
+ */
+static void
+salsa20_8(uint32_t B[16])
+{
+ uint32_t x[16];
+ size_t i;
+
+ blkcpy(x, B, 64);
+ for (i = 0; i < 8; i += 2) {
+#define R(a,b) (((a) << (b)) | ((a) >> (32 - (b))))
+ /* Operate on columns. */
+ x[ 4] ^= R(x[ 0]+x[12], 7); x[ 8] ^= R(x[ 4]+x[ 0], 9);
+ x[12] ^= R(x[ 8]+x[ 4],13); x[ 0] ^= R(x[12]+x[ 8],18);
+
+ x[ 9] ^= R(x[ 5]+x[ 1], 7); x[13] ^= R(x[ 9]+x[ 5], 9);
+ x[ 1] ^= R(x[13]+x[ 9],13); x[ 5] ^= R(x[ 1]+x[13],18);
+
+ x[14] ^= R(x[10]+x[ 6], 7); x[ 2] ^= R(x[14]+x[10], 9);
+ x[ 6] ^= R(x[ 2]+x[14],13); x[10] ^= R(x[ 6]+x[ 2],18);
+
+ x[ 3] ^= R(x[15]+x[11], 7); x[ 7] ^= R(x[ 3]+x[15], 9);
+ x[11] ^= R(x[ 7]+x[ 3],13); x[15] ^= R(x[11]+x[ 7],18);
+
+ /* Operate on rows. */
+ x[ 1] ^= R(x[ 0]+x[ 3], 7); x[ 2] ^= R(x[ 1]+x[ 0], 9);
+ x[ 3] ^= R(x[ 2]+x[ 1],13); x[ 0] ^= R(x[ 3]+x[ 2],18);
+
+ x[ 6] ^= R(x[ 5]+x[ 4], 7); x[ 7] ^= R(x[ 6]+x[ 5], 9);
+ x[ 4] ^= R(x[ 7]+x[ 6],13); x[ 5] ^= R(x[ 4]+x[ 7],18);
+
+ x[11] ^= R(x[10]+x[ 9], 7); x[ 8] ^= R(x[11]+x[10], 9);
+ x[ 9] ^= R(x[ 8]+x[11],13); x[10] ^= R(x[ 9]+x[ 8],18);
+
+ x[12] ^= R(x[15]+x[14], 7); x[13] ^= R(x[12]+x[15], 9);
+ x[14] ^= R(x[13]+x[12],13); x[15] ^= R(x[14]+x[13],18);
+#undef R
+ }
+ for (i = 0; i < 16; i++)
+ B[i] += x[i];
+}
+
+/**
+ * blockmix_salsa8(Bin, Bout, X, r):
+ * Compute Bout = BlockMix_{salsa20/8, r}(Bin). The input Bin must be 128r
+ * bytes in length; the output Bout must also be the same size. The
+ * temporary space X must be 64 bytes.
+ */
+static void
+blockmix_salsa8(const uint32_t * Bin, uint32_t * Bout, uint32_t * X, size_t r)
+{
+ size_t i;
+
+ /* 1: X <-- B_{2r - 1} */
+ blkcpy(X, &Bin[(2 * r - 1) * 16], 64);
+
+ /* 2: for i = 0 to 2r - 1 do */
+ for (i = 0; i < 2 * r; i += 2) {
+ /* 3: X <-- H(X \xor B_i) */
+ blkxor(X, &Bin[i * 16], 64);
+ salsa20_8(X);
+
+ /* 4: Y_i <-- X */
+ /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
+ blkcpy(&Bout[i * 8], X, 64);
+
+ /* 3: X <-- H(X \xor B_i) */
+ blkxor(X, &Bin[i * 16 + 16], 64);
+ salsa20_8(X);
+
+ /* 4: Y_i <-- X */
+ /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
+ blkcpy(&Bout[i * 8 + r * 16], X, 64);
+ }
+}
+
+/**
+ * integerify(B, r):
+ * Return the result of parsing B_{2r-1} as a little-endian integer.
+ */
+static uint64_t
+integerify(const void * B, size_t r)
+{
+ const uint32_t * X = (const void *)((uintptr_t)(B) + (2 * r - 1) * 64);
+
+ return (((uint64_t)(X[1]) << 32) + X[0]);
+}
+
+/**
+ * crypto_scrypt_smix(B, r, N, V, XY):
+ * Compute B = SMix_r(B, N). The input B must be 128r bytes in length;
+ * the temporary storage V must be 128rN bytes in length; the temporary
+ * storage XY must be 256r + 64 bytes in length. The value N must be a
+ * power of 2 greater than 1. The arrays B, V, and XY must be aligned to a
+ * multiple of 64 bytes.
+ */
+void
+crypto_scrypt_smix(uint8_t * B, size_t r, uint64_t N, void * _V, void * XY)
+{
+ uint32_t * X = XY;
+ uint32_t * Y = (void *)((uint8_t *)(XY) + 128 * r);
+ uint32_t * Z = (void *)((uint8_t *)(XY) + 256 * r);
+ uint32_t * V = _V;
+ uint64_t i;
+ uint64_t j;
+ size_t k;
+
+ /* 1: X <-- B */
+ for (k = 0; k < 32 * r; k++)
+ X[k] = le32dec(&B[4 * k]);
+
+ /* 2: for i = 0 to N - 1 do */
+ for (i = 0; i < N; i += 2) {
+ /* 3: V_i <-- X */
+ blkcpy(&V[i * (32 * r)], X, 128 * r);
+
+ /* 4: X <-- H(X) */
+ blockmix_salsa8(X, Y, Z, r);
+
+ /* 3: V_i <-- X */
+ blkcpy(&V[(i + 1) * (32 * r)], Y, 128 * r);
+
+ /* 4: X <-- H(X) */
+ blockmix_salsa8(Y, X, Z, r);
+ }
+
+ /* 6: for i = 0 to N - 1 do */
+ for (i = 0; i < N; i += 2) {
+ /* 7: j <-- Integerify(X) mod N */
+ j = integerify(X, r) & (N - 1);
+
+ /* 8: X <-- H(X \xor V_j) */
+ blkxor(X, &V[j * (32 * r)], 128 * r);
+ blockmix_salsa8(X, Y, Z, r);
+
+ /* 7: j <-- Integerify(X) mod N */
+ j = integerify(Y, r) & (N - 1);
+
+ /* 8: X <-- H(X \xor V_j) */
+ blkxor(Y, &V[j * (32 * r)], 128 * r);
+ blockmix_salsa8(Y, X, Z, r);
+ }
+
+ /* 10: B' <-- X */
+ for (k = 0; k < 32 * r; k++)
+ le32enc(&B[4 * k], X[k]);
+}
diff --git a/ext/scrypt/crypto_scrypt_smix.h b/ext/scrypt/crypto_scrypt_smix.h
new file mode 100644
index 0000000..b52067f
--- /dev/null
+++ b/ext/scrypt/crypto_scrypt_smix.h
@@ -0,0 +1,14 @@
+#ifndef _CRYPTO_SCRYPT_SMIX_H_
+#define _CRYPTO_SCRYPT_SMIX_H_
+
+/**
+ * crypto_scrypt_smix(B, r, N, V, XY):
+ * Compute B = SMix_r(B, N). The input B must be 128r bytes in length;
+ * the temporary storage V must be 128rN bytes in length; the temporary
+ * storage XY must be 256r + 64 bytes in length. The value N must be a
+ * power of 2 greater than 1. The arrays B, V, and XY must be aligned to a
+ * multiple of 64 bytes.
+ */
+void crypto_scrypt_smix(uint8_t *, size_t, uint64_t, void *, void *);
+
+#endif /* !_CRYPTO_SCRYPT_SMIX_H_ */
diff --git a/ext/scrypt/crypto_scrypt_smix_sse2.c b/ext/scrypt/crypto_scrypt_smix_sse2.c
new file mode 100644
index 0000000..19dde68
--- /dev/null
+++ b/ext/scrypt/crypto_scrypt_smix_sse2.c
@@ -0,0 +1,248 @@
+/*-
+ * Copyright 2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+#include "cpusupport.h"
+#ifdef CPUSUPPORT_X86_SSE2
+
+#include
+#include
+
+#include "sysendian.h"
+
+#include "crypto_scrypt_smix_sse2.h"
+
+static void blkcpy(void *, const void *, size_t);
+static void blkxor(void *, const void *, size_t);
+static void salsa20_8(__m128i *);
+static void blockmix_salsa8(const __m128i *, __m128i *, __m128i *, size_t);
+static uint64_t integerify(const void *, size_t);
+
+static void
+blkcpy(void * dest, const void * src, size_t len)
+{
+ __m128i * D = dest;
+ const __m128i * S = src;
+ size_t L = len / 16;
+ size_t i;
+
+ for (i = 0; i < L; i++)
+ D[i] = S[i];
+}
+
+static void
+blkxor(void * dest, const void * src, size_t len)
+{
+ __m128i * D = dest;
+ const __m128i * S = src;
+ size_t L = len / 16;
+ size_t i;
+
+ for (i = 0; i < L; i++)
+ D[i] = _mm_xor_si128(D[i], S[i]);
+}
+
+/**
+ * salsa20_8(B):
+ * Apply the salsa20/8 core to the provided block.
+ */
+static void
+salsa20_8(__m128i B[4])
+{
+ __m128i X0, X1, X2, X3;
+ __m128i T;
+ size_t i;
+
+ X0 = B[0];
+ X1 = B[1];
+ X2 = B[2];
+ X3 = B[3];
+
+ for (i = 0; i < 8; i += 2) {
+ /* Operate on "columns". */
+ T = _mm_add_epi32(X0, X3);
+ X1 = _mm_xor_si128(X1, _mm_slli_epi32(T, 7));
+ X1 = _mm_xor_si128(X1, _mm_srli_epi32(T, 25));
+ T = _mm_add_epi32(X1, X0);
+ X2 = _mm_xor_si128(X2, _mm_slli_epi32(T, 9));
+ X2 = _mm_xor_si128(X2, _mm_srli_epi32(T, 23));
+ T = _mm_add_epi32(X2, X1);
+ X3 = _mm_xor_si128(X3, _mm_slli_epi32(T, 13));
+ X3 = _mm_xor_si128(X3, _mm_srli_epi32(T, 19));
+ T = _mm_add_epi32(X3, X2);
+ X0 = _mm_xor_si128(X0, _mm_slli_epi32(T, 18));
+ X0 = _mm_xor_si128(X0, _mm_srli_epi32(T, 14));
+
+ /* Rearrange data. */
+ X1 = _mm_shuffle_epi32(X1, 0x93);
+ X2 = _mm_shuffle_epi32(X2, 0x4E);
+ X3 = _mm_shuffle_epi32(X3, 0x39);
+
+ /* Operate on "rows". */
+ T = _mm_add_epi32(X0, X1);
+ X3 = _mm_xor_si128(X3, _mm_slli_epi32(T, 7));
+ X3 = _mm_xor_si128(X3, _mm_srli_epi32(T, 25));
+ T = _mm_add_epi32(X3, X0);
+ X2 = _mm_xor_si128(X2, _mm_slli_epi32(T, 9));
+ X2 = _mm_xor_si128(X2, _mm_srli_epi32(T, 23));
+ T = _mm_add_epi32(X2, X3);
+ X1 = _mm_xor_si128(X1, _mm_slli_epi32(T, 13));
+ X1 = _mm_xor_si128(X1, _mm_srli_epi32(T, 19));
+ T = _mm_add_epi32(X1, X2);
+ X0 = _mm_xor_si128(X0, _mm_slli_epi32(T, 18));
+ X0 = _mm_xor_si128(X0, _mm_srli_epi32(T, 14));
+
+ /* Rearrange data. */
+ X1 = _mm_shuffle_epi32(X1, 0x39);
+ X2 = _mm_shuffle_epi32(X2, 0x4E);
+ X3 = _mm_shuffle_epi32(X3, 0x93);
+ }
+
+ B[0] = _mm_add_epi32(B[0], X0);
+ B[1] = _mm_add_epi32(B[1], X1);
+ B[2] = _mm_add_epi32(B[2], X2);
+ B[3] = _mm_add_epi32(B[3], X3);
+}
+
+/**
+ * blockmix_salsa8(Bin, Bout, X, r):
+ * Compute Bout = BlockMix_{salsa20/8, r}(Bin). The input Bin must be 128r
+ * bytes in length; the output Bout must also be the same size. The
+ * temporary space X must be 64 bytes.
+ */
+static void
+blockmix_salsa8(const __m128i * Bin, __m128i * Bout, __m128i * X, size_t r)
+{
+ size_t i;
+
+ /* 1: X <-- B_{2r - 1} */
+ blkcpy(X, &Bin[8 * r - 4], 64);
+
+ /* 2: for i = 0 to 2r - 1 do */
+ for (i = 0; i < r; i++) {
+ /* 3: X <-- H(X \xor B_i) */
+ blkxor(X, &Bin[i * 8], 64);
+ salsa20_8(X);
+
+ /* 4: Y_i <-- X */
+ /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
+ blkcpy(&Bout[i * 4], X, 64);
+
+ /* 3: X <-- H(X \xor B_i) */
+ blkxor(X, &Bin[i * 8 + 4], 64);
+ salsa20_8(X);
+
+ /* 4: Y_i <-- X */
+ /* 6: B' <-- (Y_0, Y_2 ... Y_{2r-2}, Y_1, Y_3 ... Y_{2r-1}) */
+ blkcpy(&Bout[(r + i) * 4], X, 64);
+ }
+}
+
+/**
+ * integerify(B, r):
+ * Return the result of parsing B_{2r-1} as a little-endian integer.
+ * Note that B's layout is permuted compared to the generic implementation.
+ */
+static uint64_t
+integerify(const void * B, size_t r)
+{
+ const uint32_t * X = (const void *)((uintptr_t)(B) + (2 * r - 1) * 64);
+
+ return (((uint64_t)(X[13]) << 32) + X[0]);
+}
+
+/**
+ * crypto_scrypt_smix_sse2(B, r, N, V, XY):
+ * Compute B = SMix_r(B, N). The input B must be 128r bytes in length;
+ * the temporary storage V must be 128rN bytes in length; the temporary
+ * storage XY must be 256r + 64 bytes in length. The value N must be a
+ * power of 2 greater than 1. The arrays B, V, and XY must be aligned to a
+ * multiple of 64 bytes.
+ *
+ * Use SSE2 instructions.
+ */
+void
+crypto_scrypt_smix_sse2(uint8_t * B, size_t r, uint64_t N, void * V, void * XY)
+{
+ __m128i * X = XY;
+ __m128i * Y = (void *)((uintptr_t)(XY) + 128 * r);
+ __m128i * Z = (void *)((uintptr_t)(XY) + 256 * r);
+ uint32_t * X32 = (void *)X;
+ uint64_t i, j;
+ size_t k;
+
+ /* 1: X <-- B */
+ for (k = 0; k < 2 * r; k++) {
+ for (i = 0; i < 16; i++) {
+ X32[k * 16 + i] =
+ le32dec(&B[(k * 16 + (i * 5 % 16)) * 4]);
+ }
+ }
+
+ /* 2: for i = 0 to N - 1 do */
+ for (i = 0; i < N; i += 2) {
+ /* 3: V_i <-- X */
+ blkcpy((void *)((uintptr_t)(V) + i * 128 * r), X, 128 * r);
+
+ /* 4: X <-- H(X) */
+ blockmix_salsa8(X, Y, Z, r);
+
+ /* 3: V_i <-- X */
+ blkcpy((void *)((uintptr_t)(V) + (i + 1) * 128 * r),
+ Y, 128 * r);
+
+ /* 4: X <-- H(X) */
+ blockmix_salsa8(Y, X, Z, r);
+ }
+
+ /* 6: for i = 0 to N - 1 do */
+ for (i = 0; i < N; i += 2) {
+ /* 7: j <-- Integerify(X) mod N */
+ j = integerify(X, r) & (N - 1);
+
+ /* 8: X <-- H(X \xor V_j) */
+ blkxor(X, (void *)((uintptr_t)(V) + j * 128 * r), 128 * r);
+ blockmix_salsa8(X, Y, Z, r);
+
+ /* 7: j <-- Integerify(X) mod N */
+ j = integerify(Y, r) & (N - 1);
+
+ /* 8: X <-- H(X \xor V_j) */
+ blkxor(Y, (void *)((uintptr_t)(V) + j * 128 * r), 128 * r);
+ blockmix_salsa8(Y, X, Z, r);
+ }
+
+ /* 10: B' <-- X */
+ for (k = 0; k < 2 * r; k++) {
+ for (i = 0; i < 16; i++) {
+ le32enc(&B[(k * 16 + (i * 5 % 16)) * 4],
+ X32[k * 16 + i]);
+ }
+ }
+}
+
+#endif /* CPUSUPPORT_X86_SSE2 */
diff --git a/ext/scrypt/crypto_scrypt_smix_sse2.h b/ext/scrypt/crypto_scrypt_smix_sse2.h
new file mode 100644
index 0000000..eda43a4
--- /dev/null
+++ b/ext/scrypt/crypto_scrypt_smix_sse2.h
@@ -0,0 +1,16 @@
+#ifndef _CRYPTO_SCRYPT_SMIX_SSE2_H_
+#define _CRYPTO_SCRYPT_SMIX_SSE2_H_
+
+/**
+ * crypto_scrypt_smix_sse2(B, r, N, V, XY):
+ * Compute B = SMix_r(B, N). The input B must be 128r bytes in length;
+ * the temporary storage V must be 128rN bytes in length; the temporary
+ * storage XY must be 256r + 64 bytes in length. The value N must be a
+ * power of 2 greater than 1. The arrays B, V, and XY must be aligned to a
+ * multiple of 64 bytes.
+ *
+ * Use SSE2 instructions.
+ */
+void crypto_scrypt_smix_sse2(uint8_t *, size_t, uint64_t, void *, void *);
+
+#endif /* !_CRYPTO_SCRYPT_SMIX_SSE2_H_ */
diff --git a/ext/scrypt/insecure_memzero.c b/ext/scrypt/insecure_memzero.c
new file mode 100644
index 0000000..bd26bac
--- /dev/null
+++ b/ext/scrypt/insecure_memzero.c
@@ -0,0 +1,19 @@
+#include
+#include
+
+#include "insecure_memzero.h"
+
+/* Function which does the zeroing. */
+static void
+insecure_memzero_func(volatile void * buf, size_t len)
+{
+ volatile uint8_t * _buf = buf;
+ size_t i;
+
+ for (i = 0; i < len; i++)
+ _buf[i] = 0;
+}
+
+/* Pointer to memory-zeroing function. */
+void (* volatile insecure_memzero_ptr)(volatile void *, size_t) =
+ insecure_memzero_func;
diff --git a/ext/scrypt/insecure_memzero.h b/ext/scrypt/insecure_memzero.h
new file mode 100644
index 0000000..1c3f06b
--- /dev/null
+++ b/ext/scrypt/insecure_memzero.h
@@ -0,0 +1,37 @@
+#ifndef _INSECURE_MEMZERO_H_
+#define _INSECURE_MEMZERO_H_
+
+#include
+
+/* Pointer to memory-zeroing function. */
+extern void (* volatile insecure_memzero_ptr)(volatile void *, size_t);
+
+/**
+ * insecure_memzero(buf, len):
+ * Attempt to zero ${len} bytes at ${buf} in spite of optimizing compilers'
+ * best (standards-compliant) attempts to remove the buffer-zeroing. In
+ * particular, to avoid performing the zeroing, a compiler would need to
+ * use optimistic devirtualization; recognize that non-volatile objects do not
+ * need to be treated as volatile, even if they are accessed via volatile
+ * qualified pointers; and perform link-time optimization; in addition to the
+ * dead-code elimination which often causes buffer-zeroing to be elided.
+ *
+ * Note however that zeroing a buffer does not guarantee that the data held
+ * in the buffer is not stored elsewhere; in particular, there may be copies
+ * held in CPU registers or in anonymous allocations on the stack, even if
+ * every named variable is successfully sanitized. Solving the "wipe data
+ * from the system" problem will require a C language extension which does not
+ * yet exist.
+ *
+ * For more information, see:
+ * http://www.daemonology.net/blog/2014-09-04-how-to-zero-a-buffer.html
+ * http://www.daemonology.net/blog/2014-09-06-zeroing-buffers-is-insufficient.html
+ */
+static inline void
+insecure_memzero(volatile void * buf, size_t len)
+{
+
+ (insecure_memzero_ptr)(buf, len);
+}
+
+#endif /* !_INSECURE_MEMZERO_H_ */
diff --git a/ext/scrypt/memlimit.c b/ext/scrypt/memlimit.c
new file mode 100644
index 0000000..06311a3
--- /dev/null
+++ b/ext/scrypt/memlimit.c
@@ -0,0 +1,307 @@
+/*-
+ * Copyright 2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+#include "scrypt_platform.h"
+
+#include
+#ifndef __MINGW32__
+#include
+#endif
+
+#ifdef HAVE_SYS_PARAM_H
+#include
+#endif
+#ifdef HAVE_SYSCTL_HW_USERMEM
+#include
+#endif
+#ifdef HAVE_SYS_SYSINFO_H
+#include
+#endif
+
+#include
+#include
+#include
+#include
+
+#ifdef DEBUG
+#include
+#endif
+
+#include "memlimit.h"
+
+#ifdef HAVE_SYSCTL_HW_USERMEM
+static int
+memlimit_sysctl_hw_usermem(size_t * memlimit)
+{
+ int mib[2];
+ uint8_t usermembuf[8];
+ size_t usermemlen = 8;
+ uint64_t usermem;
+
+ /* Ask the kernel how much RAM we have. */
+ mib[0] = CTL_HW;
+ mib[1] = HW_USERMEM;
+ if (sysctl(mib, 2, usermembuf, &usermemlen, NULL, 0))
+ return (1);
+
+ /*
+ * Parse as either a uint64_t or a uint32_t based on the length of
+ * output the kernel reports having copied out. It appears that all
+ * systems providing a sysctl interface for reading integers copy
+ * them out as system-endian values, so we don't need to worry about
+ * parsing them.
+ */
+ if (usermemlen == sizeof(uint64_t))
+ usermem = *(uint64_t *)usermembuf;
+ else if (usermemlen == sizeof(uint32_t))
+ usermem = *(uint32_t *)usermembuf;
+ else
+ return (1);
+
+ /* Return the sysctl value, but clamp to SIZE_MAX if necessary. */
+#if UINT64_MAX > SIZE_MAX
+ if (usermem > SIZE_MAX)
+ *memlimit = SIZE_MAX;
+ else
+ *memlimit = usermem;
+#else
+ *memlimit = usermem;
+#endif
+
+ /* Success! */
+ return (0);
+}
+#endif
+
+/* If we don't HAVE_STRUCT_SYSINFO, we can't use sysinfo. */
+#ifndef HAVE_STRUCT_SYSINFO
+#undef HAVE_SYSINFO
+#endif
+
+/* If we don't HAVE_STRUCT_SYSINFO_TOTALRAM, we can't use sysinfo. */
+#ifndef HAVE_STRUCT_SYSINFO_TOTALRAM
+#undef HAVE_SYSINFO
+#endif
+
+#ifdef HAVE_SYSINFO
+static int
+memlimit_sysinfo(size_t * memlimit)
+{
+ struct sysinfo info;
+ uint64_t totalmem;
+
+ /* Get information from the kernel. */
+ if (sysinfo(&info))
+ return (1);
+ totalmem = info.totalram;
+
+ /* If we're on a modern kernel, adjust based on mem_unit. */
+#ifdef HAVE_STRUCT_SYSINFO_MEM_UNIT
+ totalmem = totalmem * info.mem_unit;
+#endif
+
+ /* Return the value, but clamp to SIZE_MAX if necessary. */
+#if UINT64_MAX > SIZE_MAX
+ if (totalmem > SIZE_MAX)
+ *memlimit = SIZE_MAX;
+ else
+ *memlimit = totalmem;
+#else
+ *memlimit = totalmem;
+#endif
+
+ /* Success! */
+ return (0);
+}
+#endif /* HAVE_SYSINFO */
+
+static int
+memlimit_rlimit(size_t * memlimit)
+{
+#ifndef __MINGW32__
+ struct rlimit rl;
+ uint64_t memrlimit;
+
+ /* Find the least of... */
+ memrlimit = (uint64_t)(-1);
+
+ /* ... RLIMIT_AS... */
+#ifdef RLIMIT_AS
+ if (getrlimit(RLIMIT_AS, &rl))
+ return (1);
+ if ((rl.rlim_cur != RLIM_INFINITY) &&
+ ((uint64_t)rl.rlim_cur < memrlimit))
+ memrlimit = rl.rlim_cur;
+#endif
+
+ /* ... RLIMIT_DATA... */
+ if (getrlimit(RLIMIT_DATA, &rl))
+ return (1);
+ if ((rl.rlim_cur != RLIM_INFINITY) &&
+ ((uint64_t)rl.rlim_cur < memrlimit))
+ memrlimit = rl.rlim_cur;
+
+ /* ... and RLIMIT_RSS. */
+#ifdef RLIMIT_RSS
+ if (getrlimit(RLIMIT_RSS, &rl))
+ return (1);
+ if ((rl.rlim_cur != RLIM_INFINITY) &&
+ ((uint64_t)rl.rlim_cur < memrlimit))
+ memrlimit = rl.rlim_cur;
+#endif
+
+ /* Return the value, but clamp to SIZE_MAX if necessary. */
+#if UINT64_MAX > SIZE_MAX
+ if (memrlimit > SIZE_MAX)
+ *memlimit = SIZE_MAX;
+ else
+ *memlimit = memrlimit;
+#else
+ *memlimit = memrlimit;
+#endif
+#else
+ *memlimit = SIZE_MAX;
+#endif
+ /* Success! */
+ return (0);
+}
+
+#ifdef _SC_PHYS_PAGES
+
+/* Some systems define _SC_PAGESIZE instead of _SC_PAGE_SIZE. */
+#ifndef _SC_PAGE_SIZE
+#define _SC_PAGE_SIZE _SC_PAGESIZE
+#endif
+
+static int
+memlimit_sysconf(size_t * memlimit)
+{
+ long pagesize;
+ long physpages;
+ uint64_t totalmem;
+
+ /* Set errno to 0 in order to distinguish "no limit" from "error". */
+ errno = 0;
+
+ /* Read the two limits. */
+ if (((pagesize = sysconf(_SC_PAGE_SIZE)) == -1) ||
+ ((physpages = sysconf(_SC_PHYS_PAGES)) == -1)) {
+ /* Did an error occur? */
+ if (errno != 0)
+ return (1);
+
+ /* If not, there is no limit. */
+ totalmem = (uint64_t)(-1);
+ } else {
+ /* Compute the limit. */
+ totalmem = (uint64_t)(pagesize) * (uint64_t)(physpages);
+ }
+
+ /* Return the value, but clamp to SIZE_MAX if necessary. */
+#if UINT64_MAX > SIZE_MAX
+ if (totalmem > SIZE_MAX)
+ *memlimit = SIZE_MAX;
+ else
+ *memlimit = totalmem;
+#else
+ *memlimit = totalmem;
+#endif
+
+ /* Success! */
+ return (0);
+}
+#endif
+
+int
+memtouse(size_t maxmem, double maxmemfrac, size_t * memlimit)
+{
+ size_t sysctl_memlimit, sysinfo_memlimit, rlimit_memlimit;
+ size_t sysconf_memlimit;
+ size_t memlimit_min;
+ size_t memavail;
+
+ /* Get memory limits. */
+#ifdef HAVE_SYSCTL_HW_USERMEM
+ if (memlimit_sysctl_hw_usermem(&sysctl_memlimit))
+ return (1);
+#else
+ sysctl_memlimit = (size_t)(-1);
+#endif
+#ifdef HAVE_SYSINFO
+ if (memlimit_sysinfo(&sysinfo_memlimit))
+ return (1);
+#else
+ sysinfo_memlimit = (size_t)(-1);
+#endif
+ if (memlimit_rlimit(&rlimit_memlimit))
+ return (1);
+#ifdef _SC_PHYS_PAGES
+ if (memlimit_sysconf(&sysconf_memlimit))
+ return (1);
+#else
+ sysconf_memlimit = (size_t)(-1);
+#endif
+
+#ifdef DEBUG
+ fprintf(stderr, "Memory limits are %zu %zu %zu %zu\n",
+ sysctl_memlimit, sysinfo_memlimit, rlimit_memlimit,
+ sysconf_memlimit);
+#endif
+
+ /* Find the smallest of them. */
+ memlimit_min = (size_t)(-1);
+ if (memlimit_min > sysctl_memlimit)
+ memlimit_min = sysctl_memlimit;
+ if (memlimit_min > sysinfo_memlimit)
+ memlimit_min = sysinfo_memlimit;
+ if (memlimit_min > rlimit_memlimit)
+ memlimit_min = rlimit_memlimit;
+ if (memlimit_min > sysconf_memlimit)
+ memlimit_min = sysconf_memlimit;
+
+ /* Only use the specified fraction of the available memory. */
+ if ((maxmemfrac > 0.5) || (maxmemfrac == 0.0))
+ maxmemfrac = 0.5;
+ memavail = maxmemfrac * memlimit_min;
+
+ /* Don't use more than the specified maximum. */
+ if ((maxmem > 0) && (memavail > maxmem))
+ memavail = maxmem;
+
+ /* But always allow at least 1 MiB. */
+ if (memavail < 1048576)
+ memavail = 1048576;
+
+#ifdef DEBUG
+ fprintf(stderr, "Allowing up to %zu memory to be used\n", memavail);
+#endif
+
+ /* Return limit via the provided pointer. */
+ *memlimit = memavail;
+ return (0);
+}
diff --git a/ext/scrypt/memlimit.h b/ext/scrypt/memlimit.h
new file mode 100644
index 0000000..d3b4891
--- /dev/null
+++ b/ext/scrypt/memlimit.h
@@ -0,0 +1,42 @@
+/*-
+ * Copyright 2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+#ifndef _MEMLIMIT_H_
+#define _MEMLIMIT_H_
+
+#include
+
+/**
+ * memtouse(maxmem, maxmemfrac, memlimit):
+ * Examine the system and return via memlimit the amount of RAM which should
+ * be used -- the specified fraction of the available RAM, but no more than
+ * maxmem, and no less than 1MiB.
+ */
+int memtouse(size_t, double, size_t *);
+
+#endif /* !_MEMLIMIT_H_ */
diff --git a/ext/scrypt/scrypt_ext.c b/ext/scrypt/scrypt_ext.c
new file mode 100644
index 0000000..09f9380
--- /dev/null
+++ b/ext/scrypt/scrypt_ext.c
@@ -0,0 +1,16 @@
+#include "scrypt_ext.h"
+#include "scrypt_calibrate.h"
+#include "crypto_scrypt.h"
+
+
+typedef struct {
+ uint64_t n;
+ uint32_t r;
+ uint32_t p;
+} Calibration;
+
+
+RBFFI_EXPORT int sc_calibrate(size_t maxmem, double maxmemfrac, double maxtime, Calibration *result)
+{
+ return calibrate(maxmem, maxmemfrac, maxtime, &result->n, &result->r, &result->p); // 0 == success
+}
diff --git a/ext/scrypt/scrypt_ext.h b/ext/scrypt/scrypt_ext.h
new file mode 100644
index 0000000..487287a
--- /dev/null
+++ b/ext/scrypt/scrypt_ext.h
@@ -0,0 +1,13 @@
+#ifndef SCRYPT_EXT_H
+#define SCRYPT_EXT_H 1
+
+#ifndef RBFFI_EXPORT
+# ifdef __cplusplus
+# define RBFFI_EXPORT extern "C"
+# else
+# define RBFFI_EXPORT
+# endif
+#endif
+
+
+#endif /* SCRYPT_EXT_H */
diff --git a/ext/scrypt/scrypt_platform.h b/ext/scrypt/scrypt_platform.h
new file mode 100644
index 0000000..8f3f18b
--- /dev/null
+++ b/ext/scrypt/scrypt_platform.h
@@ -0,0 +1,4 @@
+#ifndef _SCRYPT_PLATFORM_H_
+#define _SCRYPT_PLATFORM_H_
+
+#endif
diff --git a/ext/scrypt/scryptenc_cpuperf.c b/ext/scrypt/scryptenc_cpuperf.c
new file mode 100644
index 0000000..2f8d465
--- /dev/null
+++ b/ext/scrypt/scryptenc_cpuperf.c
@@ -0,0 +1,192 @@
+/*-
+ * Copyright 2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+#include "scrypt_platform.h"
+
+#include
+
+#include
+#include
+#include
+
+#include "crypto_scrypt.h"
+
+#include "scryptenc_cpuperf.h"
+
+#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)
+struct timespec {
+ long tv_sec;
+ long tv_nsec;
+};
+#endif
+
+#ifdef HAVE_CLOCK_GETTIME
+
+static clock_t clocktouse;
+
+static int
+getclockres(double * resd)
+{
+ struct timespec res;
+
+ /*
+ * Try clocks in order of preference until we find one which works.
+ * (We assume that if clock_getres works, clock_gettime will, too.)
+ * The use of if/else/if/else/if/else rather than if/elif/elif/else
+ * is ugly but legal, and allows us to #ifdef things appropriately.
+ */
+#ifdef CLOCK_VIRTUAL
+ if (clock_getres(CLOCK_VIRTUAL, &res) == 0)
+ clocktouse = CLOCK_VIRTUAL;
+ else
+#endif
+#ifdef CLOCK_MONOTONIC
+ if (clock_getres(CLOCK_MONOTONIC, &res) == 0)
+ clocktouse = CLOCK_MONOTONIC;
+ else
+#endif
+ if (clock_getres(CLOCK_REALTIME, &res) == 0)
+ clocktouse = CLOCK_REALTIME;
+ else
+ return (-1);
+
+ /* Convert clock resolution to a double. */
+ *resd = res.tv_sec + res.tv_nsec * 0.000000001;
+
+ return (0);
+}
+
+static int
+getclocktime(struct timespec * ts)
+{
+
+ if (clock_gettime(clocktouse, ts))
+ return (-1);
+
+ return (0);
+}
+
+#else
+static int
+getclockres(double * resd)
+{
+
+ *resd = 1.0 / CLOCKS_PER_SEC;
+
+ return (0);
+}
+
+static int
+getclocktime(struct timespec * ts)
+{
+ struct timeval tv;
+
+ if (gettimeofday(&tv, NULL))
+ return (-1);
+ ts->tv_sec = tv.tv_sec;
+ ts->tv_nsec = tv.tv_usec * 1000;
+
+ return (0);
+}
+#endif
+
+static int
+getclockdiff(struct timespec * st, double * diffd)
+{
+ struct timespec en;
+
+ if (getclocktime(&en))
+ return (1);
+ *diffd = (en.tv_nsec - st->tv_nsec) * 0.000000001 +
+ (en.tv_sec - st->tv_sec);
+
+ return (0);
+}
+
+/**
+ * scryptenc_cpuperf(opps):
+ * Estimate the number of salsa20/8 cores which can be executed per second,
+ * and return the value via opps.
+ */
+int
+scryptenc_cpuperf(double * opps)
+{
+ struct timespec st;
+ double resd, diffd;
+ uint64_t i = 0;
+
+ /* Get the clock resolution. */
+ if (getclockres(&resd))
+ return (2);
+
+#ifdef DEBUG
+ fprintf(stderr, "Clock resolution is %f\n", resd);
+#endif
+
+ /* Loop until the clock ticks. */
+ if (getclocktime(&st))
+ return (2);
+ do {
+ /* Do an scrypt. */
+ if (crypto_scrypt(NULL, 0, NULL, 0, 16, 1, 1, NULL, 0))
+ return (3);
+
+ /* Has the clock ticked? */
+ if (getclockdiff(&st, &diffd))
+ return (2);
+ if (diffd > 0)
+ break;
+ } while (1);
+
+ /* Count how many scrypts we can do before the next tick. */
+ if (getclocktime(&st))
+ return (2);
+ do {
+ /* Do an scrypt. */
+ if (crypto_scrypt(NULL, 0, NULL, 0, 128, 1, 1, NULL, 0))
+ return (3);
+
+ /* We invoked the salsa20/8 core 512 times. */
+ i += 512;
+
+ /* Check if we have looped for long enough. */
+ if (getclockdiff(&st, &diffd))
+ return (2);
+ if (diffd > resd)
+ break;
+ } while (1);
+
+#ifdef DEBUG
+ fprintf(stderr, "%ju salsa20/8 cores performed in %f seconds\n",
+ (uintmax_t)i, diffd);
+#endif
+
+ /* We can do approximately i salsa20/8 cores per diffd seconds. */
+ *opps = i / diffd;
+ return (0);
+}
diff --git a/ext/scrypt/scryptenc_cpuperf.h b/ext/scrypt/scryptenc_cpuperf.h
new file mode 100644
index 0000000..e236fff
--- /dev/null
+++ b/ext/scrypt/scryptenc_cpuperf.h
@@ -0,0 +1,39 @@
+/*-
+ * Copyright 2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+#ifndef _SCRYPTENC_CPUPERF_H_
+#define _SCRYPTENC_CPUPERF_H_
+
+/**
+ * scryptenc_cpuperf(opps):
+ * Estimate the number of salsa20/8 cores which can be executed per second,
+ * and return the value via opps.
+ */
+int scryptenc_cpuperf(double *);
+
+#endif /* !_SCRYPTENC_CPUPERF_H_ */
diff --git a/ext/scrypt/sha256.c b/ext/scrypt/sha256.c
new file mode 100644
index 0000000..ef953ff
--- /dev/null
+++ b/ext/scrypt/sha256.c
@@ -0,0 +1,527 @@
+#include
+#include
+#include
+
+#include "insecure_memzero.h"
+#include "sysendian.h"
+
+#include "sha256.h"
+
+/*
+ * Encode a length len/4 vector of (uint32_t) into a length len vector of
+ * (uint8_t) in big-endian form. Assumes len is a multiple of 4.
+ */
+static void
+be32enc_vect(uint8_t * dst, const uint32_t * src, size_t len)
+{
+ size_t i;
+
+ /* Sanity-check. */
+ assert(len % 4 == 0);
+
+ /* Encode vector, one word at a time. */
+ for (i = 0; i < len / 4; i++)
+ be32enc(dst + i * 4, src[i]);
+}
+
+/*
+ * Decode a big-endian length len vector of (uint8_t) into a length
+ * len/4 vector of (uint32_t). Assumes len is a multiple of 4.
+ */
+static void
+be32dec_vect(uint32_t * dst, const uint8_t * src, size_t len)
+{
+ size_t i;
+
+ /* Sanity-check. */
+ assert(len % 4 == 0);
+
+ /* Decode vector, one word at a time. */
+ for (i = 0; i < len / 4; i++)
+ dst[i] = be32dec(src + i * 4);
+}
+
+/* SHA256 round constants. */
+static const uint32_t K[64] = {
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
+ 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
+ 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
+ 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
+ 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
+ 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+ 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
+ 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
+ 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
+ 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
+ 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+ 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
+ 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
+ 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
+ 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
+};
+
+/* Elementary functions used by SHA256 */
+#define Ch(x, y, z) ((x & (y ^ z)) ^ z)
+#define Maj(x, y, z) ((x & (y | z)) | (y & z))
+#define SHR(x, n) (x >> n)
+#define ROTR(x, n) ((x >> n) | (x << (32 - n)))
+#define S0(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22))
+#define S1(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25))
+#define s0(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHR(x, 3))
+#define s1(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHR(x, 10))
+
+/* SHA256 round function */
+#define RND(a, b, c, d, e, f, g, h, k) \
+ h += S1(e) + Ch(e, f, g) + k; \
+ d += h; \
+ h += S0(a) + Maj(a, b, c);
+
+/* Adjusted round function for rotating state */
+#define RNDr(S, W, i, ii) \
+ RND(S[(64 - i) % 8], S[(65 - i) % 8], \
+ S[(66 - i) % 8], S[(67 - i) % 8], \
+ S[(68 - i) % 8], S[(69 - i) % 8], \
+ S[(70 - i) % 8], S[(71 - i) % 8], \
+ W[i + ii] + K[i + ii])
+
+/* Message schedule computation */
+#define MSCH(W, ii, i) \
+ W[i + ii + 16] = s1(W[i + ii + 14]) + W[i + ii + 9] + s0(W[i + ii + 1]) + W[i + ii]
+
+/*
+ * SHA256 block compression function. The 256-bit state is transformed via
+ * the 512-bit input block to produce a new state.
+ */
+static void
+SHA256_Transform(uint32_t state[static restrict 8],
+ const uint8_t block[static restrict 64],
+ uint32_t W[static restrict 64], uint32_t S[static restrict 8])
+{
+ int i;
+
+ /* 1. Prepare the first part of the message schedule W. */
+ be32dec_vect(W, block, 64);
+
+ /* 2. Initialize working variables. */
+ memcpy(S, state, 32);
+
+ /* 3. Mix. */
+ for (i = 0; i < 64; i += 16) {
+ RNDr(S, W, 0, i);
+ RNDr(S, W, 1, i);
+ RNDr(S, W, 2, i);
+ RNDr(S, W, 3, i);
+ RNDr(S, W, 4, i);
+ RNDr(S, W, 5, i);
+ RNDr(S, W, 6, i);
+ RNDr(S, W, 7, i);
+ RNDr(S, W, 8, i);
+ RNDr(S, W, 9, i);
+ RNDr(S, W, 10, i);
+ RNDr(S, W, 11, i);
+ RNDr(S, W, 12, i);
+ RNDr(S, W, 13, i);
+ RNDr(S, W, 14, i);
+ RNDr(S, W, 15, i);
+
+ if (i == 48)
+ break;
+ MSCH(W, 0, i);
+ MSCH(W, 1, i);
+ MSCH(W, 2, i);
+ MSCH(W, 3, i);
+ MSCH(W, 4, i);
+ MSCH(W, 5, i);
+ MSCH(W, 6, i);
+ MSCH(W, 7, i);
+ MSCH(W, 8, i);
+ MSCH(W, 9, i);
+ MSCH(W, 10, i);
+ MSCH(W, 11, i);
+ MSCH(W, 12, i);
+ MSCH(W, 13, i);
+ MSCH(W, 14, i);
+ MSCH(W, 15, i);
+ }
+
+ /* 4. Mix local working variables into global state. */
+ for (i = 0; i < 8; i++)
+ state[i] += S[i];
+}
+
+static const uint8_t PAD[64] = {
+ 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+};
+
+/* Add padding and terminating bit-count. */
+static void
+SHA256_Pad(SHA256_CTX * ctx, uint32_t tmp32[static restrict 72])
+{
+ size_t r;
+
+ /* Figure out how many bytes we have buffered. */
+ r = (ctx->count >> 3) & 0x3f;
+
+ /* Pad to 56 mod 64, transforming if we finish a block en route. */
+ if (r < 56) {
+ /* Pad to 56 mod 64. */
+ memcpy(&ctx->buf[r], PAD, 56 - r);
+ } else {
+ /* Finish the current block and mix. */
+ memcpy(&ctx->buf[r], PAD, 64 - r);
+ SHA256_Transform(ctx->state, ctx->buf, &tmp32[0], &tmp32[64]);
+
+ /* The start of the final block is all zeroes. */
+ memset(&ctx->buf[0], 0, 56);
+ }
+
+ /* Add the terminating bit-count. */
+ be64enc(&ctx->buf[56], ctx->count);
+
+ /* Mix in the final block. */
+ SHA256_Transform(ctx->state, ctx->buf, &tmp32[0], &tmp32[64]);
+}
+
+/* Magic initialization constants. */
+static const uint32_t initstate[8] = {
+ 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,
+ 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19
+};
+
+/**
+ * SHA256_Init(ctx):
+ * Initialize the SHA256 context ${ctx}.
+ */
+void
+SHA256_Init(SHA256_CTX * ctx)
+{
+
+ /* Zero bits processed so far. */
+ ctx->count = 0;
+
+ /* Initialize state. */
+ memcpy(ctx->state, initstate, sizeof(initstate));
+}
+
+/**
+ * SHA256_Update(ctx, in, len):
+ * Input ${len} bytes from ${in} into the SHA256 context ${ctx}.
+ */
+static void
+_SHA256_Update(SHA256_CTX * ctx, const void * in, size_t len,
+ uint32_t tmp32[static restrict 72])
+{
+ uint32_t r;
+ const uint8_t * src = in;
+
+ /* Return immediately if we have nothing to do. */
+ if (len == 0)
+ return;
+
+ /* Number of bytes left in the buffer from previous updates. */
+ r = (ctx->count >> 3) & 0x3f;
+
+ /* Update number of bits. */
+ ctx->count += (uint64_t)(len) << 3;
+
+ /* Handle the case where we don't need to perform any transforms. */
+ if (len < 64 - r) {
+ memcpy(&ctx->buf[r], src, len);
+ return;
+ }
+
+ /* Finish the current block. */
+ memcpy(&ctx->buf[r], src, 64 - r);
+ SHA256_Transform(ctx->state, ctx->buf, &tmp32[0], &tmp32[64]);
+ src += 64 - r;
+ len -= 64 - r;
+
+ /* Perform complete blocks. */
+ while (len >= 64) {
+ SHA256_Transform(ctx->state, src, &tmp32[0], &tmp32[64]);
+ src += 64;
+ len -= 64;
+ }
+
+ /* Copy left over data into buffer. */
+ memcpy(ctx->buf, src, len);
+}
+
+/* Wrapper function for intermediate-values sanitization. */
+void
+SHA256_Update(SHA256_CTX * ctx, const void * in, size_t len)
+{
+ uint32_t tmp32[72];
+
+ /* Call the real function. */
+ _SHA256_Update(ctx, in, len, tmp32);
+
+ /* Clean the stack. */
+ insecure_memzero(tmp32, 288);
+}
+
+/**
+ * SHA256_Final(digest, ctx):
+ * Output the SHA256 hash of the data input to the context ${ctx} into the
+ * buffer ${digest}.
+ */
+static void
+_SHA256_Final(uint8_t digest[32], SHA256_CTX * ctx,
+ uint32_t tmp32[static restrict 72])
+{
+
+ /* Add padding. */
+ SHA256_Pad(ctx, tmp32);
+
+ /* Write the hash. */
+ be32enc_vect(digest, ctx->state, 32);
+}
+
+/* Wrapper function for intermediate-values sanitization. */
+void
+SHA256_Final(uint8_t digest[32], SHA256_CTX * ctx)
+{
+ uint32_t tmp32[72];
+
+ /* Call the real function. */
+ _SHA256_Final(digest, ctx, tmp32);
+
+ /* Clear the context state. */
+ insecure_memzero(ctx, sizeof(SHA256_CTX));
+
+ /* Clean the stack. */
+ insecure_memzero(tmp32, 288);
+}
+
+/**
+ * SHA256_Buf(in, len, digest):
+ * Compute the SHA256 hash of ${len} bytes from $in} and write it to ${digest}.
+ */
+void
+SHA256_Buf(const void * in, size_t len, uint8_t digest[32])
+{
+ SHA256_CTX ctx;
+ uint32_t tmp32[72];
+
+ SHA256_Init(&ctx);
+ _SHA256_Update(&ctx, in, len, tmp32);
+ _SHA256_Final(digest, &ctx, tmp32);
+
+ /* Clean the stack. */
+ insecure_memzero(&ctx, sizeof(SHA256_CTX));
+ insecure_memzero(tmp32, 288);
+}
+
+/**
+ * HMAC_SHA256_Init(ctx, K, Klen):
+ * Initialize the HMAC-SHA256 context ${ctx} with ${Klen} bytes of key from
+ * ${K}.
+ */
+static void
+_HMAC_SHA256_Init(HMAC_SHA256_CTX * ctx, const void * _K, size_t Klen,
+ uint32_t tmp32[static restrict 72], uint8_t pad[static restrict 64],
+ uint8_t khash[static restrict 32])
+{
+ const uint8_t * K = _K;
+ size_t i;
+
+ /* If Klen > 64, the key is really SHA256(K). */
+ if (Klen > 64) {
+ SHA256_Init(&ctx->ictx);
+ _SHA256_Update(&ctx->ictx, K, Klen, tmp32);
+ _SHA256_Final(khash, &ctx->ictx, tmp32);
+ K = khash;
+ Klen = 32;
+ }
+
+ /* Inner SHA256 operation is SHA256(K xor [block of 0x36] || data). */
+ SHA256_Init(&ctx->ictx);
+ memset(pad, 0x36, 64);
+ for (i = 0; i < Klen; i++)
+ pad[i] ^= K[i];
+ _SHA256_Update(&ctx->ictx, pad, 64, tmp32);
+
+ /* Outer SHA256 operation is SHA256(K xor [block of 0x5c] || hash). */
+ SHA256_Init(&ctx->octx);
+ memset(pad, 0x5c, 64);
+ for (i = 0; i < Klen; i++)
+ pad[i] ^= K[i];
+ _SHA256_Update(&ctx->octx, pad, 64, tmp32);
+}
+
+/* Wrapper function for intermediate-values sanitization. */
+void
+HMAC_SHA256_Init(HMAC_SHA256_CTX * ctx, const void * _K, size_t Klen)
+{
+ uint32_t tmp32[72];
+ uint8_t pad[64];
+ uint8_t khash[32];
+
+ /* Call the real function. */
+ _HMAC_SHA256_Init(ctx, _K, Klen, tmp32, pad, khash);
+
+ /* Clean the stack. */
+ insecure_memzero(tmp32, 288);
+ insecure_memzero(khash, 32);
+ insecure_memzero(pad, 64);
+}
+
+/**
+ * HMAC_SHA256_Update(ctx, in, len):
+ * Input ${len} bytes from ${in} into the HMAC-SHA256 context ${ctx}.
+ */
+static void
+_HMAC_SHA256_Update(HMAC_SHA256_CTX * ctx, const void * in, size_t len,
+ uint32_t tmp32[static restrict 72])
+{
+
+ /* Feed data to the inner SHA256 operation. */
+ _SHA256_Update(&ctx->ictx, in, len, tmp32);
+}
+
+/* Wrapper function for intermediate-values sanitization. */
+void
+HMAC_SHA256_Update(HMAC_SHA256_CTX * ctx, const void * in, size_t len)
+{
+ uint32_t tmp32[72];
+
+ /* Call the real function. */
+ _HMAC_SHA256_Update(ctx, in, len, tmp32);
+
+ /* Clean the stack. */
+ insecure_memzero(tmp32, 288);
+}
+
+/**
+ * HMAC_SHA256_Final(digest, ctx):
+ * Output the HMAC-SHA256 of the data input to the context ${ctx} into the
+ * buffer ${digest}.
+ */
+static void
+_HMAC_SHA256_Final(uint8_t digest[32], HMAC_SHA256_CTX * ctx,
+ uint32_t tmp32[static restrict 72], uint8_t ihash[static restrict 32])
+{
+
+ /* Finish the inner SHA256 operation. */
+ _SHA256_Final(ihash, &ctx->ictx, tmp32);
+
+ /* Feed the inner hash to the outer SHA256 operation. */
+ _SHA256_Update(&ctx->octx, ihash, 32, tmp32);
+
+ /* Finish the outer SHA256 operation. */
+ _SHA256_Final(digest, &ctx->octx, tmp32);
+}
+
+/* Wrapper function for intermediate-values sanitization. */
+void
+HMAC_SHA256_Final(uint8_t digest[32], HMAC_SHA256_CTX * ctx)
+{
+ uint32_t tmp32[72];
+ uint8_t ihash[32];
+
+ /* Call the real function. */
+ _HMAC_SHA256_Final(digest, ctx, tmp32, ihash);
+
+ /* Clean the stack. */
+ insecure_memzero(tmp32, 288);
+ insecure_memzero(ihash, 32);
+}
+
+/**
+ * HMAC_SHA256_Buf(K, Klen, in, len, digest):
+ * Compute the HMAC-SHA256 of ${len} bytes from ${in} using the key ${K} of
+ * length ${Klen}, and write the result to ${digest}.
+ */
+void
+HMAC_SHA256_Buf(const void * K, size_t Klen, const void * in, size_t len,
+ uint8_t digest[32])
+{
+ HMAC_SHA256_CTX ctx;
+ uint32_t tmp32[72];
+ uint8_t tmp8[96];
+
+ _HMAC_SHA256_Init(&ctx, K, Klen, tmp32, &tmp8[0], &tmp8[64]);
+ _HMAC_SHA256_Update(&ctx, in, len, tmp32);
+ _HMAC_SHA256_Final(digest, &ctx, tmp32, &tmp8[0]);
+
+ /* Clean the stack. */
+ insecure_memzero(&ctx, sizeof(HMAC_SHA256_CTX));
+ insecure_memzero(tmp32, 288);
+ insecure_memzero(tmp8, 96);
+}
+
+/**
+ * PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen):
+ * Compute PBKDF2(passwd, salt, c, dkLen) using HMAC-SHA256 as the PRF, and
+ * write the output to buf. The value dkLen must be at most 32 * (2^32 - 1).
+ */
+void
+PBKDF2_SHA256(const uint8_t * passwd, size_t passwdlen, const uint8_t * salt,
+ size_t saltlen, uint64_t c, uint8_t * buf, size_t dkLen)
+{
+ HMAC_SHA256_CTX Phctx, PShctx, hctx;
+ uint32_t tmp32[72];
+ uint8_t tmp8[96];
+ size_t i;
+ uint8_t ivec[4];
+ uint8_t U[32];
+ uint8_t T[32];
+ uint64_t j;
+ int k;
+ size_t clen;
+
+ /* Sanity-check. */
+ assert(dkLen <= 32 * (size_t)(UINT32_MAX));
+
+ /* Compute HMAC state after processing P. */
+ _HMAC_SHA256_Init(&Phctx, passwd, passwdlen,
+ tmp32, &tmp8[0], &tmp8[64]);
+
+ /* Compute HMAC state after processing P and S. */
+ memcpy(&PShctx, &Phctx, sizeof(HMAC_SHA256_CTX));
+ _HMAC_SHA256_Update(&PShctx, salt, saltlen, tmp32);
+
+ /* Iterate through the blocks. */
+ for (i = 0; i * 32 < dkLen; i++) {
+ /* Generate INT(i + 1). */
+ be32enc(ivec, (uint32_t)(i + 1));
+
+ /* Compute U_1 = PRF(P, S || INT(i)). */
+ memcpy(&hctx, &PShctx, sizeof(HMAC_SHA256_CTX));
+ _HMAC_SHA256_Update(&hctx, ivec, 4, tmp32);
+ _HMAC_SHA256_Final(U, &hctx, tmp32, tmp8);
+
+ /* T_i = U_1 ... */
+ memcpy(T, U, 32);
+
+ for (j = 2; j <= c; j++) {
+ /* Compute U_j. */
+ memcpy(&hctx, &Phctx, sizeof(HMAC_SHA256_CTX));
+ _HMAC_SHA256_Update(&hctx, U, 32, tmp32);
+ _HMAC_SHA256_Final(U, &hctx, tmp32, tmp8);
+
+ /* ... xor U_j ... */
+ for (k = 0; k < 32; k++)
+ T[k] ^= U[k];
+ }
+
+ /* Copy as many bytes as necessary into buf. */
+ clen = dkLen - i * 32;
+ if (clen > 32)
+ clen = 32;
+ memcpy(&buf[i * 32], T, clen);
+ }
+
+ /* Clean the stack. */
+ insecure_memzero(&Phctx, sizeof(HMAC_SHA256_CTX));
+ insecure_memzero(&PShctx, sizeof(HMAC_SHA256_CTX));
+ insecure_memzero(&hctx, sizeof(HMAC_SHA256_CTX));
+ insecure_memzero(tmp32, 288);
+ insecure_memzero(tmp8, 96);
+ insecure_memzero(U, 32);
+ insecure_memzero(T, 32);
+}
diff --git a/ext/scrypt/sha256.h b/ext/scrypt/sha256.h
new file mode 100644
index 0000000..5cd824b
--- /dev/null
+++ b/ext/scrypt/sha256.h
@@ -0,0 +1,95 @@
+#ifndef _SHA256_H_
+#define _SHA256_H_
+
+#include
+#include
+
+/*
+ * Use #defines in order to avoid namespace collisions with anyone else's
+ * SHA256 code (e.g., the code in OpenSSL).
+ */
+#define SHA256_Init libcperciva_SHA256_Init
+#define SHA256_Update libcperciva_SHA256_Update
+#define SHA256_Final libcperciva_SHA256_Final
+#define SHA256_Buf libcperciva_SHA256_Buf
+#define SHA256_CTX libcperciva_SHA256_CTX
+#define HMAC_SHA256_Init libcperciva_HMAC_SHA256_Init
+#define HMAC_SHA256_Update libcperciva_HMAC_SHA256_Update
+#define HMAC_SHA256_Final libcperciva_HMAC_SHA256_Final
+#define HMAC_SHA256_Buf libcperciva_HMAC_SHA256_Buf
+#define HMAC_SHA256_CTX libcperciva_HMAC_SHA256_CTX
+
+/* Context structure for SHA256 operations. */
+typedef struct {
+ uint32_t state[8];
+ uint64_t count;
+ uint8_t buf[64];
+} SHA256_CTX;
+
+/**
+ * SHA256_Init(ctx):
+ * Initialize the SHA256 context ${ctx}.
+ */
+void SHA256_Init(SHA256_CTX *);
+
+/**
+ * SHA256_Update(ctx, in, len):
+ * Input ${len} bytes from ${in} into the SHA256 context ${ctx}.
+ */
+void SHA256_Update(SHA256_CTX *, const void *, size_t);
+
+/**
+ * SHA256_Final(digest, ctx):
+ * Output the SHA256 hash of the data input to the context ${ctx} into the
+ * buffer ${digest}.
+ */
+void SHA256_Final(uint8_t[32], SHA256_CTX *);
+
+/**
+ * SHA256_Buf(in, len, digest):
+ * Compute the SHA256 hash of ${len} bytes from $in} and write it to ${digest}.
+ */
+void SHA256_Buf(const void *, size_t, uint8_t[32]);
+
+/* Context structure for HMAC-SHA256 operations. */
+typedef struct {
+ SHA256_CTX ictx;
+ SHA256_CTX octx;
+} HMAC_SHA256_CTX;
+
+/**
+ * HMAC_SHA256_Init(ctx, K, Klen):
+ * Initialize the HMAC-SHA256 context ${ctx} with ${Klen} bytes of key from
+ * ${K}.
+ */
+void HMAC_SHA256_Init(HMAC_SHA256_CTX *, const void *, size_t);
+
+/**
+ * HMAC_SHA256_Update(ctx, in, len):
+ * Input ${len} bytes from ${in} into the HMAC-SHA256 context ${ctx}.
+ */
+void HMAC_SHA256_Update(HMAC_SHA256_CTX *, const void *, size_t);
+
+/**
+ * HMAC_SHA256_Final(digest, ctx):
+ * Output the HMAC-SHA256 of the data input to the context ${ctx} into the
+ * buffer ${digest}.
+ */
+void HMAC_SHA256_Final(uint8_t[32], HMAC_SHA256_CTX *);
+
+/**
+ * HMAC_SHA256_Buf(K, Klen, in, len, digest):
+ * Compute the HMAC-SHA256 of ${len} bytes from ${in} using the key ${K} of
+ * length ${Klen}, and write the result to ${digest}.
+ */
+void HMAC_SHA256_Buf(const void *, size_t, const void *, size_t, uint8_t[32]);
+
+/**
+ * PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, c, buf, dkLen):
+ * Compute PBKDF2(passwd, salt, c, dkLen) using HMAC-SHA256 as the PRF, and
+ * write the output to buf. The value dkLen must be at most 32 * (2^32 - 1).
+ */
+void PBKDF2_SHA256(const uint8_t *, size_t, const uint8_t *, size_t,
+ uint64_t, uint8_t *, size_t);
+
+#endif /* !_SHA256_H_ */
diff --git a/ext/scrypt/sysendian.h b/ext/scrypt/sysendian.h
new file mode 100644
index 0000000..ea90936
--- /dev/null
+++ b/ext/scrypt/sysendian.h
@@ -0,0 +1,140 @@
+/*-
+ * Copyright 2007-2009 Colin Percival
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * This file was originally written by Colin Percival as part of the Tarsnap
+ * online backup system.
+ */
+#ifndef _SYSENDIAN_H_
+#define _SYSENDIAN_H_
+
+#include "scrypt_platform.h"
+
+/* If we don't have be64enc, the we have isn't usable. */
+#if !HAVE_DECL_BE64ENC
+#undef HAVE_SYS_ENDIAN_H
+#endif
+
+#ifdef HAVE_SYS_ENDIAN_H
+
+#include
+
+#else
+
+#include
+
+static inline uint32_t
+be32dec(const void *pp)
+{
+ const uint8_t *p = (uint8_t const *)pp;
+
+ return ((uint32_t)(p[3]) + ((uint32_t)(p[2]) << 8) +
+ ((uint32_t)(p[1]) << 16) + ((uint32_t)(p[0]) << 24));
+}
+
+static inline void
+be32enc(void *pp, uint32_t x)
+{
+ uint8_t * p = (uint8_t *)pp;
+
+ p[3] = x & 0xff;
+ p[2] = (x >> 8) & 0xff;
+ p[1] = (x >> 16) & 0xff;
+ p[0] = (x >> 24) & 0xff;
+}
+
+static inline uint64_t
+be64dec(const void *pp)
+{
+ const uint8_t *p = (uint8_t const *)pp;
+
+ return ((uint64_t)(p[7]) + ((uint64_t)(p[6]) << 8) +
+ ((uint64_t)(p[5]) << 16) + ((uint64_t)(p[4]) << 24) +
+ ((uint64_t)(p[3]) << 32) + ((uint64_t)(p[2]) << 40) +
+ ((uint64_t)(p[1]) << 48) + ((uint64_t)(p[0]) << 56));
+}
+
+static inline void
+be64enc(void *pp, uint64_t x)
+{
+ uint8_t * p = (uint8_t *)pp;
+
+ p[7] = x & 0xff;
+ p[6] = (x >> 8) & 0xff;
+ p[5] = (x >> 16) & 0xff;
+ p[4] = (x >> 24) & 0xff;
+ p[3] = (x >> 32) & 0xff;
+ p[2] = (x >> 40) & 0xff;
+ p[1] = (x >> 48) & 0xff;
+ p[0] = (x >> 56) & 0xff;
+}
+
+static inline uint32_t
+le32dec(const void *pp)
+{
+ const uint8_t *p = (uint8_t const *)pp;
+
+ return ((uint32_t)(p[0]) + ((uint32_t)(p[1]) << 8) +
+ ((uint32_t)(p[2]) << 16) + ((uint32_t)(p[3]) << 24));
+}
+
+static inline void
+le32enc(void *pp, uint32_t x)
+{
+ uint8_t * p = (uint8_t *)pp;
+
+ p[0] = x & 0xff;
+ p[1] = (x >> 8) & 0xff;
+ p[2] = (x >> 16) & 0xff;
+ p[3] = (x >> 24) & 0xff;
+}
+
+static inline uint64_t
+le64dec(const void *pp)
+{
+ const uint8_t *p = (uint8_t const *)pp;
+
+ return ((uint64_t)(p[0]) + ((uint64_t)(p[1]) << 8) +
+ ((uint64_t)(p[2]) << 16) + ((uint64_t)(p[3]) << 24) +
+ ((uint64_t)(p[4]) << 32) + ((uint64_t)(p[5]) << 40) +
+ ((uint64_t)(p[6]) << 48) + ((uint64_t)(p[7]) << 56));
+}
+
+static inline void
+le64enc(void *pp, uint64_t x)
+{
+ uint8_t * p = (uint8_t *)pp;
+
+ p[0] = x & 0xff;
+ p[1] = (x >> 8) & 0xff;
+ p[2] = (x >> 16) & 0xff;
+ p[3] = (x >> 24) & 0xff;
+ p[4] = (x >> 32) & 0xff;
+ p[5] = (x >> 40) & 0xff;
+ p[6] = (x >> 48) & 0xff;
+ p[7] = (x >> 56) & 0xff;
+}
+#endif /* !HAVE_SYS_ENDIAN_H */
+
+#endif /* !_SYSENDIAN_H_ */
diff --git a/ext/scrypt/warnp.c b/ext/scrypt/warnp.c
new file mode 100644
index 0000000..2ec5a57
--- /dev/null
+++ b/ext/scrypt/warnp.c
@@ -0,0 +1,76 @@
+#include
+#include
+#include
+#include
+#include
+
+#include "warnp.h"
+
+static int initialized = 0;
+static char * name = NULL;
+
+/* Free the name string. */
+static void
+done(void)
+{
+
+ free(name);
+ name = NULL;
+}
+
+/**
+ * warnp_setprogname(progname):
+ * Set the program name to be used by warn() and warnx() to ${progname}.
+ */
+void
+warnp_setprogname(const char * progname)
+{
+ const char * p;
+
+ /* Free the name if we already have one. */
+ free(name);
+
+ /* Find the last segment of the program name. */
+ for (p = progname; progname[0] != '\0'; progname++)
+ if (progname[0] == '/')
+ p = progname + 1;
+
+ /* Copy the name string. */
+ name = strdup(p);
+
+ /* If we haven't already done so, register our exit handler. */
+ if (initialized == 0) {
+ atexit(done);
+ initialized = 1;
+ }
+}
+
+void
+warn(const char * fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ fprintf(stderr, "%s", (name != NULL) ? name : "(unknown)");
+ if (fmt != NULL) {
+ fprintf(stderr, ": ");
+ vfprintf(stderr, fmt, ap);
+ }
+ fprintf(stderr, ": %s\n", strerror(errno));
+ va_end(ap);
+}
+
+void
+warnx(const char * fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ fprintf(stderr, "%s", (name != NULL) ? name : "(unknown)");
+ if (fmt != NULL) {
+ fprintf(stderr, ": ");
+ vfprintf(stderr, fmt, ap);
+ }
+ fprintf(stderr, "\n");
+ va_end(ap);
+}
diff --git a/ext/scrypt/warnp.h b/ext/scrypt/warnp.h
new file mode 100644
index 0000000..2dadbdf
--- /dev/null
+++ b/ext/scrypt/warnp.h
@@ -0,0 +1,59 @@
+#ifndef _WARNP_H_
+#define _WARNP_H_
+
+#include
+
+/* Avoid namespace collisions with BSD . */
+#define warn libcperciva_warn
+#define warnx libcperciva_warnx
+
+/**
+ * warnp_setprogname(progname):
+ * Set the program name to be used by warn() and warnx() to ${progname}.
+ */
+void warnp_setprogname(const char *);
+#define WARNP_INIT do { \
+ if (argv[0] != NULL) \
+ warnp_setprogname(argv[0]); \
+} while (0)
+
+/* As in BSD . */
+void warn(const char *, ...);
+void warnx(const char *, ...);
+
+/*
+ * If compiled with DEBUG defined, print __FILE__ and __LINE__.
+ */
+#ifdef DEBUG
+#define warnline do { \
+ warnx("%s, %d", __FILE__, __LINE__); \
+} while (0)
+#else
+#define warnline
+#endif
+
+/*
+ * Call warn(3) or warnx(3) depending upon whether errno == 0; and clear
+ * errno (so that the standard error message isn't repeated later).
+ */
+#define warnp(...) do { \
+ warnline; \
+ if (errno != 0) { \
+ warn(__VA_ARGS__); \
+ errno = 0; \
+ } else \
+ warnx(__VA_ARGS__); \
+} while (0)
+
+/*
+ * Call warnx(3) and set errno == 0. Unlike warnp, this should be used
+ * in cases where we're reporting a problem which we discover ourselves
+ * rather than one which is reported to us from a library or the kernel.
+ */
+#define warn0(...) do { \
+ warnline; \
+ warnx(__VA_ARGS__); \
+ errno = 0; \
+} while (0)
+
+#endif /* !_WARNP_H_ */
diff --git a/rust-scrypt.iml b/rust-scrypt.iml
new file mode 100644
index 0000000..4fe20de
--- /dev/null
+++ b/rust-scrypt.iml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ffi.rs b/src/ffi.rs
new file mode 100644
index 0000000..e69de29
diff --git a/src/lib.rs b/src/lib.rs
new file mode 100644
index 0000000..97a9e38
--- /dev/null
+++ b/src/lib.rs
@@ -0,0 +1,32 @@
+#![allow(non_upper_case_globals)]
+#![allow(non_camel_case_types)]
+#![allow(non_snake_case)]
+
+extern crate emerald_core;
+extern {
+ pub fn crypto_scrypt(passwd: *const u8, passwdlen: usize, salt: *const u8, saltlen: usize,
+ N: u64, r: u32, p: u32,
+ buf: *mut u8, buflen: usize) -> ::std::os::raw::c_int;
+}
+
+
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_scrypt() {
+ let mut kdf_salt =
+ emerald_core::to_32bytes("fd4acb81182a2c8fa959d180967b374277f2ccf2f7f401cb08d042cc785464b4");
+ let passwd = "1234567890";
+ let mut buf = [0u8; 32];
+
+ unsafe {
+ crypto_scrypt(passwd.as_ptr(), passwd.len(), kdf_salt.as_mut_ptr(), kdf_salt.len(),
+ 2, 8, 1, buf.as_mut_ptr(), 32);
+ }
+
+ println!(">> DEBUG: {:?}", buf);
+ // "52a5dacfcf80e5111d2c7fbed177113a1b48a882b066a017f2c856086680fac7");
+ }
+}
\ No newline at end of file
diff --git a/target/debug/.cargo-lock b/target/debug/.cargo-lock
new file mode 100644
index 0000000..e69de29
diff --git a/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/dep-lib-aho_corasick-ee2f3809623d70dc b/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/dep-lib-aho_corasick-ee2f3809623d70dc
new file mode 100644
index 0000000..22d5ba2
Binary files /dev/null and b/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/dep-lib-aho_corasick-ee2f3809623d70dc differ
diff --git a/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/lib-aho_corasick-ee2f3809623d70dc b/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/lib-aho_corasick-ee2f3809623d70dc
new file mode 100644
index 0000000..a1d0168
--- /dev/null
+++ b/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/lib-aho_corasick-ee2f3809623d70dc
@@ -0,0 +1 @@
+cf40284e8e04da1a
\ No newline at end of file
diff --git a/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/lib-aho_corasick-ee2f3809623d70dc.json b/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/lib-aho_corasick-ee2f3809623d70dc.json
new file mode 100644
index 0000000..c5097ec
--- /dev/null
+++ b/target/debug/.fingerprint/aho-corasick-ee2f3809623d70dc/lib-aho_corasick-ee2f3809623d70dc.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":1724118938978205050,"profile":731176819336294830,"deps":[["memchr v1.0.1",5323102011590010693]],"local":{"Precalculated":"0.6.3"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/antidote-ddae729b51ff756f/dep-lib-antidote-ddae729b51ff756f b/target/debug/.fingerprint/antidote-ddae729b51ff756f/dep-lib-antidote-ddae729b51ff756f
new file mode 100644
index 0000000..8b367d2
Binary files /dev/null and b/target/debug/.fingerprint/antidote-ddae729b51ff756f/dep-lib-antidote-ddae729b51ff756f differ
diff --git a/target/debug/.fingerprint/antidote-ddae729b51ff756f/lib-antidote-ddae729b51ff756f b/target/debug/.fingerprint/antidote-ddae729b51ff756f/lib-antidote-ddae729b51ff756f
new file mode 100644
index 0000000..86031d9
--- /dev/null
+++ b/target/debug/.fingerprint/antidote-ddae729b51ff756f/lib-antidote-ddae729b51ff756f
@@ -0,0 +1 @@
+501353e34404dd93
\ No newline at end of file
diff --git a/target/debug/.fingerprint/antidote-ddae729b51ff756f/lib-antidote-ddae729b51ff756f.json b/target/debug/.fingerprint/antidote-ddae729b51ff756f/lib-antidote-ddae729b51ff756f.json
new file mode 100644
index 0000000..6a8b37e
--- /dev/null
+++ b/target/debug/.fingerprint/antidote-ddae729b51ff756f/lib-antidote-ddae729b51ff756f.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":8549058287588753819,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.0.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/dep-lib-arrayvec-7b8520bba7fcf1b7 b/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/dep-lib-arrayvec-7b8520bba7fcf1b7
new file mode 100644
index 0000000..e487ce9
Binary files /dev/null and b/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/dep-lib-arrayvec-7b8520bba7fcf1b7 differ
diff --git a/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/lib-arrayvec-7b8520bba7fcf1b7 b/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/lib-arrayvec-7b8520bba7fcf1b7
new file mode 100644
index 0000000..fdc7879
--- /dev/null
+++ b/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/lib-arrayvec-7b8520bba7fcf1b7
@@ -0,0 +1 @@
+08db4fe62ca0ef94
\ No newline at end of file
diff --git a/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/lib-arrayvec-7b8520bba7fcf1b7.json b/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/lib-arrayvec-7b8520bba7fcf1b7.json
new file mode 100644
index 0000000..13d7f8b
--- /dev/null
+++ b/target/debug/.fingerprint/arrayvec-7b8520bba7fcf1b7/lib-arrayvec-7b8520bba7fcf1b7.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"nodrop\", \"odds\", \"std\"]","target":16828958862171591008,"profile":731176819336294830,"deps":[["nodrop v0.1.9",8915827664518384062],["odds v0.2.25",2864378341541848706]],"local":{"Precalculated":"0.3.23"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/base64-671f71aca8a0bd16/dep-lib-base64-671f71aca8a0bd16 b/target/debug/.fingerprint/base64-671f71aca8a0bd16/dep-lib-base64-671f71aca8a0bd16
new file mode 100644
index 0000000..d0cb649
Binary files /dev/null and b/target/debug/.fingerprint/base64-671f71aca8a0bd16/dep-lib-base64-671f71aca8a0bd16 differ
diff --git a/target/debug/.fingerprint/base64-671f71aca8a0bd16/lib-base64-671f71aca8a0bd16 b/target/debug/.fingerprint/base64-671f71aca8a0bd16/lib-base64-671f71aca8a0bd16
new file mode 100644
index 0000000..bf09539
--- /dev/null
+++ b/target/debug/.fingerprint/base64-671f71aca8a0bd16/lib-base64-671f71aca8a0bd16
@@ -0,0 +1 @@
+8cf8fd6e2eed1192
\ No newline at end of file
diff --git a/target/debug/.fingerprint/base64-671f71aca8a0bd16/lib-base64-671f71aca8a0bd16.json b/target/debug/.fingerprint/base64-671f71aca8a0bd16/lib-base64-671f71aca8a0bd16.json
new file mode 100644
index 0000000..5766889
--- /dev/null
+++ b/target/debug/.fingerprint/base64-671f71aca8a0bd16/lib-base64-671f71aca8a0bd16.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":11501972576288874826,"profile":731176819336294830,"deps":[["byteorder v1.0.0",6865632067315709040]],"local":{"Precalculated":"0.5.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/bitflags-c8b3e4b415593713/dep-lib-bitflags-c8b3e4b415593713 b/target/debug/.fingerprint/bitflags-c8b3e4b415593713/dep-lib-bitflags-c8b3e4b415593713
new file mode 100644
index 0000000..ac85800
Binary files /dev/null and b/target/debug/.fingerprint/bitflags-c8b3e4b415593713/dep-lib-bitflags-c8b3e4b415593713 differ
diff --git a/target/debug/.fingerprint/bitflags-c8b3e4b415593713/lib-bitflags-c8b3e4b415593713 b/target/debug/.fingerprint/bitflags-c8b3e4b415593713/lib-bitflags-c8b3e4b415593713
new file mode 100644
index 0000000..42df5b3
--- /dev/null
+++ b/target/debug/.fingerprint/bitflags-c8b3e4b415593713/lib-bitflags-c8b3e4b415593713
@@ -0,0 +1 @@
+c1ec14b3f7399193
\ No newline at end of file
diff --git a/target/debug/.fingerprint/bitflags-c8b3e4b415593713/lib-bitflags-c8b3e4b415593713.json b/target/debug/.fingerprint/bitflags-c8b3e4b415593713/lib-bitflags-c8b3e4b415593713.json
new file mode 100644
index 0000000..c26a020
--- /dev/null
+++ b/target/debug/.fingerprint/bitflags-c8b3e4b415593713/lib-bitflags-c8b3e4b415593713.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"example_generated\"]","target":17545432817601770495,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.9.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/dep-lib-byteorder-190c8b8b4cb7f472 b/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/dep-lib-byteorder-190c8b8b4cb7f472
new file mode 100644
index 0000000..7b83de6
Binary files /dev/null and b/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/dep-lib-byteorder-190c8b8b4cb7f472 differ
diff --git a/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/lib-byteorder-190c8b8b4cb7f472 b/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/lib-byteorder-190c8b8b4cb7f472
new file mode 100644
index 0000000..a1bcd41
--- /dev/null
+++ b/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/lib-byteorder-190c8b8b4cb7f472
@@ -0,0 +1 @@
+7034e252fd9f475f
\ No newline at end of file
diff --git a/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/lib-byteorder-190c8b8b4cb7f472.json b/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/lib-byteorder-190c8b8b4cb7f472.json
new file mode 100644
index 0000000..30bc7cf
--- /dev/null
+++ b/target/debug/.fingerprint/byteorder-190c8b8b4cb7f472/lib-byteorder-190c8b8b4cb7f472.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"std\"]","target":14900712556022657628,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.0.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/dep-lib-bytes-bbb7bd4f6364cc42 b/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/dep-lib-bytes-bbb7bd4f6364cc42
new file mode 100644
index 0000000..452edf3
Binary files /dev/null and b/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/dep-lib-bytes-bbb7bd4f6364cc42 differ
diff --git a/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/lib-bytes-bbb7bd4f6364cc42 b/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/lib-bytes-bbb7bd4f6364cc42
new file mode 100644
index 0000000..2092036
--- /dev/null
+++ b/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/lib-bytes-bbb7bd4f6364cc42
@@ -0,0 +1 @@
+5f16a38ee4369036
\ No newline at end of file
diff --git a/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/lib-bytes-bbb7bd4f6364cc42.json b/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/lib-bytes-bbb7bd4f6364cc42.json
new file mode 100644
index 0000000..73fc325
--- /dev/null
+++ b/target/debug/.fingerprint/bytes-bbb7bd4f6364cc42/lib-bytes-bbb7bd4f6364cc42.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":6885605907759624312,"profile":731176819336294830,"deps":[["byteorder v1.0.0",6865632067315709040],["iovec v0.1.0",6657207109698822992]],"local":{"Precalculated":"0.4.4"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/cfg-if-d561b8f41e038432/dep-lib-cfg_if-d561b8f41e038432 b/target/debug/.fingerprint/cfg-if-d561b8f41e038432/dep-lib-cfg_if-d561b8f41e038432
new file mode 100644
index 0000000..86f9708
Binary files /dev/null and b/target/debug/.fingerprint/cfg-if-d561b8f41e038432/dep-lib-cfg_if-d561b8f41e038432 differ
diff --git a/target/debug/.fingerprint/cfg-if-d561b8f41e038432/lib-cfg_if-d561b8f41e038432 b/target/debug/.fingerprint/cfg-if-d561b8f41e038432/lib-cfg_if-d561b8f41e038432
new file mode 100644
index 0000000..98a254f
--- /dev/null
+++ b/target/debug/.fingerprint/cfg-if-d561b8f41e038432/lib-cfg_if-d561b8f41e038432
@@ -0,0 +1 @@
+3b81099be18ee7f2
\ No newline at end of file
diff --git a/target/debug/.fingerprint/cfg-if-d561b8f41e038432/lib-cfg_if-d561b8f41e038432.json b/target/debug/.fingerprint/cfg-if-d561b8f41e038432/lib-cfg_if-d561b8f41e038432.json
new file mode 100644
index 0000000..753d5d6
--- /dev/null
+++ b/target/debug/.fingerprint/cfg-if-d561b8f41e038432/lib-cfg_if-d561b8f41e038432.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":12610900637665864674,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/dep-lib-chrono-8d62fe9ce7de8ad7 b/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/dep-lib-chrono-8d62fe9ce7de8ad7
new file mode 100644
index 0000000..9134bcc
Binary files /dev/null and b/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/dep-lib-chrono-8d62fe9ce7de8ad7 differ
diff --git a/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/lib-chrono-8d62fe9ce7de8ad7 b/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/lib-chrono-8d62fe9ce7de8ad7
new file mode 100644
index 0000000..be3a309
--- /dev/null
+++ b/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/lib-chrono-8d62fe9ce7de8ad7
@@ -0,0 +1 @@
+74a052949506140a
\ No newline at end of file
diff --git a/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/lib-chrono-8d62fe9ce7de8ad7.json b/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/lib-chrono-8d62fe9ce7de8ad7.json
new file mode 100644
index 0000000..e32bf67
--- /dev/null
+++ b/target/debug/.fingerprint/chrono-8d62fe9ce7de8ad7/lib-chrono-8d62fe9ce7de8ad7.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":13086603113096097898,"profile":731176819336294830,"deps":[["num v0.1.39",13112327125317595422],["time v0.1.37",8159324894692769326]],"local":{"Precalculated":"0.3.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/dep-lib-dtoa-5b7f1650e7fc4bdd b/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/dep-lib-dtoa-5b7f1650e7fc4bdd
new file mode 100644
index 0000000..a4c7508
Binary files /dev/null and b/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/dep-lib-dtoa-5b7f1650e7fc4bdd differ
diff --git a/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/lib-dtoa-5b7f1650e7fc4bdd b/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/lib-dtoa-5b7f1650e7fc4bdd
new file mode 100644
index 0000000..3faa541
--- /dev/null
+++ b/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/lib-dtoa-5b7f1650e7fc4bdd
@@ -0,0 +1 @@
+88f75cf5b8d82486
\ No newline at end of file
diff --git a/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/lib-dtoa-5b7f1650e7fc4bdd.json b/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/lib-dtoa-5b7f1650e7fc4bdd.json
new file mode 100644
index 0000000..604c09a
--- /dev/null
+++ b/target/debug/.fingerprint/dtoa-5b7f1650e7fc4bdd/lib-dtoa-5b7f1650e7fc4bdd.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":11618673241042393888,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.4.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/dep-lib-emerald_core-962f3a9aa46868c9 b/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/dep-lib-emerald_core-962f3a9aa46868c9
new file mode 100644
index 0000000..55cb743
Binary files /dev/null and b/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/dep-lib-emerald_core-962f3a9aa46868c9 differ
diff --git a/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/lib-emerald_core-962f3a9aa46868c9 b/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/lib-emerald_core-962f3a9aa46868c9
new file mode 100644
index 0000000..18aa4fd
--- /dev/null
+++ b/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/lib-emerald_core-962f3a9aa46868c9
@@ -0,0 +1 @@
+c65221ac2059f1e1
\ No newline at end of file
diff --git a/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/lib-emerald_core-962f3a9aa46868c9.json b/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/lib-emerald_core-962f3a9aa46868c9.json
new file mode 100644
index 0000000..fff2b3c
--- /dev/null
+++ b/target/debug/.fingerprint/emerald-core-962f3a9aa46868c9/lib-emerald_core-962f3a9aa46868c9.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"http\", \"hyper\", \"reqwest\"]","target":2275309016620397752,"profile":731176819336294830,"deps":[["byteorder v1.0.0",6865632067315709040],["chrono v0.3.1",726212679421829236],["futures v0.1.14",2278465165944931584],["glob v0.2.11",8660590799934594267],["hyper v0.10.12",13581212682540706791],["jsonrpc-core v7.0.1 (https://github.com/paritytech/jsonrpc.git#415d0d86)",1059526072281749407],["jsonrpc-minihttp-server v7.0.1 (https://github.com/paritytech/jsonrpc.git#415d0d86)",7135113998298982564],["lazy_static v0.2.8",7390550379714662931],["log v0.3.8",17599510212006507007],["rand v0.3.15",16081693164340249007],["regex v0.2.2",8389534450221206525],["reqwest v0.6.2",17501609010867190896],["rust-crypto v0.2.36",8116889483550872238],["rustc-serialize v0.3.24",15751235613328585593],["secp256k1 v0.6.2",15060618565529136375],["serde v1.0.8",9356783860267739482],["serde_derive v1.0.8",5673648729817479358],["serde_json v1.0.2",2330536454262081947],["time v0.1.37",8159324894692769326],["uuid v0.5.0",3693072395989474780]],"local":{"Precalculated":"06689bda48afb7e40ed9daaf281b5151d9959985"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/fnv-fc1d5751a8057da0/dep-lib-fnv-fc1d5751a8057da0 b/target/debug/.fingerprint/fnv-fc1d5751a8057da0/dep-lib-fnv-fc1d5751a8057da0
new file mode 100644
index 0000000..a5b542f
Binary files /dev/null and b/target/debug/.fingerprint/fnv-fc1d5751a8057da0/dep-lib-fnv-fc1d5751a8057da0 differ
diff --git a/target/debug/.fingerprint/fnv-fc1d5751a8057da0/lib-fnv-fc1d5751a8057da0 b/target/debug/.fingerprint/fnv-fc1d5751a8057da0/lib-fnv-fc1d5751a8057da0
new file mode 100644
index 0000000..935814c
--- /dev/null
+++ b/target/debug/.fingerprint/fnv-fc1d5751a8057da0/lib-fnv-fc1d5751a8057da0
@@ -0,0 +1 @@
+60ffd76aa6fa61f3
\ No newline at end of file
diff --git a/target/debug/.fingerprint/fnv-fc1d5751a8057da0/lib-fnv-fc1d5751a8057da0.json b/target/debug/.fingerprint/fnv-fc1d5751a8057da0/lib-fnv-fc1d5751a8057da0.json
new file mode 100644
index 0000000..82ae7ea
--- /dev/null
+++ b/target/debug/.fingerprint/fnv-fc1d5751a8057da0/lib-fnv-fc1d5751a8057da0.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":1254979992197490729,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.0.5"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/dep-lib-foreign_types-4224a6bfe004c283 b/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/dep-lib-foreign_types-4224a6bfe004c283
new file mode 100644
index 0000000..800e4b3
Binary files /dev/null and b/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/dep-lib-foreign_types-4224a6bfe004c283 differ
diff --git a/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/lib-foreign_types-4224a6bfe004c283 b/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/lib-foreign_types-4224a6bfe004c283
new file mode 100644
index 0000000..9ffbc15
--- /dev/null
+++ b/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/lib-foreign_types-4224a6bfe004c283
@@ -0,0 +1 @@
+6c4a527b5b62e7ce
\ No newline at end of file
diff --git a/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/lib-foreign_types-4224a6bfe004c283.json b/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/lib-foreign_types-4224a6bfe004c283.json
new file mode 100644
index 0000000..48ce32c
--- /dev/null
+++ b/target/debug/.fingerprint/foreign-types-4224a6bfe004c283/lib-foreign_types-4224a6bfe004c283.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":16793349180351698719,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.2.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/futures-3c38b04c521398ed/dep-lib-futures-3c38b04c521398ed b/target/debug/.fingerprint/futures-3c38b04c521398ed/dep-lib-futures-3c38b04c521398ed
new file mode 100644
index 0000000..ff7a93e
Binary files /dev/null and b/target/debug/.fingerprint/futures-3c38b04c521398ed/dep-lib-futures-3c38b04c521398ed differ
diff --git a/target/debug/.fingerprint/futures-3c38b04c521398ed/lib-futures-3c38b04c521398ed b/target/debug/.fingerprint/futures-3c38b04c521398ed/lib-futures-3c38b04c521398ed
new file mode 100644
index 0000000..4ac689e
--- /dev/null
+++ b/target/debug/.fingerprint/futures-3c38b04c521398ed/lib-futures-3c38b04c521398ed
@@ -0,0 +1 @@
+00c53f21ffbb9e1f
\ No newline at end of file
diff --git a/target/debug/.fingerprint/futures-3c38b04c521398ed/lib-futures-3c38b04c521398ed.json b/target/debug/.fingerprint/futures-3c38b04c521398ed/lib-futures-3c38b04c521398ed.json
new file mode 100644
index 0000000..c23a714
--- /dev/null
+++ b/target/debug/.fingerprint/futures-3c38b04c521398ed/lib-futures-3c38b04c521398ed.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"use_std\", \"with-deprecated\"]","target":4649945375909266407,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.14"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/dep-lib-gcc-313c6941d6ce9e4c b/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/dep-lib-gcc-313c6941d6ce9e4c
new file mode 100644
index 0000000..9370dfe
Binary files /dev/null and b/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/dep-lib-gcc-313c6941d6ce9e4c differ
diff --git a/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/lib-gcc-313c6941d6ce9e4c b/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/lib-gcc-313c6941d6ce9e4c
new file mode 100644
index 0000000..ac42883
--- /dev/null
+++ b/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/lib-gcc-313c6941d6ce9e4c
@@ -0,0 +1 @@
+3348397c0e93dc93
\ No newline at end of file
diff --git a/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/lib-gcc-313c6941d6ce9e4c.json b/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/lib-gcc-313c6941d6ce9e4c.json
new file mode 100644
index 0000000..69d3ce7
--- /dev/null
+++ b/target/debug/.fingerprint/gcc-313c6941d6ce9e4c/lib-gcc-313c6941d6ce9e4c.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":31889871179937387,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.51"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/glob-3660eba282c5ea68/dep-lib-glob-3660eba282c5ea68 b/target/debug/.fingerprint/glob-3660eba282c5ea68/dep-lib-glob-3660eba282c5ea68
new file mode 100644
index 0000000..4dcf999
Binary files /dev/null and b/target/debug/.fingerprint/glob-3660eba282c5ea68/dep-lib-glob-3660eba282c5ea68 differ
diff --git a/target/debug/.fingerprint/glob-3660eba282c5ea68/lib-glob-3660eba282c5ea68 b/target/debug/.fingerprint/glob-3660eba282c5ea68/lib-glob-3660eba282c5ea68
new file mode 100644
index 0000000..f814bf8
--- /dev/null
+++ b/target/debug/.fingerprint/glob-3660eba282c5ea68/lib-glob-3660eba282c5ea68
@@ -0,0 +1 @@
+db1c1e5f72993078
\ No newline at end of file
diff --git a/target/debug/.fingerprint/glob-3660eba282c5ea68/lib-glob-3660eba282c5ea68.json b/target/debug/.fingerprint/glob-3660eba282c5ea68/lib-glob-3660eba282c5ea68.json
new file mode 100644
index 0000000..4881fb3
--- /dev/null
+++ b/target/debug/.fingerprint/glob-3660eba282c5ea68/lib-glob-3660eba282c5ea68.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":12859937280581868558,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.2.11"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/globset-90f8fd59e277122d/dep-lib-globset-90f8fd59e277122d b/target/debug/.fingerprint/globset-90f8fd59e277122d/dep-lib-globset-90f8fd59e277122d
new file mode 100644
index 0000000..d5e0ab5
Binary files /dev/null and b/target/debug/.fingerprint/globset-90f8fd59e277122d/dep-lib-globset-90f8fd59e277122d differ
diff --git a/target/debug/.fingerprint/globset-90f8fd59e277122d/lib-globset-90f8fd59e277122d b/target/debug/.fingerprint/globset-90f8fd59e277122d/lib-globset-90f8fd59e277122d
new file mode 100644
index 0000000..7324ea0
--- /dev/null
+++ b/target/debug/.fingerprint/globset-90f8fd59e277122d/lib-globset-90f8fd59e277122d
@@ -0,0 +1 @@
+a5f64b3a4944eefd
\ No newline at end of file
diff --git a/target/debug/.fingerprint/globset-90f8fd59e277122d/lib-globset-90f8fd59e277122d.json b/target/debug/.fingerprint/globset-90f8fd59e277122d/lib-globset-90f8fd59e277122d.json
new file mode 100644
index 0000000..36f7a84
--- /dev/null
+++ b/target/debug/.fingerprint/globset-90f8fd59e277122d/lib-globset-90f8fd59e277122d.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":12907131318229725445,"profile":731176819336294830,"deps":[["aho-corasick v0.6.3",1934863999152177359],["fnv v1.0.5",17537574016621477728],["log v0.3.8",17599510212006507007],["memchr v1.0.1",5323102011590010693],["regex v0.2.2",8389534450221206525]],"local":{"Precalculated":"0.1.4"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/httparse-f07a346cf686d3f4/dep-lib-httparse-f07a346cf686d3f4 b/target/debug/.fingerprint/httparse-f07a346cf686d3f4/dep-lib-httparse-f07a346cf686d3f4
new file mode 100644
index 0000000..5679e21
Binary files /dev/null and b/target/debug/.fingerprint/httparse-f07a346cf686d3f4/dep-lib-httparse-f07a346cf686d3f4 differ
diff --git a/target/debug/.fingerprint/httparse-f07a346cf686d3f4/lib-httparse-f07a346cf686d3f4 b/target/debug/.fingerprint/httparse-f07a346cf686d3f4/lib-httparse-f07a346cf686d3f4
new file mode 100644
index 0000000..9f0a6aa
--- /dev/null
+++ b/target/debug/.fingerprint/httparse-f07a346cf686d3f4/lib-httparse-f07a346cf686d3f4
@@ -0,0 +1 @@
+7dff74bdf790f9ae
\ No newline at end of file
diff --git a/target/debug/.fingerprint/httparse-f07a346cf686d3f4/lib-httparse-f07a346cf686d3f4.json b/target/debug/.fingerprint/httparse-f07a346cf686d3f4/lib-httparse-f07a346cf686d3f4.json
new file mode 100644
index 0000000..340d002
--- /dev/null
+++ b/target/debug/.fingerprint/httparse-f07a346cf686d3f4/lib-httparse-f07a346cf686d3f4.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"std\"]","target":3037433091617037296,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.2.3"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/hyper-ead1652240cc76c2/dep-lib-hyper-ead1652240cc76c2 b/target/debug/.fingerprint/hyper-ead1652240cc76c2/dep-lib-hyper-ead1652240cc76c2
new file mode 100644
index 0000000..34b7ad1
Binary files /dev/null and b/target/debug/.fingerprint/hyper-ead1652240cc76c2/dep-lib-hyper-ead1652240cc76c2 differ
diff --git a/target/debug/.fingerprint/hyper-ead1652240cc76c2/lib-hyper-ead1652240cc76c2 b/target/debug/.fingerprint/hyper-ead1652240cc76c2/lib-hyper-ead1652240cc76c2
new file mode 100644
index 0000000..896bd67
--- /dev/null
+++ b/target/debug/.fingerprint/hyper-ead1652240cc76c2/lib-hyper-ead1652240cc76c2
@@ -0,0 +1 @@
+e76bde79fa287abc
\ No newline at end of file
diff --git a/target/debug/.fingerprint/hyper-ead1652240cc76c2/lib-hyper-ead1652240cc76c2.json b/target/debug/.fingerprint/hyper-ead1652240cc76c2/lib-hyper-ead1652240cc76c2.json
new file mode 100644
index 0000000..726f5d8
--- /dev/null
+++ b/target/debug/.fingerprint/hyper-ead1652240cc76c2/lib-hyper-ead1652240cc76c2.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":14432413875865237509,"profile":731176819336294830,"deps":[["base64 v0.5.2",10525454587827976332],["httparse v1.2.3",12608268025510297469],["language-tags v0.2.2",8944661870794804462],["log v0.3.8",17599510212006507007],["mime v0.2.6",12071809588933564722],["num_cpus v1.5.1",404543578609591008],["time v0.1.37",8159324894692769326],["traitobject v0.1.0",10435307965783963166],["typeable v0.1.2",4827301917864512675],["unicase v1.4.2",8796402324484356493],["url v1.5.0",7798745668439162701]],"local":{"Precalculated":"0.10.12"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/dep-lib-hyper_native_tls-31a6910130851f5b b/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/dep-lib-hyper_native_tls-31a6910130851f5b
new file mode 100644
index 0000000..14d02ae
Binary files /dev/null and b/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/dep-lib-hyper_native_tls-31a6910130851f5b differ
diff --git a/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/lib-hyper_native_tls-31a6910130851f5b b/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/lib-hyper_native_tls-31a6910130851f5b
new file mode 100644
index 0000000..07bfce2
--- /dev/null
+++ b/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/lib-hyper_native_tls-31a6910130851f5b
@@ -0,0 +1 @@
+981997ff751121c6
\ No newline at end of file
diff --git a/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/lib-hyper_native_tls-31a6910130851f5b.json b/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/lib-hyper_native_tls-31a6910130851f5b.json
new file mode 100644
index 0000000..00a1bab
--- /dev/null
+++ b/target/debug/.fingerprint/hyper-native-tls-31a6910130851f5b/lib-hyper_native_tls-31a6910130851f5b.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":5108708156193965217,"profile":731176819336294830,"deps":[["antidote v1.0.0",10654676987346621264],["hyper v0.10.12",13581212682540706791],["native-tls v0.1.2",16146075986917681355]],"local":{"Precalculated":"0.2.4"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/idna-a551fee0f71fe929/dep-lib-idna-a551fee0f71fe929 b/target/debug/.fingerprint/idna-a551fee0f71fe929/dep-lib-idna-a551fee0f71fe929
new file mode 100644
index 0000000..792c4ec
Binary files /dev/null and b/target/debug/.fingerprint/idna-a551fee0f71fe929/dep-lib-idna-a551fee0f71fe929 differ
diff --git a/target/debug/.fingerprint/idna-a551fee0f71fe929/lib-idna-a551fee0f71fe929 b/target/debug/.fingerprint/idna-a551fee0f71fe929/lib-idna-a551fee0f71fe929
new file mode 100644
index 0000000..bbb291b
--- /dev/null
+++ b/target/debug/.fingerprint/idna-a551fee0f71fe929/lib-idna-a551fee0f71fe929
@@ -0,0 +1 @@
+e70dca6d87cac683
\ No newline at end of file
diff --git a/target/debug/.fingerprint/idna-a551fee0f71fe929/lib-idna-a551fee0f71fe929.json b/target/debug/.fingerprint/idna-a551fee0f71fe929/lib-idna-a551fee0f71fe929.json
new file mode 100644
index 0000000..d02c016
--- /dev/null
+++ b/target/debug/.fingerprint/idna-a551fee0f71fe929/lib-idna-a551fee0f71fe929.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":3308503836314127014,"profile":731176819336294830,"deps":[["matches v0.1.6",9121172600051055666],["unicode-bidi v0.3.3",14481179589676399525],["unicode-normalization v0.1.5",6136062531198482136]],"local":{"Precalculated":"0.1.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/iovec-6456cca526bac37d/dep-lib-iovec-6456cca526bac37d b/target/debug/.fingerprint/iovec-6456cca526bac37d/dep-lib-iovec-6456cca526bac37d
new file mode 100644
index 0000000..5fb80e2
Binary files /dev/null and b/target/debug/.fingerprint/iovec-6456cca526bac37d/dep-lib-iovec-6456cca526bac37d differ
diff --git a/target/debug/.fingerprint/iovec-6456cca526bac37d/lib-iovec-6456cca526bac37d b/target/debug/.fingerprint/iovec-6456cca526bac37d/lib-iovec-6456cca526bac37d
new file mode 100644
index 0000000..235b7d9
--- /dev/null
+++ b/target/debug/.fingerprint/iovec-6456cca526bac37d/lib-iovec-6456cca526bac37d
@@ -0,0 +1 @@
+50a3cd499826635c
\ No newline at end of file
diff --git a/target/debug/.fingerprint/iovec-6456cca526bac37d/lib-iovec-6456cca526bac37d.json b/target/debug/.fingerprint/iovec-6456cca526bac37d/lib-iovec-6456cca526bac37d.json
new file mode 100644
index 0000000..19e2f04
--- /dev/null
+++ b/target/debug/.fingerprint/iovec-6456cca526bac37d/lib-iovec-6456cca526bac37d.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":9607416350862480480,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972]],"local":{"Precalculated":"0.1.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/itoa-a2260b7adc104971/dep-lib-itoa-a2260b7adc104971 b/target/debug/.fingerprint/itoa-a2260b7adc104971/dep-lib-itoa-a2260b7adc104971
new file mode 100644
index 0000000..f2ff1db
Binary files /dev/null and b/target/debug/.fingerprint/itoa-a2260b7adc104971/dep-lib-itoa-a2260b7adc104971 differ
diff --git a/target/debug/.fingerprint/itoa-a2260b7adc104971/lib-itoa-a2260b7adc104971 b/target/debug/.fingerprint/itoa-a2260b7adc104971/lib-itoa-a2260b7adc104971
new file mode 100644
index 0000000..13c1622
--- /dev/null
+++ b/target/debug/.fingerprint/itoa-a2260b7adc104971/lib-itoa-a2260b7adc104971
@@ -0,0 +1 @@
+ad4cde79b2bc9a50
\ No newline at end of file
diff --git a/target/debug/.fingerprint/itoa-a2260b7adc104971/lib-itoa-a2260b7adc104971.json b/target/debug/.fingerprint/itoa-a2260b7adc104971/lib-itoa-a2260b7adc104971.json
new file mode 100644
index 0000000..f8fa600
--- /dev/null
+++ b/target/debug/.fingerprint/itoa-a2260b7adc104971/lib-itoa-a2260b7adc104971.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":10025730255401944888,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/dep-lib-jsonrpc_core-ed36abfe18bb7119 b/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/dep-lib-jsonrpc_core-ed36abfe18bb7119
new file mode 100644
index 0000000..8eb76bd
Binary files /dev/null and b/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/dep-lib-jsonrpc_core-ed36abfe18bb7119 differ
diff --git a/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/lib-jsonrpc_core-ed36abfe18bb7119 b/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/lib-jsonrpc_core-ed36abfe18bb7119
new file mode 100644
index 0000000..562109e
--- /dev/null
+++ b/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/lib-jsonrpc_core-ed36abfe18bb7119
@@ -0,0 +1 @@
+9f579e605931b40e
\ No newline at end of file
diff --git a/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/lib-jsonrpc_core-ed36abfe18bb7119.json b/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/lib-jsonrpc_core-ed36abfe18bb7119.json
new file mode 100644
index 0000000..fc86c73
--- /dev/null
+++ b/target/debug/.fingerprint/jsonrpc-core-ed36abfe18bb7119/lib-jsonrpc_core-ed36abfe18bb7119.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":8898883856926428776,"profile":731176819336294830,"deps":[["futures v0.1.14",2278465165944931584],["log v0.3.8",17599510212006507007],["serde v1.0.8",9356783860267739482],["serde_derive v1.0.8",5673648729817479358],["serde_json v1.0.2",2330536454262081947]],"local":{"Precalculated":"415d0d861b5ef948584cffdacdcc7765d45071de"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/dep-lib-jsonrpc_minihttp_server-cd4c1136dac107ca b/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/dep-lib-jsonrpc_minihttp_server-cd4c1136dac107ca
new file mode 100644
index 0000000..f6d9f58
Binary files /dev/null and b/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/dep-lib-jsonrpc_minihttp_server-cd4c1136dac107ca differ
diff --git a/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/lib-jsonrpc_minihttp_server-cd4c1136dac107ca b/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/lib-jsonrpc_minihttp_server-cd4c1136dac107ca
new file mode 100644
index 0000000..a64a42f
--- /dev/null
+++ b/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/lib-jsonrpc_minihttp_server-cd4c1136dac107ca
@@ -0,0 +1 @@
+a42887c460040563
\ No newline at end of file
diff --git a/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/lib-jsonrpc_minihttp_server-cd4c1136dac107ca.json b/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/lib-jsonrpc_minihttp_server-cd4c1136dac107ca.json
new file mode 100644
index 0000000..be03301
--- /dev/null
+++ b/target/debug/.fingerprint/jsonrpc-minihttp-server-cd4c1136dac107ca/lib-jsonrpc_minihttp_server-cd4c1136dac107ca.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":4216446111640073638,"profile":731176819336294830,"deps":[["jsonrpc-core v7.0.1 (https://github.com/paritytech/jsonrpc.git#415d0d86)",1059526072281749407],["jsonrpc-server-utils v7.0.1 (https://github.com/paritytech/jsonrpc.git#415d0d86)",3650164329562610839],["log v0.3.8",17599510212006507007],["parking_lot v0.4.4",3890629920809075809],["tokio-minihttp v0.1.0 (https://github.com/tomusdrw/tokio-minihttp#8acbafae)",7345623402349652007],["tokio-proto v0.1.0 (https://github.com/tomusdrw/tokio-proto#f6ee08cb)",5919709151317829858],["tokio-service v0.1.0",4242165067188007177]],"local":{"Precalculated":"415d0d861b5ef948584cffdacdcc7765d45071de"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/dep-lib-jsonrpc_server_utils-7736c125518db8b3 b/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/dep-lib-jsonrpc_server_utils-7736c125518db8b3
new file mode 100644
index 0000000..d499858
Binary files /dev/null and b/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/dep-lib-jsonrpc_server_utils-7736c125518db8b3 differ
diff --git a/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/lib-jsonrpc_server_utils-7736c125518db8b3 b/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/lib-jsonrpc_server_utils-7736c125518db8b3
new file mode 100644
index 0000000..52be006
--- /dev/null
+++ b/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/lib-jsonrpc_server_utils-7736c125518db8b3
@@ -0,0 +1 @@
+979c614b1efda732
\ No newline at end of file
diff --git a/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/lib-jsonrpc_server_utils-7736c125518db8b3.json b/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/lib-jsonrpc_server_utils-7736c125518db8b3.json
new file mode 100644
index 0000000..59170e9
--- /dev/null
+++ b/target/debug/.fingerprint/jsonrpc-server-utils-7736c125518db8b3/lib-jsonrpc_server_utils-7736c125518db8b3.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":9474221050305880277,"profile":731176819336294830,"deps":[["globset v0.1.4",18297637417354262181],["jsonrpc-core v7.0.1 (https://github.com/paritytech/jsonrpc.git#415d0d86)",1059526072281749407],["log v0.3.8",17599510212006507007],["tokio-core v0.1.8",4278558278754744686],["tokio-io v0.1.2",8988051348640606788]],"local":{"Precalculated":"415d0d861b5ef948584cffdacdcc7765d45071de"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/language-tags-dce561412cfa441f/dep-lib-language_tags-dce561412cfa441f b/target/debug/.fingerprint/language-tags-dce561412cfa441f/dep-lib-language_tags-dce561412cfa441f
new file mode 100644
index 0000000..8fa4cde
Binary files /dev/null and b/target/debug/.fingerprint/language-tags-dce561412cfa441f/dep-lib-language_tags-dce561412cfa441f differ
diff --git a/target/debug/.fingerprint/language-tags-dce561412cfa441f/lib-language_tags-dce561412cfa441f b/target/debug/.fingerprint/language-tags-dce561412cfa441f/lib-language_tags-dce561412cfa441f
new file mode 100644
index 0000000..000c70b
--- /dev/null
+++ b/target/debug/.fingerprint/language-tags-dce561412cfa441f/lib-language_tags-dce561412cfa441f
@@ -0,0 +1 @@
+ee8cb4a494d2217c
\ No newline at end of file
diff --git a/target/debug/.fingerprint/language-tags-dce561412cfa441f/lib-language_tags-dce561412cfa441f.json b/target/debug/.fingerprint/language-tags-dce561412cfa441f/lib-language_tags-dce561412cfa441f.json
new file mode 100644
index 0000000..31482cd
--- /dev/null
+++ b/target/debug/.fingerprint/language-tags-dce561412cfa441f/lib-language_tags-dce561412cfa441f.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":14103645509083039680,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.2.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/dep-lib-lazy_static-18005fa1be5dd889 b/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/dep-lib-lazy_static-18005fa1be5dd889
new file mode 100644
index 0000000..0c84001
Binary files /dev/null and b/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/dep-lib-lazy_static-18005fa1be5dd889 differ
diff --git a/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/lib-lazy_static-18005fa1be5dd889 b/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/lib-lazy_static-18005fa1be5dd889
new file mode 100644
index 0000000..919d13b
--- /dev/null
+++ b/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/lib-lazy_static-18005fa1be5dd889
@@ -0,0 +1 @@
+135285dd69829066
\ No newline at end of file
diff --git a/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/lib-lazy_static-18005fa1be5dd889.json b/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/lib-lazy_static-18005fa1be5dd889.json
new file mode 100644
index 0000000..8e31380
--- /dev/null
+++ b/target/debug/.fingerprint/lazy_static-18005fa1be5dd889/lib-lazy_static-18005fa1be5dd889.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":3993107155046372945,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.2.8"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/dep-lib-lazycell-43df05f1cf6910d1 b/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/dep-lib-lazycell-43df05f1cf6910d1
new file mode 100644
index 0000000..2486cef
Binary files /dev/null and b/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/dep-lib-lazycell-43df05f1cf6910d1 differ
diff --git a/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/lib-lazycell-43df05f1cf6910d1 b/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/lib-lazycell-43df05f1cf6910d1
new file mode 100644
index 0000000..9a45f64
--- /dev/null
+++ b/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/lib-lazycell-43df05f1cf6910d1
@@ -0,0 +1 @@
+51e9540d28ceb7ee
\ No newline at end of file
diff --git a/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/lib-lazycell-43df05f1cf6910d1.json b/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/lib-lazycell-43df05f1cf6910d1.json
new file mode 100644
index 0000000..6efd635
--- /dev/null
+++ b/target/debug/.fingerprint/lazycell-43df05f1cf6910d1/lib-lazycell-43df05f1cf6910d1.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":14434915633253362023,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.4.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/libc-f4ccf2fa58092d85/dep-lib-libc-f4ccf2fa58092d85 b/target/debug/.fingerprint/libc-f4ccf2fa58092d85/dep-lib-libc-f4ccf2fa58092d85
new file mode 100644
index 0000000..a245e1f
Binary files /dev/null and b/target/debug/.fingerprint/libc-f4ccf2fa58092d85/dep-lib-libc-f4ccf2fa58092d85 differ
diff --git a/target/debug/.fingerprint/libc-f4ccf2fa58092d85/lib-libc-f4ccf2fa58092d85 b/target/debug/.fingerprint/libc-f4ccf2fa58092d85/lib-libc-f4ccf2fa58092d85
new file mode 100644
index 0000000..334e80c
--- /dev/null
+++ b/target/debug/.fingerprint/libc-f4ccf2fa58092d85/lib-libc-f4ccf2fa58092d85
@@ -0,0 +1 @@
+9cff6bb511bddf8b
\ No newline at end of file
diff --git a/target/debug/.fingerprint/libc-f4ccf2fa58092d85/lib-libc-f4ccf2fa58092d85.json b/target/debug/.fingerprint/libc-f4ccf2fa58092d85/lib-libc-f4ccf2fa58092d85.json
new file mode 100644
index 0000000..261cc4d
--- /dev/null
+++ b/target/debug/.fingerprint/libc-f4ccf2fa58092d85/lib-libc-f4ccf2fa58092d85.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"use_std\"]","target":16504289390675604834,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.2.24"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/libflate-53626bc53c368b1f/dep-lib-libflate-53626bc53c368b1f b/target/debug/.fingerprint/libflate-53626bc53c368b1f/dep-lib-libflate-53626bc53c368b1f
new file mode 100644
index 0000000..3c71d24
Binary files /dev/null and b/target/debug/.fingerprint/libflate-53626bc53c368b1f/dep-lib-libflate-53626bc53c368b1f differ
diff --git a/target/debug/.fingerprint/libflate-53626bc53c368b1f/lib-libflate-53626bc53c368b1f b/target/debug/.fingerprint/libflate-53626bc53c368b1f/lib-libflate-53626bc53c368b1f
new file mode 100644
index 0000000..9ef86a0
--- /dev/null
+++ b/target/debug/.fingerprint/libflate-53626bc53c368b1f/lib-libflate-53626bc53c368b1f
@@ -0,0 +1 @@
+e02271b91453a4ab
\ No newline at end of file
diff --git a/target/debug/.fingerprint/libflate-53626bc53c368b1f/lib-libflate-53626bc53c368b1f.json b/target/debug/.fingerprint/libflate-53626bc53c368b1f/lib-libflate-53626bc53c368b1f.json
new file mode 100644
index 0000000..64764cb
--- /dev/null
+++ b/target/debug/.fingerprint/libflate-53626bc53c368b1f/lib-libflate-53626bc53c368b1f.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":7000873546555222681,"profile":731176819336294830,"deps":[["byteorder v1.0.0",6865632067315709040]],"local":{"Precalculated":"0.1.7"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/log-4cfe391024f1467d/dep-lib-log-4cfe391024f1467d b/target/debug/.fingerprint/log-4cfe391024f1467d/dep-lib-log-4cfe391024f1467d
new file mode 100644
index 0000000..f682c2f
Binary files /dev/null and b/target/debug/.fingerprint/log-4cfe391024f1467d/dep-lib-log-4cfe391024f1467d differ
diff --git a/target/debug/.fingerprint/log-4cfe391024f1467d/lib-log-4cfe391024f1467d b/target/debug/.fingerprint/log-4cfe391024f1467d/lib-log-4cfe391024f1467d
new file mode 100644
index 0000000..0b979db
--- /dev/null
+++ b/target/debug/.fingerprint/log-4cfe391024f1467d/lib-log-4cfe391024f1467d
@@ -0,0 +1 @@
+fff181a74a053ef4
\ No newline at end of file
diff --git a/target/debug/.fingerprint/log-4cfe391024f1467d/lib-log-4cfe391024f1467d.json b/target/debug/.fingerprint/log-4cfe391024f1467d/lib-log-4cfe391024f1467d.json
new file mode 100644
index 0000000..bacd22e
--- /dev/null
+++ b/target/debug/.fingerprint/log-4cfe391024f1467d/lib-log-4cfe391024f1467d.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"use_std\"]","target":5756054080868658200,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.8"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/dep-lib-matches-e2a43ce3f52b9dcc b/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/dep-lib-matches-e2a43ce3f52b9dcc
new file mode 100644
index 0000000..8ce2bab
Binary files /dev/null and b/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/dep-lib-matches-e2a43ce3f52b9dcc differ
diff --git a/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/lib-matches-e2a43ce3f52b9dcc b/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/lib-matches-e2a43ce3f52b9dcc
new file mode 100644
index 0000000..0f940df
--- /dev/null
+++ b/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/lib-matches-e2a43ce3f52b9dcc
@@ -0,0 +1 @@
+32bc115927ea947e
\ No newline at end of file
diff --git a/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/lib-matches-e2a43ce3f52b9dcc.json b/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/lib-matches-e2a43ce3f52b9dcc.json
new file mode 100644
index 0000000..a207b1b
--- /dev/null
+++ b/target/debug/.fingerprint/matches-e2a43ce3f52b9dcc/lib-matches-e2a43ce3f52b9dcc.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":65061177210453088,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.6"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/memchr-69681615927cea24/dep-lib-memchr-69681615927cea24 b/target/debug/.fingerprint/memchr-69681615927cea24/dep-lib-memchr-69681615927cea24
new file mode 100644
index 0000000..1b22456
Binary files /dev/null and b/target/debug/.fingerprint/memchr-69681615927cea24/dep-lib-memchr-69681615927cea24 differ
diff --git a/target/debug/.fingerprint/memchr-69681615927cea24/lib-memchr-69681615927cea24 b/target/debug/.fingerprint/memchr-69681615927cea24/lib-memchr-69681615927cea24
new file mode 100644
index 0000000..35149f4
--- /dev/null
+++ b/target/debug/.fingerprint/memchr-69681615927cea24/lib-memchr-69681615927cea24
@@ -0,0 +1 @@
+4567fd971375df49
\ No newline at end of file
diff --git a/target/debug/.fingerprint/memchr-69681615927cea24/lib-memchr-69681615927cea24.json b/target/debug/.fingerprint/memchr-69681615927cea24/lib-memchr-69681615927cea24.json
new file mode 100644
index 0000000..29563c4
--- /dev/null
+++ b/target/debug/.fingerprint/memchr-69681615927cea24/lib-memchr-69681615927cea24.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"libc\", \"use_std\"]","target":15167526544984708547,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972]],"local":{"Precalculated":"1.0.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/mime-4a0f41c031710506/dep-lib-mime-4a0f41c031710506 b/target/debug/.fingerprint/mime-4a0f41c031710506/dep-lib-mime-4a0f41c031710506
new file mode 100644
index 0000000..18ff47c
Binary files /dev/null and b/target/debug/.fingerprint/mime-4a0f41c031710506/dep-lib-mime-4a0f41c031710506 differ
diff --git a/target/debug/.fingerprint/mime-4a0f41c031710506/lib-mime-4a0f41c031710506 b/target/debug/.fingerprint/mime-4a0f41c031710506/lib-mime-4a0f41c031710506
new file mode 100644
index 0000000..8567fc9
--- /dev/null
+++ b/target/debug/.fingerprint/mime-4a0f41c031710506/lib-mime-4a0f41c031710506
@@ -0,0 +1 @@
+32198aa8dcae87a7
\ No newline at end of file
diff --git a/target/debug/.fingerprint/mime-4a0f41c031710506/lib-mime-4a0f41c031710506.json b/target/debug/.fingerprint/mime-4a0f41c031710506/lib-mime-4a0f41c031710506.json
new file mode 100644
index 0000000..16f4d38
--- /dev/null
+++ b/target/debug/.fingerprint/mime-4a0f41c031710506/lib-mime-4a0f41c031710506.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":13107070723322434307,"profile":731176819336294830,"deps":[["log v0.3.8",17599510212006507007]],"local":{"Precalculated":"0.2.6"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/mio-24ed8f4e89aa6126/dep-lib-mio-24ed8f4e89aa6126 b/target/debug/.fingerprint/mio-24ed8f4e89aa6126/dep-lib-mio-24ed8f4e89aa6126
new file mode 100644
index 0000000..161844e
Binary files /dev/null and b/target/debug/.fingerprint/mio-24ed8f4e89aa6126/dep-lib-mio-24ed8f4e89aa6126 differ
diff --git a/target/debug/.fingerprint/mio-24ed8f4e89aa6126/lib-mio-24ed8f4e89aa6126 b/target/debug/.fingerprint/mio-24ed8f4e89aa6126/lib-mio-24ed8f4e89aa6126
new file mode 100644
index 0000000..be89ad5
--- /dev/null
+++ b/target/debug/.fingerprint/mio-24ed8f4e89aa6126/lib-mio-24ed8f4e89aa6126
@@ -0,0 +1 @@
+43e0dd78df47eb3b
\ No newline at end of file
diff --git a/target/debug/.fingerprint/mio-24ed8f4e89aa6126/lib-mio-24ed8f4e89aa6126.json b/target/debug/.fingerprint/mio-24ed8f4e89aa6126/lib-mio-24ed8f4e89aa6126.json
new file mode 100644
index 0000000..6e07591
--- /dev/null
+++ b/target/debug/.fingerprint/mio-24ed8f4e89aa6126/lib-mio-24ed8f4e89aa6126.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"with-deprecated\"]","target":13131952414572500412,"profile":731176819336294830,"deps":[["iovec v0.1.0",6657207109698822992],["lazycell v0.4.0",17201443973182581073],["libc v0.2.24",10078982374834306972],["log v0.3.8",17599510212006507007],["net2 v0.2.29",16788320216243647083],["slab v0.3.0",3192514064517124032]],"local":{"Precalculated":"0.6.9"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/native-tls-dbf47671f528aca2/dep-lib-native_tls-dbf47671f528aca2 b/target/debug/.fingerprint/native-tls-dbf47671f528aca2/dep-lib-native_tls-dbf47671f528aca2
new file mode 100644
index 0000000..47be60a
Binary files /dev/null and b/target/debug/.fingerprint/native-tls-dbf47671f528aca2/dep-lib-native_tls-dbf47671f528aca2 differ
diff --git a/target/debug/.fingerprint/native-tls-dbf47671f528aca2/lib-native_tls-dbf47671f528aca2 b/target/debug/.fingerprint/native-tls-dbf47671f528aca2/lib-native_tls-dbf47671f528aca2
new file mode 100644
index 0000000..18567ed
--- /dev/null
+++ b/target/debug/.fingerprint/native-tls-dbf47671f528aca2/lib-native_tls-dbf47671f528aca2
@@ -0,0 +1 @@
+cb68b184906212e0
\ No newline at end of file
diff --git a/target/debug/.fingerprint/native-tls-dbf47671f528aca2/lib-native_tls-dbf47671f528aca2.json b/target/debug/.fingerprint/native-tls-dbf47671f528aca2/lib-native_tls-dbf47671f528aca2.json
new file mode 100644
index 0000000..52bad87
--- /dev/null
+++ b/target/debug/.fingerprint/native-tls-dbf47671f528aca2/lib-native_tls-dbf47671f528aca2.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":13341945479648469961,"profile":731176819336294830,"deps":[["openssl v0.9.14",9151002175935882933]],"local":{"Precalculated":"0.1.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/net2-be2dd9956e589540/dep-lib-net2-be2dd9956e589540 b/target/debug/.fingerprint/net2-be2dd9956e589540/dep-lib-net2-be2dd9956e589540
new file mode 100644
index 0000000..124a00b
Binary files /dev/null and b/target/debug/.fingerprint/net2-be2dd9956e589540/dep-lib-net2-be2dd9956e589540 differ
diff --git a/target/debug/.fingerprint/net2-be2dd9956e589540/lib-net2-be2dd9956e589540 b/target/debug/.fingerprint/net2-be2dd9956e589540/lib-net2-be2dd9956e589540
new file mode 100644
index 0000000..458d281
--- /dev/null
+++ b/target/debug/.fingerprint/net2-be2dd9956e589540/lib-net2-be2dd9956e589540
@@ -0,0 +1 @@
+6b32b6d04918fce8
\ No newline at end of file
diff --git a/target/debug/.fingerprint/net2-be2dd9956e589540/lib-net2-be2dd9956e589540.json b/target/debug/.fingerprint/net2-be2dd9956e589540/lib-net2-be2dd9956e589540.json
new file mode 100644
index 0000000..3f24b39
--- /dev/null
+++ b/target/debug/.fingerprint/net2-be2dd9956e589540/lib-net2-be2dd9956e589540.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"duration\"]","target":4235686935638719403,"profile":731176819336294830,"deps":[["cfg-if v0.1.1",17503115576418599227],["libc v0.2.24",10078982374834306972]],"local":{"Precalculated":"0.2.29"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/dep-lib-nodrop-4031f32ae4cd9e4f b/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/dep-lib-nodrop-4031f32ae4cd9e4f
new file mode 100644
index 0000000..d31223c
Binary files /dev/null and b/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/dep-lib-nodrop-4031f32ae4cd9e4f differ
diff --git a/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/lib-nodrop-4031f32ae4cd9e4f b/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/lib-nodrop-4031f32ae4cd9e4f
new file mode 100644
index 0000000..fdf96dd
--- /dev/null
+++ b/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/lib-nodrop-4031f32ae4cd9e4f
@@ -0,0 +1 @@
+be0938d60562bb7b
\ No newline at end of file
diff --git a/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/lib-nodrop-4031f32ae4cd9e4f.json b/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/lib-nodrop-4031f32ae4cd9e4f.json
new file mode 100644
index 0000000..0f42eec
--- /dev/null
+++ b/target/debug/.fingerprint/nodrop-4031f32ae4cd9e4f/lib-nodrop-4031f32ae4cd9e4f.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"odds\", \"std\"]","target":14353487619402291994,"profile":731176819336294830,"deps":[["odds v0.2.25",2864378341541848706]],"local":{"Precalculated":"0.1.9"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-031aff75c38d8f9c/dep-lib-num-031aff75c38d8f9c b/target/debug/.fingerprint/num-031aff75c38d8f9c/dep-lib-num-031aff75c38d8f9c
new file mode 100644
index 0000000..fa13bc3
Binary files /dev/null and b/target/debug/.fingerprint/num-031aff75c38d8f9c/dep-lib-num-031aff75c38d8f9c differ
diff --git a/target/debug/.fingerprint/num-031aff75c38d8f9c/lib-num-031aff75c38d8f9c b/target/debug/.fingerprint/num-031aff75c38d8f9c/lib-num-031aff75c38d8f9c
new file mode 100644
index 0000000..28ff43b
--- /dev/null
+++ b/target/debug/.fingerprint/num-031aff75c38d8f9c/lib-num-031aff75c38d8f9c
@@ -0,0 +1 @@
+1e3146630c58f8b5
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-031aff75c38d8f9c/lib-num-031aff75c38d8f9c.json b/target/debug/.fingerprint/num-031aff75c38d8f9c/lib-num-031aff75c38d8f9c.json
new file mode 100644
index 0000000..c312428
--- /dev/null
+++ b/target/debug/.fingerprint/num-031aff75c38d8f9c/lib-num-031aff75c38d8f9c.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"bigint\", \"complex\", \"default\", \"num-bigint\", \"num-complex\", \"num-rational\", \"rational\", \"rustc-serialize\"]","target":18320013489300199147,"profile":731176819336294830,"deps":[["num-bigint v0.1.39",15964549287717170897],["num-complex v0.1.38",10076615136222801604],["num-integer v0.1.34",7214363702993448143],["num-iter v0.1.33",3009658622229838489],["num-rational v0.1.38",6336117528501570698],["num-traits v0.1.39",2640625177936125622]],"local":{"Precalculated":"0.1.39"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-bigint-45c792512cec32c2/dep-lib-num_bigint-45c792512cec32c2 b/target/debug/.fingerprint/num-bigint-45c792512cec32c2/dep-lib-num_bigint-45c792512cec32c2
new file mode 100644
index 0000000..00b5e9b
Binary files /dev/null and b/target/debug/.fingerprint/num-bigint-45c792512cec32c2/dep-lib-num_bigint-45c792512cec32c2 differ
diff --git a/target/debug/.fingerprint/num-bigint-45c792512cec32c2/lib-num_bigint-45c792512cec32c2 b/target/debug/.fingerprint/num-bigint-45c792512cec32c2/lib-num_bigint-45c792512cec32c2
new file mode 100644
index 0000000..ed54e65
--- /dev/null
+++ b/target/debug/.fingerprint/num-bigint-45c792512cec32c2/lib-num_bigint-45c792512cec32c2
@@ -0,0 +1 @@
+d1ee984dfe788ddd
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-bigint-45c792512cec32c2/lib-num_bigint-45c792512cec32c2.json b/target/debug/.fingerprint/num-bigint-45c792512cec32c2/lib-num_bigint-45c792512cec32c2.json
new file mode 100644
index 0000000..16fdc6b
--- /dev/null
+++ b/target/debug/.fingerprint/num-bigint-45c792512cec32c2/lib-num_bigint-45c792512cec32c2.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"rand\", \"rustc-serialize\"]","target":10028183860208840130,"profile":731176819336294830,"deps":[["num-integer v0.1.34",7214363702993448143],["num-traits v0.1.39",2640625177936125622],["rand v0.3.15",16081693164340249007],["rustc-serialize v0.3.24",15751235613328585593]],"local":{"Precalculated":"0.1.39"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-complex-783eb5b936143d56/dep-lib-num_complex-783eb5b936143d56 b/target/debug/.fingerprint/num-complex-783eb5b936143d56/dep-lib-num_complex-783eb5b936143d56
new file mode 100644
index 0000000..81cf504
Binary files /dev/null and b/target/debug/.fingerprint/num-complex-783eb5b936143d56/dep-lib-num_complex-783eb5b936143d56 differ
diff --git a/target/debug/.fingerprint/num-complex-783eb5b936143d56/lib-num_complex-783eb5b936143d56 b/target/debug/.fingerprint/num-complex-783eb5b936143d56/lib-num_complex-783eb5b936143d56
new file mode 100644
index 0000000..3836a24
--- /dev/null
+++ b/target/debug/.fingerprint/num-complex-783eb5b936143d56/lib-num_complex-783eb5b936143d56
@@ -0,0 +1 @@
+c46ee2041454d78b
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-complex-783eb5b936143d56/lib-num_complex-783eb5b936143d56.json b/target/debug/.fingerprint/num-complex-783eb5b936143d56/lib-num_complex-783eb5b936143d56.json
new file mode 100644
index 0000000..912edb1
--- /dev/null
+++ b/target/debug/.fingerprint/num-complex-783eb5b936143d56/lib-num_complex-783eb5b936143d56.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"rustc-serialize\"]","target":4570177190715928886,"profile":731176819336294830,"deps":[["num-traits v0.1.39",2640625177936125622],["rustc-serialize v0.3.24",15751235613328585593]],"local":{"Precalculated":"0.1.38"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/dep-lib-num_integer-dad7e7932a5f6c81 b/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/dep-lib-num_integer-dad7e7932a5f6c81
new file mode 100644
index 0000000..c67c415
Binary files /dev/null and b/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/dep-lib-num_integer-dad7e7932a5f6c81 differ
diff --git a/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/lib-num_integer-dad7e7932a5f6c81 b/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/lib-num_integer-dad7e7932a5f6c81
new file mode 100644
index 0000000..0286727
--- /dev/null
+++ b/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/lib-num_integer-dad7e7932a5f6c81
@@ -0,0 +1 @@
+cf6c658590911e64
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/lib-num_integer-dad7e7932a5f6c81.json b/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/lib-num_integer-dad7e7932a5f6c81.json
new file mode 100644
index 0000000..54dac07
--- /dev/null
+++ b/target/debug/.fingerprint/num-integer-dad7e7932a5f6c81/lib-num_integer-dad7e7932a5f6c81.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":13734790824781602442,"profile":731176819336294830,"deps":[["num-traits v0.1.39",2640625177936125622]],"local":{"Precalculated":"0.1.34"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/dep-lib-num_iter-b399bbd189e5f67b b/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/dep-lib-num_iter-b399bbd189e5f67b
new file mode 100644
index 0000000..ded888e
Binary files /dev/null and b/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/dep-lib-num_iter-b399bbd189e5f67b differ
diff --git a/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/lib-num_iter-b399bbd189e5f67b b/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/lib-num_iter-b399bbd189e5f67b
new file mode 100644
index 0000000..6cfdd12
--- /dev/null
+++ b/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/lib-num_iter-b399bbd189e5f67b
@@ -0,0 +1 @@
+997a33319274c429
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/lib-num_iter-b399bbd189e5f67b.json b/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/lib-num_iter-b399bbd189e5f67b.json
new file mode 100644
index 0000000..ebcf3e4
--- /dev/null
+++ b/target/debug/.fingerprint/num-iter-b399bbd189e5f67b/lib-num_iter-b399bbd189e5f67b.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":6718588395164247249,"profile":731176819336294830,"deps":[["num-integer v0.1.34",7214363702993448143],["num-traits v0.1.39",2640625177936125622]],"local":{"Precalculated":"0.1.33"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-rational-425879638dc36b28/dep-lib-num_rational-425879638dc36b28 b/target/debug/.fingerprint/num-rational-425879638dc36b28/dep-lib-num_rational-425879638dc36b28
new file mode 100644
index 0000000..0225f75
Binary files /dev/null and b/target/debug/.fingerprint/num-rational-425879638dc36b28/dep-lib-num_rational-425879638dc36b28 differ
diff --git a/target/debug/.fingerprint/num-rational-425879638dc36b28/lib-num_rational-425879638dc36b28 b/target/debug/.fingerprint/num-rational-425879638dc36b28/lib-num_rational-425879638dc36b28
new file mode 100644
index 0000000..9999f2f
--- /dev/null
+++ b/target/debug/.fingerprint/num-rational-425879638dc36b28/lib-num_rational-425879638dc36b28
@@ -0,0 +1 @@
+8a4c766d5269ee57
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-rational-425879638dc36b28/lib-num_rational-425879638dc36b28.json b/target/debug/.fingerprint/num-rational-425879638dc36b28/lib-num_rational-425879638dc36b28.json
new file mode 100644
index 0000000..e0e3db7
--- /dev/null
+++ b/target/debug/.fingerprint/num-rational-425879638dc36b28/lib-num_rational-425879638dc36b28.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"bigint\", \"default\", \"num-bigint\", \"rustc-serialize\"]","target":14867979511234314674,"profile":731176819336294830,"deps":[["num-bigint v0.1.39",15964549287717170897],["num-integer v0.1.34",7214363702993448143],["num-traits v0.1.39",2640625177936125622],["rustc-serialize v0.3.24",15751235613328585593]],"local":{"Precalculated":"0.1.38"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-traits-32c57ec3799391e2/dep-lib-num_traits-32c57ec3799391e2 b/target/debug/.fingerprint/num-traits-32c57ec3799391e2/dep-lib-num_traits-32c57ec3799391e2
new file mode 100644
index 0000000..0254db6
Binary files /dev/null and b/target/debug/.fingerprint/num-traits-32c57ec3799391e2/dep-lib-num_traits-32c57ec3799391e2 differ
diff --git a/target/debug/.fingerprint/num-traits-32c57ec3799391e2/lib-num_traits-32c57ec3799391e2 b/target/debug/.fingerprint/num-traits-32c57ec3799391e2/lib-num_traits-32c57ec3799391e2
new file mode 100644
index 0000000..06be46b
--- /dev/null
+++ b/target/debug/.fingerprint/num-traits-32c57ec3799391e2/lib-num_traits-32c57ec3799391e2
@@ -0,0 +1 @@
+b6ded5d39b62a524
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num-traits-32c57ec3799391e2/lib-num_traits-32c57ec3799391e2.json b/target/debug/.fingerprint/num-traits-32c57ec3799391e2/lib-num_traits-32c57ec3799391e2.json
new file mode 100644
index 0000000..b8045ff
--- /dev/null
+++ b/target/debug/.fingerprint/num-traits-32c57ec3799391e2/lib-num_traits-32c57ec3799391e2.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":11377879272923246825,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.39"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/dep-lib-num_cpus-1744e8bc49f70b5a b/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/dep-lib-num_cpus-1744e8bc49f70b5a
new file mode 100644
index 0000000..d9f5735
Binary files /dev/null and b/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/dep-lib-num_cpus-1744e8bc49f70b5a differ
diff --git a/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/lib-num_cpus-1744e8bc49f70b5a b/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/lib-num_cpus-1744e8bc49f70b5a
new file mode 100644
index 0000000..b683acb
--- /dev/null
+++ b/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/lib-num_cpus-1744e8bc49f70b5a
@@ -0,0 +1 @@
+e0a230cb3d3a9d05
\ No newline at end of file
diff --git a/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/lib-num_cpus-1744e8bc49f70b5a.json b/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/lib-num_cpus-1744e8bc49f70b5a.json
new file mode 100644
index 0000000..55c18da
--- /dev/null
+++ b/target/debug/.fingerprint/num_cpus-1744e8bc49f70b5a/lib-num_cpus-1744e8bc49f70b5a.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":11056978725017977182,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972]],"local":{"Precalculated":"1.5.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/dep-lib-odds-7ba020b1d4c9ddc8 b/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/dep-lib-odds-7ba020b1d4c9ddc8
new file mode 100644
index 0000000..5715e62
Binary files /dev/null and b/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/dep-lib-odds-7ba020b1d4c9ddc8 differ
diff --git a/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/lib-odds-7ba020b1d4c9ddc8 b/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/lib-odds-7ba020b1d4c9ddc8
new file mode 100644
index 0000000..944f334
--- /dev/null
+++ b/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/lib-odds-7ba020b1d4c9ddc8
@@ -0,0 +1 @@
+82a6ecedec50c027
\ No newline at end of file
diff --git a/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/lib-odds-7ba020b1d4c9ddc8.json b/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/lib-odds-7ba020b1d4c9ddc8.json
new file mode 100644
index 0000000..2ce011e
--- /dev/null
+++ b/target/debug/.fingerprint/odds-7ba020b1d4c9ddc8/lib-odds-7ba020b1d4c9ddc8.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"std\"]","target":8330362869475412862,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.2.25"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-7e7921378ef729a4/build-script-build_script_build-7e7921378ef729a4 b/target/debug/.fingerprint/openssl-7e7921378ef729a4/build-script-build_script_build-7e7921378ef729a4
new file mode 100644
index 0000000..c78af94
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-7e7921378ef729a4/build-script-build_script_build-7e7921378ef729a4
@@ -0,0 +1 @@
+2f509d4ea5c6e698
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-7e7921378ef729a4/build-script-build_script_build-7e7921378ef729a4.json b/target/debug/.fingerprint/openssl-7e7921378ef729a4/build-script-build_script_build-7e7921378ef729a4.json
new file mode 100644
index 0000000..3ab9805
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-7e7921378ef729a4/build-script-build_script_build-7e7921378ef729a4.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":2995854049004833416,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.9.14"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-7e7921378ef729a4/dep-build-script-build_script_build-7e7921378ef729a4 b/target/debug/.fingerprint/openssl-7e7921378ef729a4/dep-build-script-build_script_build-7e7921378ef729a4
new file mode 100644
index 0000000..7ee70ce
Binary files /dev/null and b/target/debug/.fingerprint/openssl-7e7921378ef729a4/dep-build-script-build_script_build-7e7921378ef729a4 differ
diff --git a/target/debug/.fingerprint/openssl-9b797582d073861b/build b/target/debug/.fingerprint/openssl-9b797582d073861b/build
new file mode 100644
index 0000000..8d41bc9
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-9b797582d073861b/build
@@ -0,0 +1 @@
+a6f9de900c609efd
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-9b797582d073861b/build.json b/target/debug/.fingerprint/openssl-9b797582d073861b/build.json
new file mode 100644
index 0000000..b2624f0
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-9b797582d073861b/build.json
@@ -0,0 +1 @@
+{"rustc":0,"features":"","target":0,"profile":0,"deps":[],"local":{"Precalculated":"0.9.14"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/dep-lib-openssl-9dbe084b5c8e2c23 b/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/dep-lib-openssl-9dbe084b5c8e2c23
new file mode 100644
index 0000000..ff9acb6
Binary files /dev/null and b/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/dep-lib-openssl-9dbe084b5c8e2c23 differ
diff --git a/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/lib-openssl-9dbe084b5c8e2c23 b/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/lib-openssl-9dbe084b5c8e2c23
new file mode 100644
index 0000000..db044c7
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/lib-openssl-9dbe084b5c8e2c23
@@ -0,0 +1 @@
+b5267cb3fee3fe7e
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/lib-openssl-9dbe084b5c8e2c23.json b/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/lib-openssl-9dbe084b5c8e2c23.json
new file mode 100644
index 0000000..eeb1787
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-9dbe084b5c8e2c23/lib-openssl-9dbe084b5c8e2c23.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":1917344048921472810,"profile":731176819336294830,"deps":[["bitflags v0.9.1",10633343931222650049],["foreign-types v0.2.0",14908993236483852908],["lazy_static v0.2.8",7390550379714662931],["libc v0.2.24",10078982374834306972],["openssl-sys v0.9.14",3153126946186201321]],"local":{"Precalculated":"0.9.14"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/build-script-build_script_build-32a4be748385fda0 b/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/build-script-build_script_build-32a4be748385fda0
new file mode 100644
index 0000000..c835c16
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/build-script-build_script_build-32a4be748385fda0
@@ -0,0 +1 @@
+6818653d46be8409
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/build-script-build_script_build-32a4be748385fda0.json b/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/build-script-build_script_build-32a4be748385fda0.json
new file mode 100644
index 0000000..6644bfe
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/build-script-build_script_build-32a4be748385fda0.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":8590668515526888816,"profile":731176819336294830,"deps":[["gcc v0.3.51",10654552508874704947],["pkg-config v0.3.9",13785666105674983411]],"local":{"Precalculated":"0.9.14"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/dep-build-script-build_script_build-32a4be748385fda0 b/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/dep-build-script-build_script_build-32a4be748385fda0
new file mode 100644
index 0000000..7394190
Binary files /dev/null and b/target/debug/.fingerprint/openssl-sys-32a4be748385fda0/dep-build-script-build_script_build-32a4be748385fda0 differ
diff --git a/target/debug/.fingerprint/openssl-sys-6c107df70444a0f0/build b/target/debug/.fingerprint/openssl-sys-6c107df70444a0f0/build
new file mode 100644
index 0000000..8d41bc9
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-sys-6c107df70444a0f0/build
@@ -0,0 +1 @@
+a6f9de900c609efd
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-sys-6c107df70444a0f0/build.json b/target/debug/.fingerprint/openssl-sys-6c107df70444a0f0/build.json
new file mode 100644
index 0000000..b2624f0
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-sys-6c107df70444a0f0/build.json
@@ -0,0 +1 @@
+{"rustc":0,"features":"","target":0,"profile":0,"deps":[],"local":{"Precalculated":"0.9.14"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/dep-lib-openssl_sys-a633c1c1325f1b25 b/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/dep-lib-openssl_sys-a633c1c1325f1b25
new file mode 100644
index 0000000..46bbd97
Binary files /dev/null and b/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/dep-lib-openssl_sys-a633c1c1325f1b25 differ
diff --git a/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/lib-openssl_sys-a633c1c1325f1b25 b/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/lib-openssl_sys-a633c1c1325f1b25
new file mode 100644
index 0000000..bd55715
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/lib-openssl_sys-a633c1c1325f1b25
@@ -0,0 +1 @@
+e90824674028c22b
\ No newline at end of file
diff --git a/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/lib-openssl_sys-a633c1c1325f1b25.json b/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/lib-openssl_sys-a633c1c1325f1b25.json
new file mode 100644
index 0000000..5f64ef5
--- /dev/null
+++ b/target/debug/.fingerprint/openssl-sys-a633c1c1325f1b25/lib-openssl_sys-a633c1c1325f1b25.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":7883640963254157934,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972]],"local":{"Precalculated":"0.9.14"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/dep-lib-owning_ref-9ae3d472223e5e47 b/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/dep-lib-owning_ref-9ae3d472223e5e47
new file mode 100644
index 0000000..53c1d42
Binary files /dev/null and b/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/dep-lib-owning_ref-9ae3d472223e5e47 differ
diff --git a/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/lib-owning_ref-9ae3d472223e5e47 b/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/lib-owning_ref-9ae3d472223e5e47
new file mode 100644
index 0000000..4424d0d
--- /dev/null
+++ b/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/lib-owning_ref-9ae3d472223e5e47
@@ -0,0 +1 @@
+1001520dbf3f66e6
\ No newline at end of file
diff --git a/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/lib-owning_ref-9ae3d472223e5e47.json b/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/lib-owning_ref-9ae3d472223e5e47.json
new file mode 100644
index 0000000..4613f32
--- /dev/null
+++ b/target/debug/.fingerprint/owning_ref-9ae3d472223e5e47/lib-owning_ref-9ae3d472223e5e47.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":2603398822601475898,"profile":731176819336294830,"deps":[["stable_deref_trait v1.0.0",7427164212586436120]],"local":{"Precalculated":"0.3.3"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/dep-lib-parking_lot-3d4f92909099fe8c b/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/dep-lib-parking_lot-3d4f92909099fe8c
new file mode 100644
index 0000000..f8bdbc4
Binary files /dev/null and b/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/dep-lib-parking_lot-3d4f92909099fe8c differ
diff --git a/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/lib-parking_lot-3d4f92909099fe8c b/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/lib-parking_lot-3d4f92909099fe8c
new file mode 100644
index 0000000..3367c34
--- /dev/null
+++ b/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/lib-parking_lot-3d4f92909099fe8c
@@ -0,0 +1 @@
+61c454ae4c4bfe35
\ No newline at end of file
diff --git a/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/lib-parking_lot-3d4f92909099fe8c.json b/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/lib-parking_lot-3d4f92909099fe8c.json
new file mode 100644
index 0000000..3561582
--- /dev/null
+++ b/target/debug/.fingerprint/parking_lot-3d4f92909099fe8c/lib-parking_lot-3d4f92909099fe8c.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"owning_ref\"]","target":17506166192315468418,"profile":731176819336294830,"deps":[["owning_ref v0.3.3",16602027166142693648],["parking_lot_core v0.2.2",15051325285119499105],["thread-id v3.1.0",11955328202727175751]],"local":{"Precalculated":"0.4.4"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/dep-lib-parking_lot_core-1c8766a081215852 b/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/dep-lib-parking_lot_core-1c8766a081215852
new file mode 100644
index 0000000..8e25fa6
Binary files /dev/null and b/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/dep-lib-parking_lot_core-1c8766a081215852 differ
diff --git a/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/lib-parking_lot_core-1c8766a081215852 b/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/lib-parking_lot_core-1c8766a081215852
new file mode 100644
index 0000000..a0deddb
--- /dev/null
+++ b/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/lib-parking_lot_core-1c8766a081215852
@@ -0,0 +1 @@
+611b67fa990ce1d0
\ No newline at end of file
diff --git a/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/lib-parking_lot_core-1c8766a081215852.json b/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/lib-parking_lot_core-1c8766a081215852.json
new file mode 100644
index 0000000..8ed42fc
--- /dev/null
+++ b/target/debug/.fingerprint/parking_lot_core-1c8766a081215852/lib-parking_lot_core-1c8766a081215852.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":1377991327517485588,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972],["rand v0.3.15",16081693164340249007],["smallvec v0.4.0",4523896946577740142]],"local":{"Precalculated":"0.2.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/dep-lib-percent_encoding-d4c121aa149b4b75 b/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/dep-lib-percent_encoding-d4c121aa149b4b75
new file mode 100644
index 0000000..ccfff1c
Binary files /dev/null and b/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/dep-lib-percent_encoding-d4c121aa149b4b75 differ
diff --git a/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/lib-percent_encoding-d4c121aa149b4b75 b/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/lib-percent_encoding-d4c121aa149b4b75
new file mode 100644
index 0000000..32f2849
--- /dev/null
+++ b/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/lib-percent_encoding-d4c121aa149b4b75
@@ -0,0 +1 @@
+9b4dbe5925201928
\ No newline at end of file
diff --git a/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/lib-percent_encoding-d4c121aa149b4b75.json b/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/lib-percent_encoding-d4c121aa149b4b75.json
new file mode 100644
index 0000000..e4c011d
--- /dev/null
+++ b/target/debug/.fingerprint/percent-encoding-d4c121aa149b4b75/lib-percent_encoding-d4c121aa149b4b75.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":10400405969477604104,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.0.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/dep-lib-pkg_config-fdeeca4d6057a82a b/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/dep-lib-pkg_config-fdeeca4d6057a82a
new file mode 100644
index 0000000..9c4ac65
Binary files /dev/null and b/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/dep-lib-pkg_config-fdeeca4d6057a82a differ
diff --git a/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/lib-pkg_config-fdeeca4d6057a82a b/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/lib-pkg_config-fdeeca4d6057a82a
new file mode 100644
index 0000000..5d9ad99
--- /dev/null
+++ b/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/lib-pkg_config-fdeeca4d6057a82a
@@ -0,0 +1 @@
+f367e694488650bf
\ No newline at end of file
diff --git a/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/lib-pkg_config-fdeeca4d6057a82a.json b/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/lib-pkg_config-fdeeca4d6057a82a.json
new file mode 100644
index 0000000..7950fe1
--- /dev/null
+++ b/target/debug/.fingerprint/pkg-config-fdeeca4d6057a82a/lib-pkg_config-fdeeca4d6057a82a.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":12943965438467157559,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.9"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/quote-983cfcbeae6039c8/dep-lib-quote-983cfcbeae6039c8 b/target/debug/.fingerprint/quote-983cfcbeae6039c8/dep-lib-quote-983cfcbeae6039c8
new file mode 100644
index 0000000..6360249
Binary files /dev/null and b/target/debug/.fingerprint/quote-983cfcbeae6039c8/dep-lib-quote-983cfcbeae6039c8 differ
diff --git a/target/debug/.fingerprint/quote-983cfcbeae6039c8/lib-quote-983cfcbeae6039c8 b/target/debug/.fingerprint/quote-983cfcbeae6039c8/lib-quote-983cfcbeae6039c8
new file mode 100644
index 0000000..87d58d4
--- /dev/null
+++ b/target/debug/.fingerprint/quote-983cfcbeae6039c8/lib-quote-983cfcbeae6039c8
@@ -0,0 +1 @@
+63b46994d20b7093
\ No newline at end of file
diff --git a/target/debug/.fingerprint/quote-983cfcbeae6039c8/lib-quote-983cfcbeae6039c8.json b/target/debug/.fingerprint/quote-983cfcbeae6039c8/lib-quote-983cfcbeae6039c8.json
new file mode 100644
index 0000000..8388583
--- /dev/null
+++ b/target/debug/.fingerprint/quote-983cfcbeae6039c8/lib-quote-983cfcbeae6039c8.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":8300869393882234535,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.15"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rand-76456d761c2cb637/dep-lib-rand-76456d761c2cb637 b/target/debug/.fingerprint/rand-76456d761c2cb637/dep-lib-rand-76456d761c2cb637
new file mode 100644
index 0000000..1a92312
Binary files /dev/null and b/target/debug/.fingerprint/rand-76456d761c2cb637/dep-lib-rand-76456d761c2cb637 differ
diff --git a/target/debug/.fingerprint/rand-76456d761c2cb637/lib-rand-76456d761c2cb637 b/target/debug/.fingerprint/rand-76456d761c2cb637/lib-rand-76456d761c2cb637
new file mode 100644
index 0000000..d0f9788
--- /dev/null
+++ b/target/debug/.fingerprint/rand-76456d761c2cb637/lib-rand-76456d761c2cb637
@@ -0,0 +1 @@
+af01547fbaa62ddf
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rand-76456d761c2cb637/lib-rand-76456d761c2cb637.json b/target/debug/.fingerprint/rand-76456d761c2cb637/lib-rand-76456d761c2cb637.json
new file mode 100644
index 0000000..3f2fd84
--- /dev/null
+++ b/target/debug/.fingerprint/rand-76456d761c2cb637/lib-rand-76456d761c2cb637.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":12147891001221168586,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972]],"local":{"Precalculated":"0.3.15"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/regex-f57600d45f59abf1/dep-lib-regex-f57600d45f59abf1 b/target/debug/.fingerprint/regex-f57600d45f59abf1/dep-lib-regex-f57600d45f59abf1
new file mode 100644
index 0000000..c28bdf7
Binary files /dev/null and b/target/debug/.fingerprint/regex-f57600d45f59abf1/dep-lib-regex-f57600d45f59abf1 differ
diff --git a/target/debug/.fingerprint/regex-f57600d45f59abf1/lib-regex-f57600d45f59abf1 b/target/debug/.fingerprint/regex-f57600d45f59abf1/lib-regex-f57600d45f59abf1
new file mode 100644
index 0000000..4b8ecfc
--- /dev/null
+++ b/target/debug/.fingerprint/regex-f57600d45f59abf1/lib-regex-f57600d45f59abf1
@@ -0,0 +1 @@
+fd4b5600229d6d74
\ No newline at end of file
diff --git a/target/debug/.fingerprint/regex-f57600d45f59abf1/lib-regex-f57600d45f59abf1.json b/target/debug/.fingerprint/regex-f57600d45f59abf1/lib-regex-f57600d45f59abf1.json
new file mode 100644
index 0000000..8e7952e
--- /dev/null
+++ b/target/debug/.fingerprint/regex-f57600d45f59abf1/lib-regex-f57600d45f59abf1.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":15844854968491279386,"profile":731176819336294830,"deps":[["aho-corasick v0.6.3",1934863999152177359],["memchr v1.0.1",5323102011590010693],["regex-syntax v0.4.1",8010895775630879195],["thread_local v0.3.3",3626217053597748979],["utf8-ranges v1.0.0",12381605470704503272]],"local":{"Precalculated":"0.2.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/dep-lib-regex_syntax-0240ebb185fe3635 b/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/dep-lib-regex_syntax-0240ebb185fe3635
new file mode 100644
index 0000000..5640a48
Binary files /dev/null and b/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/dep-lib-regex_syntax-0240ebb185fe3635 differ
diff --git a/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/lib-regex_syntax-0240ebb185fe3635 b/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/lib-regex_syntax-0240ebb185fe3635
new file mode 100644
index 0000000..9fc740c
--- /dev/null
+++ b/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/lib-regex_syntax-0240ebb185fe3635
@@ -0,0 +1 @@
+dbe927af436b2c6f
\ No newline at end of file
diff --git a/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/lib-regex_syntax-0240ebb185fe3635.json b/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/lib-regex_syntax-0240ebb185fe3635.json
new file mode 100644
index 0000000..5b6d2f3
--- /dev/null
+++ b/target/debug/.fingerprint/regex-syntax-0240ebb185fe3635/lib-regex_syntax-0240ebb185fe3635.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":2506711860426494911,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.4.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/reqwest-11a02eea9b02f172/dep-lib-reqwest-11a02eea9b02f172 b/target/debug/.fingerprint/reqwest-11a02eea9b02f172/dep-lib-reqwest-11a02eea9b02f172
new file mode 100644
index 0000000..e64d409
Binary files /dev/null and b/target/debug/.fingerprint/reqwest-11a02eea9b02f172/dep-lib-reqwest-11a02eea9b02f172 differ
diff --git a/target/debug/.fingerprint/reqwest-11a02eea9b02f172/lib-reqwest-11a02eea9b02f172 b/target/debug/.fingerprint/reqwest-11a02eea9b02f172/lib-reqwest-11a02eea9b02f172
new file mode 100644
index 0000000..a2d1dcc
--- /dev/null
+++ b/target/debug/.fingerprint/reqwest-11a02eea9b02f172/lib-reqwest-11a02eea9b02f172
@@ -0,0 +1 @@
+70bc83faaa34e2f2
\ No newline at end of file
diff --git a/target/debug/.fingerprint/reqwest-11a02eea9b02f172/lib-reqwest-11a02eea9b02f172.json b/target/debug/.fingerprint/reqwest-11a02eea9b02f172/lib-reqwest-11a02eea9b02f172.json
new file mode 100644
index 0000000..e1f4d97
--- /dev/null
+++ b/target/debug/.fingerprint/reqwest-11a02eea9b02f172/lib-reqwest-11a02eea9b02f172.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":389612872433501346,"profile":731176819336294830,"deps":[["hyper v0.10.12",13581212682540706791],["hyper-native-tls v0.2.4",14276711492238121368],["libflate v0.1.7",12368101825141875424],["log v0.3.8",17599510212006507007],["serde v1.0.8",9356783860267739482],["serde_json v1.0.2",2330536454262081947],["serde_urlencoded v0.5.1",6310224703874964467],["url v1.5.0",7798745668439162701]],"local":{"Precalculated":"0.6.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/dep-lib-crypto-21fa3687288afd3d b/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/dep-lib-crypto-21fa3687288afd3d
new file mode 100644
index 0000000..e91df50
Binary files /dev/null and b/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/dep-lib-crypto-21fa3687288afd3d differ
diff --git a/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/lib-crypto-21fa3687288afd3d b/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/lib-crypto-21fa3687288afd3d
new file mode 100644
index 0000000..623315d
--- /dev/null
+++ b/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/lib-crypto-21fa3687288afd3d
@@ -0,0 +1 @@
+ae5227ecfafba470
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/lib-crypto-21fa3687288afd3d.json b/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/lib-crypto-21fa3687288afd3d.json
new file mode 100644
index 0000000..ca80f1b
--- /dev/null
+++ b/target/debug/.fingerprint/rust-crypto-21fa3687288afd3d/lib-crypto-21fa3687288afd3d.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":1914593105506634363,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972],["rand v0.3.15",16081693164340249007],["rustc-serialize v0.3.24",15751235613328585593],["time v0.1.37",8159324894692769326]],"local":{"Precalculated":"0.2.36"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-crypto-be7776070793c706/build b/target/debug/.fingerprint/rust-crypto-be7776070793c706/build
new file mode 100644
index 0000000..10863cf
--- /dev/null
+++ b/target/debug/.fingerprint/rust-crypto-be7776070793c706/build
@@ -0,0 +1 @@
+cc579417b2ad8b93
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-crypto-be7776070793c706/build.json b/target/debug/.fingerprint/rust-crypto-be7776070793c706/build.json
new file mode 100644
index 0000000..5ce5079
--- /dev/null
+++ b/target/debug/.fingerprint/rust-crypto-be7776070793c706/build.json
@@ -0,0 +1 @@
+{"rustc":0,"features":"","target":0,"profile":0,"deps":[],"local":{"Precalculated":"0.2.36"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/build-script-build_script_build-e8cd12c890982034 b/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/build-script-build_script_build-e8cd12c890982034
new file mode 100644
index 0000000..9cceb49
--- /dev/null
+++ b/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/build-script-build_script_build-e8cd12c890982034
@@ -0,0 +1 @@
+5ebd4ada15c09410
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/build-script-build_script_build-e8cd12c890982034.json b/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/build-script-build_script_build-e8cd12c890982034.json
new file mode 100644
index 0000000..415ebb0
--- /dev/null
+++ b/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/build-script-build_script_build-e8cd12c890982034.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":15113839937813070906,"profile":731176819336294830,"deps":[["gcc v0.3.51",10654552508874704947]],"local":{"Precalculated":"0.2.36"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/dep-build-script-build_script_build-e8cd12c890982034 b/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/dep-build-script-build_script_build-e8cd12c890982034
new file mode 100644
index 0000000..d84f774
Binary files /dev/null and b/target/debug/.fingerprint/rust-crypto-e8cd12c890982034/dep-build-script-build_script_build-e8cd12c890982034 differ
diff --git a/target/debug/.fingerprint/rust-scrypt-21c2ff1246aca702/build b/target/debug/.fingerprint/rust-scrypt-21c2ff1246aca702/build
new file mode 100644
index 0000000..b9fcc11
--- /dev/null
+++ b/target/debug/.fingerprint/rust-scrypt-21c2ff1246aca702/build
@@ -0,0 +1 @@
+d024e8538c74698c
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-scrypt-21c2ff1246aca702/build.json b/target/debug/.fingerprint/rust-scrypt-21c2ff1246aca702/build.json
new file mode 100644
index 0000000..3fbba92
--- /dev/null
+++ b/target/debug/.fingerprint/rust-scrypt-21c2ff1246aca702/build.json
@@ -0,0 +1 @@
+{"rustc":0,"features":"","target":0,"profile":0,"deps":[],"local":{"Precalculated":"1497858356.957607597s (/home/k2/Workshop/rust-scrypt/build.rs)"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/dep-lib-rust_scrypt-99699b3fb55ece14 b/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/dep-lib-rust_scrypt-99699b3fb55ece14
new file mode 100644
index 0000000..2e0618a
Binary files /dev/null and b/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/dep-lib-rust_scrypt-99699b3fb55ece14 differ
diff --git a/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/lib-rust_scrypt-99699b3fb55ece14 b/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/lib-rust_scrypt-99699b3fb55ece14
new file mode 100644
index 0000000..ed4ac8e
--- /dev/null
+++ b/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/lib-rust_scrypt-99699b3fb55ece14
@@ -0,0 +1 @@
+014e949547e4b567
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/lib-rust_scrypt-99699b3fb55ece14.json b/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/lib-rust_scrypt-99699b3fb55ece14.json
new file mode 100644
index 0000000..280bff6
--- /dev/null
+++ b/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/lib-rust_scrypt-99699b3fb55ece14.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":8294905096428014227,"profile":731176819336294830,"deps":[["emerald-core v0.1.0 (https://github.com/r8d8/emerald-rs.git?branch=feature/mod#06689bda)",16280892124782744262]],"local":{"MtimeBased":[[1497858358,927658937],"/home/k2/Workshop/rust-scrypt/target/debug/.fingerprint/rust-scrypt-99699b3fb55ece14/dep-lib-rust_scrypt-99699b3fb55ece14"]},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/build-script-build_script_build-ef0c156ddd3c911b b/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/build-script-build_script_build-ef0c156ddd3c911b
new file mode 100644
index 0000000..0dc9fb8
--- /dev/null
+++ b/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/build-script-build_script_build-ef0c156ddd3c911b
@@ -0,0 +1 @@
+671fb34570dca6b6
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/build-script-build_script_build-ef0c156ddd3c911b.json b/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/build-script-build_script_build-ef0c156ddd3c911b.json
new file mode 100644
index 0000000..e109c0b
--- /dev/null
+++ b/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/build-script-build_script_build-ef0c156ddd3c911b.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":9607628333201573189,"profile":731176819336294830,"deps":[["gcc v0.3.51",10654552508874704947]],"local":{"MtimeBased":[[1497858358,357644082],"/home/k2/Workshop/rust-scrypt/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/dep-build-script-build_script_build-ef0c156ddd3c911b"]},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/dep-build-script-build_script_build-ef0c156ddd3c911b b/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/dep-build-script-build_script_build-ef0c156ddd3c911b
new file mode 100644
index 0000000..1edcd21
Binary files /dev/null and b/target/debug/.fingerprint/rust-scrypt-ef0c156ddd3c911b/dep-build-script-build_script_build-ef0c156ddd3c911b differ
diff --git a/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/dep-lib-rustc_serialize-d05828e9f8a2cc23 b/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/dep-lib-rustc_serialize-d05828e9f8a2cc23
new file mode 100644
index 0000000..cc53e35
Binary files /dev/null and b/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/dep-lib-rustc_serialize-d05828e9f8a2cc23 differ
diff --git a/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/lib-rustc_serialize-d05828e9f8a2cc23 b/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/lib-rustc_serialize-d05828e9f8a2cc23
new file mode 100644
index 0000000..d0eabd8
--- /dev/null
+++ b/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/lib-rustc_serialize-d05828e9f8a2cc23
@@ -0,0 +1 @@
+79b3ee3156a197da
\ No newline at end of file
diff --git a/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/lib-rustc_serialize-d05828e9f8a2cc23.json b/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/lib-rustc_serialize-d05828e9f8a2cc23.json
new file mode 100644
index 0000000..fe41f99
--- /dev/null
+++ b/target/debug/.fingerprint/rustc-serialize-d05828e9f8a2cc23/lib-rustc_serialize-d05828e9f8a2cc23.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":1603481800596417829,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.24"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/dep-lib-scoped_tls-74736eecfdde68b3 b/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/dep-lib-scoped_tls-74736eecfdde68b3
new file mode 100644
index 0000000..a83172f
Binary files /dev/null and b/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/dep-lib-scoped_tls-74736eecfdde68b3 differ
diff --git a/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/lib-scoped_tls-74736eecfdde68b3 b/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/lib-scoped_tls-74736eecfdde68b3
new file mode 100644
index 0000000..c8b68e0
--- /dev/null
+++ b/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/lib-scoped_tls-74736eecfdde68b3
@@ -0,0 +1 @@
+a40649430ac6ab4d
\ No newline at end of file
diff --git a/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/lib-scoped_tls-74736eecfdde68b3.json b/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/lib-scoped_tls-74736eecfdde68b3.json
new file mode 100644
index 0000000..077eba8
--- /dev/null
+++ b/target/debug/.fingerprint/scoped-tls-74736eecfdde68b3/lib-scoped_tls-74736eecfdde68b3.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":2635478420362389277,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/secp256k1-1f8bc2e95f0363a5/build b/target/debug/.fingerprint/secp256k1-1f8bc2e95f0363a5/build
new file mode 100644
index 0000000..8fbe0b3
--- /dev/null
+++ b/target/debug/.fingerprint/secp256k1-1f8bc2e95f0363a5/build
@@ -0,0 +1 @@
+fd2c321c0d441c1a
\ No newline at end of file
diff --git a/target/debug/.fingerprint/secp256k1-1f8bc2e95f0363a5/build.json b/target/debug/.fingerprint/secp256k1-1f8bc2e95f0363a5/build.json
new file mode 100644
index 0000000..5d6c6fc
--- /dev/null
+++ b/target/debug/.fingerprint/secp256k1-1f8bc2e95f0363a5/build.json
@@ -0,0 +1 @@
+{"rustc":0,"features":"","target":0,"profile":0,"deps":[],"local":{"Precalculated":"0.6.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/secp256k1-7b558304ea490265/build-script-build_script_build-7b558304ea490265 b/target/debug/.fingerprint/secp256k1-7b558304ea490265/build-script-build_script_build-7b558304ea490265
new file mode 100644
index 0000000..4ea8c00
--- /dev/null
+++ b/target/debug/.fingerprint/secp256k1-7b558304ea490265/build-script-build_script_build-7b558304ea490265
@@ -0,0 +1 @@
+b135cec13147cb2b
\ No newline at end of file
diff --git a/target/debug/.fingerprint/secp256k1-7b558304ea490265/build-script-build_script_build-7b558304ea490265.json b/target/debug/.fingerprint/secp256k1-7b558304ea490265/build-script-build_script_build-7b558304ea490265.json
new file mode 100644
index 0000000..268e217
--- /dev/null
+++ b/target/debug/.fingerprint/secp256k1-7b558304ea490265/build-script-build_script_build-7b558304ea490265.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\"]","target":297086952063623426,"profile":731176819336294830,"deps":[["gcc v0.3.51",10654552508874704947]],"local":{"Precalculated":"0.6.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/secp256k1-7b558304ea490265/dep-build-script-build_script_build-7b558304ea490265 b/target/debug/.fingerprint/secp256k1-7b558304ea490265/dep-build-script-build_script_build-7b558304ea490265
new file mode 100644
index 0000000..c63efc3
Binary files /dev/null and b/target/debug/.fingerprint/secp256k1-7b558304ea490265/dep-build-script-build_script_build-7b558304ea490265 differ
diff --git a/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/dep-lib-secp256k1-f043f04c53f9ffbd b/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/dep-lib-secp256k1-f043f04c53f9ffbd
new file mode 100644
index 0000000..e83552b
Binary files /dev/null and b/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/dep-lib-secp256k1-f043f04c53f9ffbd differ
diff --git a/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/lib-secp256k1-f043f04c53f9ffbd b/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/lib-secp256k1-f043f04c53f9ffbd
new file mode 100644
index 0000000..a1f6b00
--- /dev/null
+++ b/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/lib-secp256k1-f043f04c53f9ffbd
@@ -0,0 +1 @@
+f76c0470ca1002d1
\ No newline at end of file
diff --git a/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/lib-secp256k1-f043f04c53f9ffbd.json b/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/lib-secp256k1-f043f04c53f9ffbd.json
new file mode 100644
index 0000000..5299661
--- /dev/null
+++ b/target/debug/.fingerprint/secp256k1-f043f04c53f9ffbd/lib-secp256k1-f043f04c53f9ffbd.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\"]","target":18014174720086468358,"profile":731176819336294830,"deps":[["arrayvec v0.3.23",10731972551750179592],["libc v0.2.24",10078982374834306972],["rand v0.3.15",16081693164340249007],["rustc-serialize v0.3.24",15751235613328585593],["serde v0.6.15",14058666671286581292],["serde_json v0.6.1",16615827860241874834]],"local":{"Precalculated":"0.6.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde-78efb8229e554e58/dep-lib-serde-78efb8229e554e58 b/target/debug/.fingerprint/serde-78efb8229e554e58/dep-lib-serde-78efb8229e554e58
new file mode 100644
index 0000000..52fa03e
Binary files /dev/null and b/target/debug/.fingerprint/serde-78efb8229e554e58/dep-lib-serde-78efb8229e554e58 differ
diff --git a/target/debug/.fingerprint/serde-78efb8229e554e58/lib-serde-78efb8229e554e58 b/target/debug/.fingerprint/serde-78efb8229e554e58/lib-serde-78efb8229e554e58
new file mode 100644
index 0000000..a3d2dd2
--- /dev/null
+++ b/target/debug/.fingerprint/serde-78efb8229e554e58/lib-serde-78efb8229e554e58
@@ -0,0 +1 @@
+5ae95db758f9d981
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde-78efb8229e554e58/lib-serde-78efb8229e554e58.json b/target/debug/.fingerprint/serde-78efb8229e554e58/lib-serde-78efb8229e554e58.json
new file mode 100644
index 0000000..ae59b5f
--- /dev/null
+++ b/target/debug/.fingerprint/serde-78efb8229e554e58/lib-serde-78efb8229e554e58.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"std\"]","target":7326647034533915366,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.0.8"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde-eaf5b137e24884e3/dep-lib-serde-eaf5b137e24884e3 b/target/debug/.fingerprint/serde-eaf5b137e24884e3/dep-lib-serde-eaf5b137e24884e3
new file mode 100644
index 0000000..ab4ef5f
Binary files /dev/null and b/target/debug/.fingerprint/serde-eaf5b137e24884e3/dep-lib-serde-eaf5b137e24884e3 differ
diff --git a/target/debug/.fingerprint/serde-eaf5b137e24884e3/lib-serde-eaf5b137e24884e3 b/target/debug/.fingerprint/serde-eaf5b137e24884e3/lib-serde-eaf5b137e24884e3
new file mode 100644
index 0000000..c18c295
--- /dev/null
+++ b/target/debug/.fingerprint/serde-eaf5b137e24884e3/lib-serde-eaf5b137e24884e3
@@ -0,0 +1 @@
+2cf8a8fdd96a1ac3
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde-eaf5b137e24884e3/lib-serde-eaf5b137e24884e3.json b/target/debug/.fingerprint/serde-eaf5b137e24884e3/lib-serde-eaf5b137e24884e3.json
new file mode 100644
index 0000000..2fc9684
--- /dev/null
+++ b/target/debug/.fingerprint/serde-eaf5b137e24884e3/lib-serde-eaf5b137e24884e3.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":2038804536408622796,"profile":731176819336294830,"deps":[["num v0.1.39",13112327125317595422]],"local":{"Precalculated":"0.6.15"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/dep-lib-serde_derive-73114808ba8f6d5d b/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/dep-lib-serde_derive-73114808ba8f6d5d
new file mode 100644
index 0000000..7ae35b1
Binary files /dev/null and b/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/dep-lib-serde_derive-73114808ba8f6d5d differ
diff --git a/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/lib-serde_derive-73114808ba8f6d5d b/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/lib-serde_derive-73114808ba8f6d5d
new file mode 100644
index 0000000..057ba98
--- /dev/null
+++ b/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/lib-serde_derive-73114808ba8f6d5d
@@ -0,0 +1 @@
+bef81da175d9bc4e
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/lib-serde_derive-73114808ba8f6d5d.json b/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/lib-serde_derive-73114808ba8f6d5d.json
new file mode 100644
index 0000000..cbdd831
--- /dev/null
+++ b/target/debug/.fingerprint/serde_derive-73114808ba8f6d5d/lib-serde_derive-73114808ba8f6d5d.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":17419881691195286642,"profile":731176819336294830,"deps":[["quote v0.3.15",10624004520027993187],["serde_derive_internals v0.15.1",3486147714663591193],["syn v0.11.11",16710770523448156879]],"local":{"Precalculated":"1.0.8"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/dep-lib-serde_derive_internals-c02f12ad40a271f5 b/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/dep-lib-serde_derive_internals-c02f12ad40a271f5
new file mode 100644
index 0000000..2e5e93d
Binary files /dev/null and b/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/dep-lib-serde_derive_internals-c02f12ad40a271f5 differ
diff --git a/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/lib-serde_derive_internals-c02f12ad40a271f5 b/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/lib-serde_derive_internals-c02f12ad40a271f5
new file mode 100644
index 0000000..ca22d73
--- /dev/null
+++ b/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/lib-serde_derive_internals-c02f12ad40a271f5
@@ -0,0 +1 @@
+192d1047e0486130
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/lib-serde_derive_internals-c02f12ad40a271f5.json b/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/lib-serde_derive_internals-c02f12ad40a271f5.json
new file mode 100644
index 0000000..51ae663
--- /dev/null
+++ b/target/debug/.fingerprint/serde_derive_internals-c02f12ad40a271f5/lib-serde_derive_internals-c02f12ad40a271f5.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":744881577124105200,"profile":731176819336294830,"deps":[["syn v0.11.11",16710770523448156879],["synom v0.11.3",8523060652696035700]],"local":{"Precalculated":"0.15.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_json-792616b63a660205/dep-lib-serde_json-792616b63a660205 b/target/debug/.fingerprint/serde_json-792616b63a660205/dep-lib-serde_json-792616b63a660205
new file mode 100644
index 0000000..80bade0
Binary files /dev/null and b/target/debug/.fingerprint/serde_json-792616b63a660205/dep-lib-serde_json-792616b63a660205 differ
diff --git a/target/debug/.fingerprint/serde_json-792616b63a660205/lib-serde_json-792616b63a660205 b/target/debug/.fingerprint/serde_json-792616b63a660205/lib-serde_json-792616b63a660205
new file mode 100644
index 0000000..c4e46a4
--- /dev/null
+++ b/target/debug/.fingerprint/serde_json-792616b63a660205/lib-serde_json-792616b63a660205
@@ -0,0 +1 @@
+9bc963b48eba5720
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_json-792616b63a660205/lib-serde_json-792616b63a660205.json b/target/debug/.fingerprint/serde_json-792616b63a660205/lib-serde_json-792616b63a660205.json
new file mode 100644
index 0000000..80246f2
--- /dev/null
+++ b/target/debug/.fingerprint/serde_json-792616b63a660205/lib-serde_json-792616b63a660205.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\"]","target":14825954412122985509,"profile":731176819336294830,"deps":[["dtoa v0.4.1",9666088989146019720],["itoa v0.3.1",5808162144182488237],["num-traits v0.1.39",2640625177936125622],["serde v1.0.8",9356783860267739482]],"local":{"Precalculated":"1.0.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/dep-lib-serde_json-8f3b4548b9ceb727 b/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/dep-lib-serde_json-8f3b4548b9ceb727
new file mode 100644
index 0000000..023fac7
Binary files /dev/null and b/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/dep-lib-serde_json-8f3b4548b9ceb727 differ
diff --git a/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/lib-serde_json-8f3b4548b9ceb727 b/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/lib-serde_json-8f3b4548b9ceb727
new file mode 100644
index 0000000..23ce1e6
--- /dev/null
+++ b/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/lib-serde_json-8f3b4548b9ceb727
@@ -0,0 +1 @@
+927fc18a674797e6
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/lib-serde_json-8f3b4548b9ceb727.json b/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/lib-serde_json-8f3b4548b9ceb727.json
new file mode 100644
index 0000000..0b3d9db
--- /dev/null
+++ b/target/debug/.fingerprint/serde_json-8f3b4548b9ceb727/lib-serde_json-8f3b4548b9ceb727.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":3384747626293763448,"profile":731176819336294830,"deps":[["num v0.1.39",13112327125317595422],["serde v0.6.15",14058666671286581292]],"local":{"Precalculated":"0.6.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/dep-lib-serde_urlencoded-387f5478e4c38fd5 b/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/dep-lib-serde_urlencoded-387f5478e4c38fd5
new file mode 100644
index 0000000..f1b51e2
Binary files /dev/null and b/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/dep-lib-serde_urlencoded-387f5478e4c38fd5 differ
diff --git a/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/lib-serde_urlencoded-387f5478e4c38fd5 b/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/lib-serde_urlencoded-387f5478e4c38fd5
new file mode 100644
index 0000000..e3df9d2
--- /dev/null
+++ b/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/lib-serde_urlencoded-387f5478e4c38fd5
@@ -0,0 +1 @@
+f39b5c67ef6b9257
\ No newline at end of file
diff --git a/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/lib-serde_urlencoded-387f5478e4c38fd5.json b/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/lib-serde_urlencoded-387f5478e4c38fd5.json
new file mode 100644
index 0000000..79026b3
--- /dev/null
+++ b/target/debug/.fingerprint/serde_urlencoded-387f5478e4c38fd5/lib-serde_urlencoded-387f5478e4c38fd5.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":18427554578995512825,"profile":731176819336294830,"deps":[["dtoa v0.4.1",9666088989146019720],["itoa v0.3.1",5808162144182488237],["serde v1.0.8",9356783860267739482],["url v1.5.0",7798745668439162701]],"local":{"Precalculated":"0.5.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/slab-18a7cdae03894a24/dep-lib-slab-18a7cdae03894a24 b/target/debug/.fingerprint/slab-18a7cdae03894a24/dep-lib-slab-18a7cdae03894a24
new file mode 100644
index 0000000..d12a25f
Binary files /dev/null and b/target/debug/.fingerprint/slab-18a7cdae03894a24/dep-lib-slab-18a7cdae03894a24 differ
diff --git a/target/debug/.fingerprint/slab-18a7cdae03894a24/lib-slab-18a7cdae03894a24 b/target/debug/.fingerprint/slab-18a7cdae03894a24/lib-slab-18a7cdae03894a24
new file mode 100644
index 0000000..66bef1a
--- /dev/null
+++ b/target/debug/.fingerprint/slab-18a7cdae03894a24/lib-slab-18a7cdae03894a24
@@ -0,0 +1 @@
+c04ffb83a0164e2c
\ No newline at end of file
diff --git a/target/debug/.fingerprint/slab-18a7cdae03894a24/lib-slab-18a7cdae03894a24.json b/target/debug/.fingerprint/slab-18a7cdae03894a24/lib-slab-18a7cdae03894a24.json
new file mode 100644
index 0000000..d277544
--- /dev/null
+++ b/target/debug/.fingerprint/slab-18a7cdae03894a24/lib-slab-18a7cdae03894a24.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":2856400005330550751,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.3.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/smallvec-6d84811bc65077ef/dep-lib-smallvec-6d84811bc65077ef b/target/debug/.fingerprint/smallvec-6d84811bc65077ef/dep-lib-smallvec-6d84811bc65077ef
new file mode 100644
index 0000000..f885973
Binary files /dev/null and b/target/debug/.fingerprint/smallvec-6d84811bc65077ef/dep-lib-smallvec-6d84811bc65077ef differ
diff --git a/target/debug/.fingerprint/smallvec-6d84811bc65077ef/lib-smallvec-6d84811bc65077ef b/target/debug/.fingerprint/smallvec-6d84811bc65077ef/lib-smallvec-6d84811bc65077ef
new file mode 100644
index 0000000..aba3ed1
--- /dev/null
+++ b/target/debug/.fingerprint/smallvec-6d84811bc65077ef/lib-smallvec-6d84811bc65077ef
@@ -0,0 +1 @@
+c7d278ca67482b43
\ No newline at end of file
diff --git a/target/debug/.fingerprint/smallvec-6d84811bc65077ef/lib-smallvec-6d84811bc65077ef.json b/target/debug/.fingerprint/smallvec-6d84811bc65077ef/lib-smallvec-6d84811bc65077ef.json
new file mode 100644
index 0000000..9d2cd99
--- /dev/null
+++ b/target/debug/.fingerprint/smallvec-6d84811bc65077ef/lib-smallvec-6d84811bc65077ef.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":11320697096445058294,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.2.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/dep-lib-smallvec-6de0ad286fc318bd b/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/dep-lib-smallvec-6de0ad286fc318bd
new file mode 100644
index 0000000..1e2adde
Binary files /dev/null and b/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/dep-lib-smallvec-6de0ad286fc318bd differ
diff --git a/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/lib-smallvec-6de0ad286fc318bd b/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/lib-smallvec-6de0ad286fc318bd
new file mode 100644
index 0000000..6b8cebd
--- /dev/null
+++ b/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/lib-smallvec-6de0ad286fc318bd
@@ -0,0 +1 @@
+6e913de54d1cc83e
\ No newline at end of file
diff --git a/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/lib-smallvec-6de0ad286fc318bd.json b/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/lib-smallvec-6de0ad286fc318bd.json
new file mode 100644
index 0000000..ab39450
--- /dev/null
+++ b/target/debug/.fingerprint/smallvec-6de0ad286fc318bd/lib-smallvec-6de0ad286fc318bd.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":8557617421465278131,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.4.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/dep-lib-stable_deref_trait-5e21575791d0acc6 b/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/dep-lib-stable_deref_trait-5e21575791d0acc6
new file mode 100644
index 0000000..e16b31d
Binary files /dev/null and b/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/dep-lib-stable_deref_trait-5e21575791d0acc6 differ
diff --git a/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/lib-stable_deref_trait-5e21575791d0acc6 b/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/lib-stable_deref_trait-5e21575791d0acc6
new file mode 100644
index 0000000..05dd413
--- /dev/null
+++ b/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/lib-stable_deref_trait-5e21575791d0acc6
@@ -0,0 +1 @@
+1856b52380961267
\ No newline at end of file
diff --git a/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/lib-stable_deref_trait-5e21575791d0acc6.json b/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/lib-stable_deref_trait-5e21575791d0acc6.json
new file mode 100644
index 0000000..7fac482
--- /dev/null
+++ b/target/debug/.fingerprint/stable_deref_trait-5e21575791d0acc6/lib-stable_deref_trait-5e21575791d0acc6.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"std\"]","target":7824694040532364530,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.0.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/syn-b177bd5a479c7be8/dep-lib-syn-b177bd5a479c7be8 b/target/debug/.fingerprint/syn-b177bd5a479c7be8/dep-lib-syn-b177bd5a479c7be8
new file mode 100644
index 0000000..bd185e9
Binary files /dev/null and b/target/debug/.fingerprint/syn-b177bd5a479c7be8/dep-lib-syn-b177bd5a479c7be8 differ
diff --git a/target/debug/.fingerprint/syn-b177bd5a479c7be8/lib-syn-b177bd5a479c7be8 b/target/debug/.fingerprint/syn-b177bd5a479c7be8/lib-syn-b177bd5a479c7be8
new file mode 100644
index 0000000..3e5776b
--- /dev/null
+++ b/target/debug/.fingerprint/syn-b177bd5a479c7be8/lib-syn-b177bd5a479c7be8
@@ -0,0 +1 @@
+cf2232ed4095e8e7
\ No newline at end of file
diff --git a/target/debug/.fingerprint/syn-b177bd5a479c7be8/lib-syn-b177bd5a479c7be8.json b/target/debug/.fingerprint/syn-b177bd5a479c7be8/lib-syn-b177bd5a479c7be8.json
new file mode 100644
index 0000000..52778ae
--- /dev/null
+++ b/target/debug/.fingerprint/syn-b177bd5a479c7be8/lib-syn-b177bd5a479c7be8.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\", \"parsing\", \"printing\", \"quote\", \"synom\", \"unicode-xid\", \"visit\"]","target":3712886707844616038,"profile":731176819336294830,"deps":[["quote v0.3.15",10624004520027993187],["synom v0.11.3",8523060652696035700],["unicode-xid v0.0.4",10103241913942930413]],"local":{"Precalculated":"0.11.11"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/synom-538247bd997586d9/dep-lib-synom-538247bd997586d9 b/target/debug/.fingerprint/synom-538247bd997586d9/dep-lib-synom-538247bd997586d9
new file mode 100644
index 0000000..d0411a7
Binary files /dev/null and b/target/debug/.fingerprint/synom-538247bd997586d9/dep-lib-synom-538247bd997586d9 differ
diff --git a/target/debug/.fingerprint/synom-538247bd997586d9/lib-synom-538247bd997586d9 b/target/debug/.fingerprint/synom-538247bd997586d9/lib-synom-538247bd997586d9
new file mode 100644
index 0000000..124f4d2
--- /dev/null
+++ b/target/debug/.fingerprint/synom-538247bd997586d9/lib-synom-538247bd997586d9
@@ -0,0 +1 @@
+74610eab81fe4776
\ No newline at end of file
diff --git a/target/debug/.fingerprint/synom-538247bd997586d9/lib-synom-538247bd997586d9.json b/target/debug/.fingerprint/synom-538247bd997586d9/lib-synom-538247bd997586d9.json
new file mode 100644
index 0000000..d6a69bc
--- /dev/null
+++ b/target/debug/.fingerprint/synom-538247bd997586d9/lib-synom-538247bd997586d9.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":11651949710548967719,"profile":731176819336294830,"deps":[["unicode-xid v0.0.4",10103241913942930413]],"local":{"Precalculated":"0.11.3"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/take-8fc720ef0ff02095/dep-lib-take-8fc720ef0ff02095 b/target/debug/.fingerprint/take-8fc720ef0ff02095/dep-lib-take-8fc720ef0ff02095
new file mode 100644
index 0000000..f5b4616
Binary files /dev/null and b/target/debug/.fingerprint/take-8fc720ef0ff02095/dep-lib-take-8fc720ef0ff02095 differ
diff --git a/target/debug/.fingerprint/take-8fc720ef0ff02095/lib-take-8fc720ef0ff02095 b/target/debug/.fingerprint/take-8fc720ef0ff02095/lib-take-8fc720ef0ff02095
new file mode 100644
index 0000000..27bb88d
--- /dev/null
+++ b/target/debug/.fingerprint/take-8fc720ef0ff02095/lib-take-8fc720ef0ff02095
@@ -0,0 +1 @@
+2674d95b555dbd2c
\ No newline at end of file
diff --git a/target/debug/.fingerprint/take-8fc720ef0ff02095/lib-take-8fc720ef0ff02095.json b/target/debug/.fingerprint/take-8fc720ef0ff02095/lib-take-8fc720ef0ff02095.json
new file mode 100644
index 0000000..38ff126
--- /dev/null
+++ b/target/debug/.fingerprint/take-8fc720ef0ff02095/lib-take-8fc720ef0ff02095.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":613603282804745919,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/dep-lib-thread_id-9aba8731d7b3c119 b/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/dep-lib-thread_id-9aba8731d7b3c119
new file mode 100644
index 0000000..505461b
Binary files /dev/null and b/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/dep-lib-thread_id-9aba8731d7b3c119 differ
diff --git a/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/lib-thread_id-9aba8731d7b3c119 b/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/lib-thread_id-9aba8731d7b3c119
new file mode 100644
index 0000000..5900994
--- /dev/null
+++ b/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/lib-thread_id-9aba8731d7b3c119
@@ -0,0 +1 @@
+4736c388a8dbe9a5
\ No newline at end of file
diff --git a/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/lib-thread_id-9aba8731d7b3c119.json b/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/lib-thread_id-9aba8731d7b3c119.json
new file mode 100644
index 0000000..a91729d
--- /dev/null
+++ b/target/debug/.fingerprint/thread-id-9aba8731d7b3c119/lib-thread_id-9aba8731d7b3c119.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":652161326151393862,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972]],"local":{"Precalculated":"3.1.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/thread_local-273e90e65080c55f/dep-lib-thread_local-273e90e65080c55f b/target/debug/.fingerprint/thread_local-273e90e65080c55f/dep-lib-thread_local-273e90e65080c55f
new file mode 100644
index 0000000..a820270
Binary files /dev/null and b/target/debug/.fingerprint/thread_local-273e90e65080c55f/dep-lib-thread_local-273e90e65080c55f differ
diff --git a/target/debug/.fingerprint/thread_local-273e90e65080c55f/lib-thread_local-273e90e65080c55f b/target/debug/.fingerprint/thread_local-273e90e65080c55f/lib-thread_local-273e90e65080c55f
new file mode 100644
index 0000000..b3eca9e
--- /dev/null
+++ b/target/debug/.fingerprint/thread_local-273e90e65080c55f/lib-thread_local-273e90e65080c55f
@@ -0,0 +1 @@
+f34e289e32e95232
\ No newline at end of file
diff --git a/target/debug/.fingerprint/thread_local-273e90e65080c55f/lib-thread_local-273e90e65080c55f.json b/target/debug/.fingerprint/thread_local-273e90e65080c55f/lib-thread_local-273e90e65080c55f.json
new file mode 100644
index 0000000..c32dcbd
--- /dev/null
+++ b/target/debug/.fingerprint/thread_local-273e90e65080c55f/lib-thread_local-273e90e65080c55f.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":16734085468574888341,"profile":731176819336294830,"deps":[["thread-id v3.1.0",11955328202727175751],["unreachable v0.1.1",14873179850055590252]],"local":{"Precalculated":"0.3.3"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/time-162277ce7a864579/dep-lib-time-162277ce7a864579 b/target/debug/.fingerprint/time-162277ce7a864579/dep-lib-time-162277ce7a864579
new file mode 100644
index 0000000..0d8e121
Binary files /dev/null and b/target/debug/.fingerprint/time-162277ce7a864579/dep-lib-time-162277ce7a864579 differ
diff --git a/target/debug/.fingerprint/time-162277ce7a864579/lib-time-162277ce7a864579 b/target/debug/.fingerprint/time-162277ce7a864579/lib-time-162277ce7a864579
new file mode 100644
index 0000000..7769d22
--- /dev/null
+++ b/target/debug/.fingerprint/time-162277ce7a864579/lib-time-162277ce7a864579
@@ -0,0 +1 @@
+2efe2903c3be3b71
\ No newline at end of file
diff --git a/target/debug/.fingerprint/time-162277ce7a864579/lib-time-162277ce7a864579.json b/target/debug/.fingerprint/time-162277ce7a864579/lib-time-162277ce7a864579.json
new file mode 100644
index 0000000..c1cbe63
--- /dev/null
+++ b/target/debug/.fingerprint/time-162277ce7a864579/lib-time-162277ce7a864579.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":192253583582660695,"profile":731176819336294830,"deps":[["libc v0.2.24",10078982374834306972]],"local":{"Precalculated":"0.1.37"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-core-a08697205148329f/dep-lib-tokio_core-a08697205148329f b/target/debug/.fingerprint/tokio-core-a08697205148329f/dep-lib-tokio_core-a08697205148329f
new file mode 100644
index 0000000..3877e88
Binary files /dev/null and b/target/debug/.fingerprint/tokio-core-a08697205148329f/dep-lib-tokio_core-a08697205148329f differ
diff --git a/target/debug/.fingerprint/tokio-core-a08697205148329f/lib-tokio_core-a08697205148329f b/target/debug/.fingerprint/tokio-core-a08697205148329f/lib-tokio_core-a08697205148329f
new file mode 100644
index 0000000..a599e10
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-core-a08697205148329f/lib-tokio_core-a08697205148329f
@@ -0,0 +1 @@
+6eb9fbf3157e603b
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-core-a08697205148329f/lib-tokio_core-a08697205148329f.json b/target/debug/.fingerprint/tokio-core-a08697205148329f/lib-tokio_core-a08697205148329f.json
new file mode 100644
index 0000000..2abe0a7
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-core-a08697205148329f/lib-tokio_core-a08697205148329f.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":3874676586191707404,"profile":731176819336294830,"deps":[["bytes v0.4.4",3931702829967939167],["futures v0.1.14",2278465165944931584],["iovec v0.1.0",6657207109698822992],["log v0.3.8",17599510212006507007],["mio v0.6.9",4317623692895838275],["scoped-tls v0.1.0",5596784709318805156],["slab v0.3.0",3192514064517124032],["tokio-io v0.1.2",8988051348640606788]],"local":{"Precalculated":"0.1.8"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/dep-lib-tokio_io-b05415e36730f2f0 b/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/dep-lib-tokio_io-b05415e36730f2f0
new file mode 100644
index 0000000..f18f018
Binary files /dev/null and b/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/dep-lib-tokio_io-b05415e36730f2f0 differ
diff --git a/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/lib-tokio_io-b05415e36730f2f0 b/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/lib-tokio_io-b05415e36730f2f0
new file mode 100644
index 0000000..71b4ae9
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/lib-tokio_io-b05415e36730f2f0
@@ -0,0 +1 @@
+44aab1b214f9bb7c
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/lib-tokio_io-b05415e36730f2f0.json b/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/lib-tokio_io-b05415e36730f2f0.json
new file mode 100644
index 0000000..f7c486a
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-io-b05415e36730f2f0/lib-tokio_io-b05415e36730f2f0.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":16075616486149797854,"profile":731176819336294830,"deps":[["bytes v0.4.4",3931702829967939167],["futures v0.1.14",2278465165944931584],["log v0.3.8",17599510212006507007]],"local":{"Precalculated":"0.1.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/dep-lib-tokio_minihttp-e409a401cf20ace6 b/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/dep-lib-tokio_minihttp-e409a401cf20ace6
new file mode 100644
index 0000000..33265e4
Binary files /dev/null and b/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/dep-lib-tokio_minihttp-e409a401cf20ace6 differ
diff --git a/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/lib-tokio_minihttp-e409a401cf20ace6 b/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/lib-tokio_minihttp-e409a401cf20ace6
new file mode 100644
index 0000000..ffbcf7e
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/lib-tokio_minihttp-e409a401cf20ace6
@@ -0,0 +1 @@
+27e8d8ce90e5f065
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/lib-tokio_minihttp-e409a401cf20ace6.json b/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/lib-tokio_minihttp-e409a401cf20ace6.json
new file mode 100644
index 0000000..890df53
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-minihttp-e409a401cf20ace6/lib-tokio_minihttp-e409a401cf20ace6.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":12268652811856077962,"profile":731176819336294830,"deps":[["futures v0.1.14",2278465165944931584],["httparse v1.2.3",12608268025510297469],["log v0.3.8",17599510212006507007],["net2 v0.2.29",16788320216243647083],["time v0.1.37",8159324894692769326],["tokio-core v0.1.8",4278558278754744686],["tokio-proto v0.1.0 (https://github.com/tomusdrw/tokio-proto#f6ee08cb)",5919709151317829858],["tokio-service v0.1.0",4242165067188007177]],"local":{"Precalculated":"8acbafae3e77e7f7eb516b441ec84695580221dd"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/dep-lib-tokio_proto-f8c0eaada8e5f1d7 b/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/dep-lib-tokio_proto-f8c0eaada8e5f1d7
new file mode 100644
index 0000000..9c462b6
Binary files /dev/null and b/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/dep-lib-tokio_proto-f8c0eaada8e5f1d7 differ
diff --git a/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/lib-tokio_proto-f8c0eaada8e5f1d7 b/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/lib-tokio_proto-f8c0eaada8e5f1d7
new file mode 100644
index 0000000..90361df
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/lib-tokio_proto-f8c0eaada8e5f1d7
@@ -0,0 +1 @@
+e2a8edf11b082752
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/lib-tokio_proto-f8c0eaada8e5f1d7.json b/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/lib-tokio_proto-f8c0eaada8e5f1d7.json
new file mode 100644
index 0000000..d9223a4
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-proto-f8c0eaada8e5f1d7/lib-tokio_proto-f8c0eaada8e5f1d7.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":11651027717964127506,"profile":731176819336294830,"deps":[["futures v0.1.14",2278465165944931584],["log v0.3.8",17599510212006507007],["net2 v0.2.29",16788320216243647083],["rand v0.3.15",16081693164340249007],["slab v0.3.0",3192514064517124032],["smallvec v0.2.1",4840041835155477191],["take v0.1.0",3223835529461724198],["tokio-core v0.1.8",4278558278754744686],["tokio-service v0.1.0",4242165067188007177]],"local":{"Precalculated":"f6ee08cb594fa2fc1b4178eaaca0855d66e68fd3"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/dep-lib-tokio_service-51008e9ef79a4b9d b/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/dep-lib-tokio_service-51008e9ef79a4b9d
new file mode 100644
index 0000000..be60911
Binary files /dev/null and b/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/dep-lib-tokio_service-51008e9ef79a4b9d differ
diff --git a/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/lib-tokio_service-51008e9ef79a4b9d b/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/lib-tokio_service-51008e9ef79a4b9d
new file mode 100644
index 0000000..489381d
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/lib-tokio_service-51008e9ef79a4b9d
@@ -0,0 +1 @@
+09f14f14a732df3a
\ No newline at end of file
diff --git a/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/lib-tokio_service-51008e9ef79a4b9d.json b/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/lib-tokio_service-51008e9ef79a4b9d.json
new file mode 100644
index 0000000..2ac1ccf
--- /dev/null
+++ b/target/debug/.fingerprint/tokio-service-51008e9ef79a4b9d/lib-tokio_service-51008e9ef79a4b9d.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":2981546558121310599,"profile":731176819336294830,"deps":[["futures v0.1.14",2278465165944931584]],"local":{"Precalculated":"0.1.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/dep-lib-traitobject-61e8f3406c7e9438 b/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/dep-lib-traitobject-61e8f3406c7e9438
new file mode 100644
index 0000000..b1ddcc1
Binary files /dev/null and b/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/dep-lib-traitobject-61e8f3406c7e9438 differ
diff --git a/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/lib-traitobject-61e8f3406c7e9438 b/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/lib-traitobject-61e8f3406c7e9438
new file mode 100644
index 0000000..9120a45
--- /dev/null
+++ b/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/lib-traitobject-61e8f3406c7e9438
@@ -0,0 +1 @@
+1e765b664ea9d190
\ No newline at end of file
diff --git a/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/lib-traitobject-61e8f3406c7e9438.json b/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/lib-traitobject-61e8f3406c7e9438.json
new file mode 100644
index 0000000..876dc27
--- /dev/null
+++ b/target/debug/.fingerprint/traitobject-61e8f3406c7e9438/lib-traitobject-61e8f3406c7e9438.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":12282206202567802465,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/typeable-f651278f97cad1e8/dep-lib-typeable-f651278f97cad1e8 b/target/debug/.fingerprint/typeable-f651278f97cad1e8/dep-lib-typeable-f651278f97cad1e8
new file mode 100644
index 0000000..0ed2fcc
Binary files /dev/null and b/target/debug/.fingerprint/typeable-f651278f97cad1e8/dep-lib-typeable-f651278f97cad1e8 differ
diff --git a/target/debug/.fingerprint/typeable-f651278f97cad1e8/lib-typeable-f651278f97cad1e8 b/target/debug/.fingerprint/typeable-f651278f97cad1e8/lib-typeable-f651278f97cad1e8
new file mode 100644
index 0000000..ce9385f
--- /dev/null
+++ b/target/debug/.fingerprint/typeable-f651278f97cad1e8/lib-typeable-f651278f97cad1e8
@@ -0,0 +1 @@
+a34ce0a58405fe42
\ No newline at end of file
diff --git a/target/debug/.fingerprint/typeable-f651278f97cad1e8/lib-typeable-f651278f97cad1e8.json b/target/debug/.fingerprint/typeable-f651278f97cad1e8/lib-typeable-f651278f97cad1e8.json
new file mode 100644
index 0000000..656997f
--- /dev/null
+++ b/target/debug/.fingerprint/typeable-f651278f97cad1e8/lib-typeable-f651278f97cad1e8.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":14442549659923640483,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicase-6dc4ed2d87ccf148/build b/target/debug/.fingerprint/unicase-6dc4ed2d87ccf148/build
new file mode 100644
index 0000000..e83df22
--- /dev/null
+++ b/target/debug/.fingerprint/unicase-6dc4ed2d87ccf148/build
@@ -0,0 +1 @@
+4dd5d2ed1b416e13
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicase-6dc4ed2d87ccf148/build.json b/target/debug/.fingerprint/unicase-6dc4ed2d87ccf148/build.json
new file mode 100644
index 0000000..bdd599c
--- /dev/null
+++ b/target/debug/.fingerprint/unicase-6dc4ed2d87ccf148/build.json
@@ -0,0 +1 @@
+{"rustc":0,"features":"","target":0,"profile":0,"deps":[],"local":{"Precalculated":"1.4.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/build-script-build_script_build-9e8aa943817d5b8f b/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/build-script-build_script_build-9e8aa943817d5b8f
new file mode 100644
index 0000000..b2bfbf8
--- /dev/null
+++ b/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/build-script-build_script_build-9e8aa943817d5b8f
@@ -0,0 +1 @@
+ca4db00e23105800
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/build-script-build_script_build-9e8aa943817d5b8f.json b/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/build-script-build_script_build-9e8aa943817d5b8f.json
new file mode 100644
index 0000000..6d5af7b
--- /dev/null
+++ b/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/build-script-build_script_build-9e8aa943817d5b8f.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":4048290779245704264,"profile":731176819336294830,"deps":[["version_check v0.1.2",2237268969884968219]],"local":{"Precalculated":"1.4.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/dep-build-script-build_script_build-9e8aa943817d5b8f b/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/dep-build-script-build_script_build-9e8aa943817d5b8f
new file mode 100644
index 0000000..20a514c
Binary files /dev/null and b/target/debug/.fingerprint/unicase-9e8aa943817d5b8f/dep-build-script-build_script_build-9e8aa943817d5b8f differ
diff --git a/target/debug/.fingerprint/unicase-fde571b29b05394a/dep-lib-unicase-fde571b29b05394a b/target/debug/.fingerprint/unicase-fde571b29b05394a/dep-lib-unicase-fde571b29b05394a
new file mode 100644
index 0000000..f09d567
Binary files /dev/null and b/target/debug/.fingerprint/unicase-fde571b29b05394a/dep-lib-unicase-fde571b29b05394a differ
diff --git a/target/debug/.fingerprint/unicase-fde571b29b05394a/lib-unicase-fde571b29b05394a b/target/debug/.fingerprint/unicase-fde571b29b05394a/lib-unicase-fde571b29b05394a
new file mode 100644
index 0000000..8b2d829
--- /dev/null
+++ b/target/debug/.fingerprint/unicase-fde571b29b05394a/lib-unicase-fde571b29b05394a
@@ -0,0 +1 @@
+8d794f0c4f19137a
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicase-fde571b29b05394a/lib-unicase-fde571b29b05394a.json b/target/debug/.fingerprint/unicase-fde571b29b05394a/lib-unicase-fde571b29b05394a.json
new file mode 100644
index 0000000..436df0c
--- /dev/null
+++ b/target/debug/.fingerprint/unicase-fde571b29b05394a/lib-unicase-fde571b29b05394a.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":15646191620499794584,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.4.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/dep-lib-unicode_bidi-f32658eb61912801 b/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/dep-lib-unicode_bidi-f32658eb61912801
new file mode 100644
index 0000000..093cf9e
Binary files /dev/null and b/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/dep-lib-unicode_bidi-f32658eb61912801 differ
diff --git a/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/lib-unicode_bidi-f32658eb61912801 b/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/lib-unicode_bidi-f32658eb61912801
new file mode 100644
index 0000000..dc4dcfc
--- /dev/null
+++ b/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/lib-unicode_bidi-f32658eb61912801
@@ -0,0 +1 @@
+a57b4cbb1c7cf7c8
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/lib-unicode_bidi-f32658eb61912801.json b/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/lib-unicode_bidi-f32658eb61912801.json
new file mode 100644
index 0000000..b0d61de
--- /dev/null
+++ b/target/debug/.fingerprint/unicode-bidi-f32658eb61912801/lib-unicode_bidi-f32658eb61912801.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\"]","target":8213584761286549098,"profile":731176819336294830,"deps":[["matches v0.1.6",9121172600051055666]],"local":{"Precalculated":"0.3.3"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/dep-lib-unicode_normalization-5554c8b28de87bfc b/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/dep-lib-unicode_normalization-5554c8b28de87bfc
new file mode 100644
index 0000000..8e50005
Binary files /dev/null and b/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/dep-lib-unicode_normalization-5554c8b28de87bfc differ
diff --git a/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/lib-unicode_normalization-5554c8b28de87bfc b/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/lib-unicode_normalization-5554c8b28de87bfc
new file mode 100644
index 0000000..c89a5d1
--- /dev/null
+++ b/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/lib-unicode_normalization-5554c8b28de87bfc
@@ -0,0 +1 @@
+d876aba35cac2755
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/lib-unicode_normalization-5554c8b28de87bfc.json b/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/lib-unicode_normalization-5554c8b28de87bfc.json
new file mode 100644
index 0000000..3e92d88
--- /dev/null
+++ b/target/debug/.fingerprint/unicode-normalization-5554c8b28de87bfc/lib-unicode_normalization-5554c8b28de87bfc.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":66956237335847898,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.5"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/dep-lib-unicode_xid-c5a7e4f1b4bcb78b b/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/dep-lib-unicode_xid-c5a7e4f1b4bcb78b
new file mode 100644
index 0000000..b9f6134
Binary files /dev/null and b/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/dep-lib-unicode_xid-c5a7e4f1b4bcb78b differ
diff --git a/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/lib-unicode_xid-c5a7e4f1b4bcb78b b/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/lib-unicode_xid-c5a7e4f1b4bcb78b
new file mode 100644
index 0000000..d3d3ebf
--- /dev/null
+++ b/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/lib-unicode_xid-c5a7e4f1b4bcb78b
@@ -0,0 +1 @@
+edf367d0fdec358c
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/lib-unicode_xid-c5a7e4f1b4bcb78b.json b/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/lib-unicode_xid-c5a7e4f1b4bcb78b.json
new file mode 100644
index 0000000..86998bb
--- /dev/null
+++ b/target/debug/.fingerprint/unicode-xid-c5a7e4f1b4bcb78b/lib-unicode_xid-c5a7e4f1b4bcb78b.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"default\"]","target":10225090480958285925,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.0.4"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/dep-lib-unreachable-9bd306f72d3bd51e b/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/dep-lib-unreachable-9bd306f72d3bd51e
new file mode 100644
index 0000000..e739170
Binary files /dev/null and b/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/dep-lib-unreachable-9bd306f72d3bd51e differ
diff --git a/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/lib-unreachable-9bd306f72d3bd51e b/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/lib-unreachable-9bd306f72d3bd51e
new file mode 100644
index 0000000..34f3e6c
--- /dev/null
+++ b/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/lib-unreachable-9bd306f72d3bd51e
@@ -0,0 +1 @@
+6ca10fab452668ce
\ No newline at end of file
diff --git a/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/lib-unreachable-9bd306f72d3bd51e.json b/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/lib-unreachable-9bd306f72d3bd51e.json
new file mode 100644
index 0000000..4385980
--- /dev/null
+++ b/target/debug/.fingerprint/unreachable-9bd306f72d3bd51e/lib-unreachable-9bd306f72d3bd51e.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":7153710323902646100,"profile":731176819336294830,"deps":[["void v1.0.2",10620093552826696100]],"local":{"Precalculated":"0.1.1"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/url-d8313694214b880a/dep-lib-url-d8313694214b880a b/target/debug/.fingerprint/url-d8313694214b880a/dep-lib-url-d8313694214b880a
new file mode 100644
index 0000000..d59f627
Binary files /dev/null and b/target/debug/.fingerprint/url-d8313694214b880a/dep-lib-url-d8313694214b880a differ
diff --git a/target/debug/.fingerprint/url-d8313694214b880a/lib-url-d8313694214b880a b/target/debug/.fingerprint/url-d8313694214b880a/lib-url-d8313694214b880a
new file mode 100644
index 0000000..e21353b
--- /dev/null
+++ b/target/debug/.fingerprint/url-d8313694214b880a/lib-url-d8313694214b880a
@@ -0,0 +1 @@
+4dbfeeacddb53a6c
\ No newline at end of file
diff --git a/target/debug/.fingerprint/url-d8313694214b880a/lib-url-d8313694214b880a.json b/target/debug/.fingerprint/url-d8313694214b880a/lib-url-d8313694214b880a.json
new file mode 100644
index 0000000..34d70ce
--- /dev/null
+++ b/target/debug/.fingerprint/url-d8313694214b880a/lib-url-d8313694214b880a.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":285518712000787879,"profile":731176819336294830,"deps":[["idna v0.1.2",9495499547368623591],["matches v0.1.6",9121172600051055666],["percent-encoding v1.0.0",2889375980726406555]],"local":{"Precalculated":"1.5.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/dep-lib-utf8_ranges-b81dc320c0a952bb b/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/dep-lib-utf8_ranges-b81dc320c0a952bb
new file mode 100644
index 0000000..9b2072d
Binary files /dev/null and b/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/dep-lib-utf8_ranges-b81dc320c0a952bb differ
diff --git a/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/lib-utf8_ranges-b81dc320c0a952bb b/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/lib-utf8_ranges-b81dc320c0a952bb
new file mode 100644
index 0000000..89a474d
--- /dev/null
+++ b/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/lib-utf8_ranges-b81dc320c0a952bb
@@ -0,0 +1 @@
+e8096036934cd4ab
\ No newline at end of file
diff --git a/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/lib-utf8_ranges-b81dc320c0a952bb.json b/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/lib-utf8_ranges-b81dc320c0a952bb.json
new file mode 100644
index 0000000..f7394d7
--- /dev/null
+++ b/target/debug/.fingerprint/utf8-ranges-b81dc320c0a952bb/lib-utf8_ranges-b81dc320c0a952bb.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":5869248074515442071,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.0.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/uuid-85cd019686aab639/dep-lib-uuid-85cd019686aab639 b/target/debug/.fingerprint/uuid-85cd019686aab639/dep-lib-uuid-85cd019686aab639
new file mode 100644
index 0000000..f84c92a
Binary files /dev/null and b/target/debug/.fingerprint/uuid-85cd019686aab639/dep-lib-uuid-85cd019686aab639 differ
diff --git a/target/debug/.fingerprint/uuid-85cd019686aab639/lib-uuid-85cd019686aab639 b/target/debug/.fingerprint/uuid-85cd019686aab639/lib-uuid-85cd019686aab639
new file mode 100644
index 0000000..94af4f4
--- /dev/null
+++ b/target/debug/.fingerprint/uuid-85cd019686aab639/lib-uuid-85cd019686aab639
@@ -0,0 +1 @@
+dcddc004c76d4033
\ No newline at end of file
diff --git a/target/debug/.fingerprint/uuid-85cd019686aab639/lib-uuid-85cd019686aab639.json b/target/debug/.fingerprint/uuid-85cd019686aab639/lib-uuid-85cd019686aab639.json
new file mode 100644
index 0000000..b251fe8
--- /dev/null
+++ b/target/debug/.fingerprint/uuid-85cd019686aab639/lib-uuid-85cd019686aab639.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[\"rand\", \"rustc-serialize\", \"v4\"]","target":16754428694406476124,"profile":731176819336294830,"deps":[["rand v0.3.15",16081693164340249007],["rustc-serialize v0.3.24",15751235613328585593]],"local":{"Precalculated":"0.5.0"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/dep-lib-version_check-2b79b50ed3fe47cf b/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/dep-lib-version_check-2b79b50ed3fe47cf
new file mode 100644
index 0000000..0e22435
Binary files /dev/null and b/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/dep-lib-version_check-2b79b50ed3fe47cf differ
diff --git a/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/lib-version_check-2b79b50ed3fe47cf b/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/lib-version_check-2b79b50ed3fe47cf
new file mode 100644
index 0000000..b30bbf0
--- /dev/null
+++ b/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/lib-version_check-2b79b50ed3fe47cf
@@ -0,0 +1 @@
+1b65ff4846600c1f
\ No newline at end of file
diff --git a/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/lib-version_check-2b79b50ed3fe47cf.json b/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/lib-version_check-2b79b50ed3fe47cf.json
new file mode 100644
index 0000000..79c99ac
--- /dev/null
+++ b/target/debug/.fingerprint/version_check-2b79b50ed3fe47cf/lib-version_check-2b79b50ed3fe47cf.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":6814591585798531912,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"0.1.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/.fingerprint/void-6c52c4ddaea6e3db/dep-lib-void-6c52c4ddaea6e3db b/target/debug/.fingerprint/void-6c52c4ddaea6e3db/dep-lib-void-6c52c4ddaea6e3db
new file mode 100644
index 0000000..6a66724
Binary files /dev/null and b/target/debug/.fingerprint/void-6c52c4ddaea6e3db/dep-lib-void-6c52c4ddaea6e3db differ
diff --git a/target/debug/.fingerprint/void-6c52c4ddaea6e3db/lib-void-6c52c4ddaea6e3db b/target/debug/.fingerprint/void-6c52c4ddaea6e3db/lib-void-6c52c4ddaea6e3db
new file mode 100644
index 0000000..0e73082
--- /dev/null
+++ b/target/debug/.fingerprint/void-6c52c4ddaea6e3db/lib-void-6c52c4ddaea6e3db
@@ -0,0 +1 @@
+a4c1a691d1266293
\ No newline at end of file
diff --git a/target/debug/.fingerprint/void-6c52c4ddaea6e3db/lib-void-6c52c4ddaea6e3db.json b/target/debug/.fingerprint/void-6c52c4ddaea6e3db/lib-void-6c52c4ddaea6e3db.json
new file mode 100644
index 0000000..394376b
--- /dev/null
+++ b/target/debug/.fingerprint/void-6c52c4ddaea6e3db/lib-void-6c52c4ddaea6e3db.json
@@ -0,0 +1 @@
+{"rustc":9515111874729349077,"features":"[]","target":15793335957776529727,"profile":731176819336294830,"deps":[],"local":{"Precalculated":"1.0.2"},"rustflags":[]}
\ No newline at end of file
diff --git a/target/debug/build/openssl-7e7921378ef729a4/build-script-build b/target/debug/build/openssl-7e7921378ef729a4/build-script-build
new file mode 100755
index 0000000..71f1742
Binary files /dev/null and b/target/debug/build/openssl-7e7921378ef729a4/build-script-build differ
diff --git a/target/debug/build/openssl-7e7921378ef729a4/build_script_build-7e7921378ef729a4 b/target/debug/build/openssl-7e7921378ef729a4/build_script_build-7e7921378ef729a4
new file mode 100755
index 0000000..71f1742
Binary files /dev/null and b/target/debug/build/openssl-7e7921378ef729a4/build_script_build-7e7921378ef729a4 differ
diff --git a/target/debug/build/openssl-9b797582d073861b/output b/target/debug/build/openssl-9b797582d073861b/output
new file mode 100644
index 0000000..27a2f5c
--- /dev/null
+++ b/target/debug/build/openssl-9b797582d073861b/output
@@ -0,0 +1,2 @@
+cargo:rustc-cfg=ossl110
+cargo:rustc-cfg=osslconf="OPENSSL_NO_SSL3_METHOD"
diff --git a/target/debug/build/openssl-9b797582d073861b/stderr b/target/debug/build/openssl-9b797582d073861b/stderr
new file mode 100644
index 0000000..e69de29
diff --git a/target/debug/build/openssl-sys-32a4be748385fda0/build-script-build b/target/debug/build/openssl-sys-32a4be748385fda0/build-script-build
new file mode 100755
index 0000000..5892512
Binary files /dev/null and b/target/debug/build/openssl-sys-32a4be748385fda0/build-script-build differ
diff --git a/target/debug/build/openssl-sys-32a4be748385fda0/build_script_build-32a4be748385fda0 b/target/debug/build/openssl-sys-32a4be748385fda0/build_script_build-32a4be748385fda0
new file mode 100755
index 0000000..5892512
Binary files /dev/null and b/target/debug/build/openssl-sys-32a4be748385fda0/build_script_build-32a4be748385fda0 differ
diff --git a/target/debug/build/openssl-sys-6c107df70444a0f0/out/expando.c b/target/debug/build/openssl-sys-6c107df70444a0f0/out/expando.c
new file mode 100644
index 0000000..113f03b
--- /dev/null
+++ b/target/debug/build/openssl-sys-6c107df70444a0f0/out/expando.c
@@ -0,0 +1,69 @@
+#include
+#include
+
+#if LIBRESSL_VERSION_NUMBER >= 0x20505000
+RUST_LIBRESSL_NEW
+#elif LIBRESSL_VERSION_NUMBER >= 0x20504000
+RUST_LIBRESSL_254
+#elif LIBRESSL_VERSION_NUMBER >= 0x20503000
+RUST_LIBRESSL_253
+#elif LIBRESSL_VERSION_NUMBER >= 0x20502000
+RUST_LIBRESSL_252
+#elif LIBRESSL_VERSION_NUMBER >= 0x20501000
+RUST_LIBRESSL_251
+#elif LIBRESSL_VERSION_NUMBER >= 0x20500000
+RUST_LIBRESSL_250
+#elif defined (LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER < 0x20500000
+RUST_LIBRESSL_OLD
+#elif OPENSSL_VERSION_NUMBER >= 0x10101000
+RUST_OPENSSL_NEW
+#elif OPENSSL_VERSION_NUMBER >= 0x10100060
+RUST_OPENSSL_110F
+#elif OPENSSL_VERSION_NUMBER >= 0x10100000
+RUST_OPENSSL_110
+#elif OPENSSL_VERSION_NUMBER >= 0x10002000
+RUST_OPENSSL_102
+#elif OPENSSL_VERSION_NUMBER >= 0x10001000
+RUST_OPENSSL_101
+#else
+RUST_OPENSSL_OLD
+#endif
+#ifdef OPENSSL_NO_BUF_FREELISTS
+RUST_OPENSSL_NO_BUF_FREELISTS
+#endif
+#ifdef OPENSSL_NO_COMP
+RUST_OPENSSL_NO_COMP
+#endif
+#ifdef OPENSSL_NO_EC
+RUST_OPENSSL_NO_EC
+#endif
+#ifdef OPENSSL_NO_EC2M
+RUST_OPENSSL_NO_EC2M
+#endif
+#ifdef OPENSSL_NO_ENGINE
+RUST_OPENSSL_NO_ENGINE
+#endif
+#ifdef OPENSSL_NO_KRB5
+RUST_OPENSSL_NO_KRB5
+#endif
+#ifdef OPENSSL_NO_NEXTPROTONEG
+RUST_OPENSSL_NO_NEXTPROTONEG
+#endif
+#ifdef OPENSSL_NO_PSK
+RUST_OPENSSL_NO_PSK
+#endif
+#ifdef OPENSSL_NO_RFC3779
+RUST_OPENSSL_NO_RFC3779
+#endif
+#ifdef OPENSSL_NO_SHA
+RUST_OPENSSL_NO_SHA
+#endif
+#ifdef OPENSSL_NO_SRP
+RUST_OPENSSL_NO_SRP
+#endif
+#ifdef OPENSSL_NO_SSL3_METHOD
+RUST_OPENSSL_NO_SSL3_METHOD
+#endif
+#ifdef OPENSSL_NO_TLSEXT
+RUST_OPENSSL_NO_TLSEXT
+#endif
diff --git a/target/debug/build/openssl-sys-6c107df70444a0f0/output b/target/debug/build/openssl-sys-6c107df70444a0f0/output
new file mode 100644
index 0000000..19f95f2
--- /dev/null
+++ b/target/debug/build/openssl-sys-6c107df70444a0f0/output
@@ -0,0 +1,28 @@
+cargo:rustc-link-lib=ssl
+cargo:rustc-link-lib=crypto
+OPT_LEVEL = Some("0")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CC_x86_64-unknown-linux-gnu = None
+CC_x86_64_unknown_linux_gnu = None
+HOST_CC = None
+CC = None
+HOST = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CFLAGS_x86_64-unknown-linux-gnu = None
+CFLAGS_x86_64_unknown_linux_gnu = None
+HOST_CFLAGS = None
+CFLAGS = None
+PROFILE = Some("debug")
+running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-m64" "-E" "/home/k2/Workshop/rust-scrypt/target/debug/build/openssl-sys-6c107df70444a0f0/out/expando.c"
+exit code: 0
+cargo:rustc-cfg=osslconf="OPENSSL_NO_SSL3_METHOD"
+cargo:conf=OPENSSL_NO_SSL3_METHOD
+cargo:rustc-cfg=ossl110
+cargo:rustc-cfg=ossl110f
+cargo:version=110
+cargo:patch=f
diff --git a/target/debug/build/openssl-sys-6c107df70444a0f0/stderr b/target/debug/build/openssl-sys-6c107df70444a0f0/stderr
new file mode 100644
index 0000000..e69de29
diff --git a/target/debug/build/rust-crypto-be7776070793c706/out/lib_rust_crypto_helpers.a b/target/debug/build/rust-crypto-be7776070793c706/out/lib_rust_crypto_helpers.a
new file mode 100644
index 0000000..0a2f6b3
Binary files /dev/null and b/target/debug/build/rust-crypto-be7776070793c706/out/lib_rust_crypto_helpers.a differ
diff --git a/target/debug/build/rust-crypto-be7776070793c706/out/src/aesni_helpers.o b/target/debug/build/rust-crypto-be7776070793c706/out/src/aesni_helpers.o
new file mode 100644
index 0000000..6ef4d8d
Binary files /dev/null and b/target/debug/build/rust-crypto-be7776070793c706/out/src/aesni_helpers.o differ
diff --git a/target/debug/build/rust-crypto-be7776070793c706/out/src/util_helpers.o b/target/debug/build/rust-crypto-be7776070793c706/out/src/util_helpers.o
new file mode 100644
index 0000000..dd52a33
Binary files /dev/null and b/target/debug/build/rust-crypto-be7776070793c706/out/src/util_helpers.o differ
diff --git a/target/debug/build/rust-crypto-be7776070793c706/output b/target/debug/build/rust-crypto-be7776070793c706/output
new file mode 100644
index 0000000..c5d98ff
--- /dev/null
+++ b/target/debug/build/rust-crypto-be7776070793c706/output
@@ -0,0 +1,38 @@
+TARGET = Some("x86_64-unknown-linux-gnu")
+OPT_LEVEL = Some("0")
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CFLAGS_x86_64-unknown-linux-gnu = None
+CFLAGS_x86_64_unknown_linux_gnu = None
+HOST_CFLAGS = None
+CFLAGS = None
+PROFILE = Some("debug")
+running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-m64" "-o" "/home/k2/Workshop/rust-scrypt/target/debug/build/rust-crypto-be7776070793c706/out/src/util_helpers.o" "-c" "src/util_helpers.c"
+exit code: 0
+TARGET = Some("x86_64-unknown-linux-gnu")
+OPT_LEVEL = Some("0")
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CFLAGS_x86_64-unknown-linux-gnu = None
+CFLAGS_x86_64_unknown_linux_gnu = None
+HOST_CFLAGS = None
+CFLAGS = None
+PROFILE = Some("debug")
+running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-m64" "-o" "/home/k2/Workshop/rust-scrypt/target/debug/build/rust-crypto-be7776070793c706/out/src/aesni_helpers.o" "-c" "src/aesni_helpers.c"
+exit code: 0
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+AR_x86_64-unknown-linux-gnu = None
+AR_x86_64_unknown_linux_gnu = None
+HOST_AR = None
+AR = None
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+running: "ar" "crs" "/home/k2/Workshop/rust-scrypt/target/debug/build/rust-crypto-be7776070793c706/out/lib_rust_crypto_helpers.a" "/home/k2/Workshop/rust-scrypt/target/debug/build/rust-crypto-be7776070793c706/out/src/util_helpers.o" "/home/k2/Workshop/rust-scrypt/target/debug/build/rust-crypto-be7776070793c706/out/src/aesni_helpers.o"
+exit code: 0
+TARGET = Some("x86_64-unknown-linux-gnu")
+cargo:rustc-link-lib=static=_rust_crypto_helpers
+cargo:rustc-link-search=native=/home/k2/Workshop/rust-scrypt/target/debug/build/rust-crypto-be7776070793c706/out
diff --git a/target/debug/build/rust-crypto-be7776070793c706/stderr b/target/debug/build/rust-crypto-be7776070793c706/stderr
new file mode 100644
index 0000000..e69de29
diff --git a/target/debug/build/rust-crypto-e8cd12c890982034/build-script-build b/target/debug/build/rust-crypto-e8cd12c890982034/build-script-build
new file mode 100755
index 0000000..42417f1
Binary files /dev/null and b/target/debug/build/rust-crypto-e8cd12c890982034/build-script-build differ
diff --git a/target/debug/build/rust-crypto-e8cd12c890982034/build_script_build-e8cd12c890982034 b/target/debug/build/rust-crypto-e8cd12c890982034/build_script_build-e8cd12c890982034
new file mode 100755
index 0000000..42417f1
Binary files /dev/null and b/target/debug/build/rust-crypto-e8cd12c890982034/build_script_build-e8cd12c890982034 differ
diff --git a/target/debug/build/rust-scrypt-21c2ff1246aca702/out/ext/scrypt/crypto_scrypt.o b/target/debug/build/rust-scrypt-21c2ff1246aca702/out/ext/scrypt/crypto_scrypt.o
new file mode 100644
index 0000000..d9de843
Binary files /dev/null and b/target/debug/build/rust-scrypt-21c2ff1246aca702/out/ext/scrypt/crypto_scrypt.o differ
diff --git a/target/debug/build/rust-scrypt-21c2ff1246aca702/out/ext/scrypt/scrypt_ext.o b/target/debug/build/rust-scrypt-21c2ff1246aca702/out/ext/scrypt/scrypt_ext.o
new file mode 100644
index 0000000..922b12e
Binary files /dev/null and b/target/debug/build/rust-scrypt-21c2ff1246aca702/out/ext/scrypt/scrypt_ext.o differ
diff --git a/target/debug/build/rust-scrypt-21c2ff1246aca702/out/libcrypto_scrypt.a b/target/debug/build/rust-scrypt-21c2ff1246aca702/out/libcrypto_scrypt.a
new file mode 100644
index 0000000..94a765e
Binary files /dev/null and b/target/debug/build/rust-scrypt-21c2ff1246aca702/out/libcrypto_scrypt.a differ
diff --git a/target/debug/build/rust-scrypt-21c2ff1246aca702/out/libscrypt.a b/target/debug/build/rust-scrypt-21c2ff1246aca702/out/libscrypt.a
new file mode 100644
index 0000000..050b600
Binary files /dev/null and b/target/debug/build/rust-scrypt-21c2ff1246aca702/out/libscrypt.a differ
diff --git a/target/debug/build/rust-scrypt-21c2ff1246aca702/output b/target/debug/build/rust-scrypt-21c2ff1246aca702/output
new file mode 100644
index 0000000..5f0850c
--- /dev/null
+++ b/target/debug/build/rust-scrypt-21c2ff1246aca702/output
@@ -0,0 +1,35 @@
+TARGET = Some("x86_64-unknown-linux-gnu")
+OPT_LEVEL = Some("0")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CC_x86_64-unknown-linux-gnu = None
+CC_x86_64_unknown_linux_gnu = None
+HOST_CC = None
+CC = None
+HOST = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CFLAGS_x86_64-unknown-linux-gnu = None
+CFLAGS_x86_64_unknown_linux_gnu = None
+HOST_CFLAGS = None
+CFLAGS = None
+PROFILE = Some("debug")
+running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-m64" "-o" "/home/k2/Workshop/rust-scrypt/target/debug/build/rust-scrypt-21c2ff1246aca702/out/ext/scrypt/scrypt_ext.o" "-c" "ext/scrypt/scrypt_ext.c"
+exit code: 0
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+AR_x86_64-unknown-linux-gnu = None
+AR_x86_64_unknown_linux_gnu = None
+HOST_AR = None
+AR = None
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+running: "ar" "crs" "/home/k2/Workshop/rust-scrypt/target/debug/build/rust-scrypt-21c2ff1246aca702/out/libscrypt.a" "/home/k2/Workshop/rust-scrypt/target/debug/build/rust-scrypt-21c2ff1246aca702/out/ext/scrypt/scrypt_ext.o"
+exit code: 0
+TARGET = Some("x86_64-unknown-linux-gnu")
+cargo:rustc-link-lib=static=scrypt
+cargo:rustc-link-search=native=/home/k2/Workshop/rust-scrypt/target/debug/build/rust-scrypt-21c2ff1246aca702/out
diff --git a/target/debug/build/rust-scrypt-21c2ff1246aca702/stderr b/target/debug/build/rust-scrypt-21c2ff1246aca702/stderr
new file mode 100644
index 0000000..e69de29
diff --git a/target/debug/build/rust-scrypt-ef0c156ddd3c911b/build-script-build b/target/debug/build/rust-scrypt-ef0c156ddd3c911b/build-script-build
new file mode 100755
index 0000000..860c379
Binary files /dev/null and b/target/debug/build/rust-scrypt-ef0c156ddd3c911b/build-script-build differ
diff --git a/target/debug/build/rust-scrypt-ef0c156ddd3c911b/build_script_build-ef0c156ddd3c911b b/target/debug/build/rust-scrypt-ef0c156ddd3c911b/build_script_build-ef0c156ddd3c911b
new file mode 100755
index 0000000..860c379
Binary files /dev/null and b/target/debug/build/rust-scrypt-ef0c156ddd3c911b/build_script_build-ef0c156ddd3c911b differ
diff --git a/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/contrib/lax_der_parsing.o b/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/contrib/lax_der_parsing.o
new file mode 100644
index 0000000..2a9c4a8
Binary files /dev/null and b/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/contrib/lax_der_parsing.o differ
diff --git a/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/src/secp256k1.o b/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/src/secp256k1.o
new file mode 100644
index 0000000..a8df502
Binary files /dev/null and b/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/src/secp256k1.o differ
diff --git a/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/libsecp256k1.a b/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/libsecp256k1.a
new file mode 100644
index 0000000..b93a4dc
Binary files /dev/null and b/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/libsecp256k1.a differ
diff --git a/target/debug/build/secp256k1-1f8bc2e95f0363a5/output b/target/debug/build/secp256k1-1f8bc2e95f0363a5/output
new file mode 100644
index 0000000..2b80438
--- /dev/null
+++ b/target/debug/build/secp256k1-1f8bc2e95f0363a5/output
@@ -0,0 +1,56 @@
+TARGET = Some("x86_64-unknown-linux-gnu")
+OPT_LEVEL = Some("0")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CC_x86_64-unknown-linux-gnu = None
+CC_x86_64_unknown_linux_gnu = None
+HOST_CC = None
+CC = None
+HOST = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CFLAGS_x86_64-unknown-linux-gnu = None
+CFLAGS_x86_64_unknown_linux_gnu = None
+HOST_CFLAGS = None
+CFLAGS = None
+PROFILE = Some("debug")
+running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-m64" "-I" "depend/secp256k1/" "-I" "depend/secp256k1/include" "-I" "depend/secp256k1/src" "-g" "-DUSE_NUM_NONE=1" "-DUSE_FIELD_INV_BUILTIN=1" "-DUSE_SCALAR_INV_BUILTIN=1" "-DUSE_FIELD_10X26=1" "-DUSE_SCALAR_8X32=1" "-DUSE_ENDOMORPHISM=1" "-DENABLE_MODULE_ECDH=1" "-DENABLE_MODULE_SCHNORR=1" "-DENABLE_MODULE_RECOVERY=1" "-o" "/home/k2/Workshop/rust-scrypt/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/contrib/lax_der_parsing.o" "-c" "depend/secp256k1/contrib/lax_der_parsing.c"
+exit code: 0
+TARGET = Some("x86_64-unknown-linux-gnu")
+OPT_LEVEL = Some("0")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CC_x86_64-unknown-linux-gnu = None
+CC_x86_64_unknown_linux_gnu = None
+HOST_CC = None
+CC = None
+HOST = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+CFLAGS_x86_64-unknown-linux-gnu = None
+CFLAGS_x86_64_unknown_linux_gnu = None
+HOST_CFLAGS = None
+CFLAGS = None
+PROFILE = Some("debug")
+running: "cc" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-m64" "-I" "depend/secp256k1/" "-I" "depend/secp256k1/include" "-I" "depend/secp256k1/src" "-g" "-DUSE_NUM_NONE=1" "-DUSE_FIELD_INV_BUILTIN=1" "-DUSE_SCALAR_INV_BUILTIN=1" "-DUSE_FIELD_10X26=1" "-DUSE_SCALAR_8X32=1" "-DUSE_ENDOMORPHISM=1" "-DENABLE_MODULE_ECDH=1" "-DENABLE_MODULE_SCHNORR=1" "-DENABLE_MODULE_RECOVERY=1" "-o" "/home/k2/Workshop/rust-scrypt/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/src/secp256k1.o" "-c" "depend/secp256k1/src/secp256k1.c"
+exit code: 0
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+HOST = Some("x86_64-unknown-linux-gnu")
+AR_x86_64-unknown-linux-gnu = None
+AR_x86_64_unknown_linux_gnu = None
+HOST_AR = None
+AR = None
+TARGET = Some("x86_64-unknown-linux-gnu")
+TARGET = Some("x86_64-unknown-linux-gnu")
+running: "ar" "crs" "/home/k2/Workshop/rust-scrypt/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/libsecp256k1.a" "/home/k2/Workshop/rust-scrypt/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/contrib/lax_der_parsing.o" "/home/k2/Workshop/rust-scrypt/target/debug/build/secp256k1-1f8bc2e95f0363a5/out/depend/secp256k1/src/secp256k1.o"
+exit code: 0
+TARGET = Some("x86_64-unknown-linux-gnu")
+cargo:rustc-link-lib=static=secp256k1
+cargo:rustc-link-search=native=/home/k2/Workshop/rust-scrypt/target/debug/build/secp256k1-1f8bc2e95f0363a5/out
diff --git a/target/debug/build/secp256k1-1f8bc2e95f0363a5/stderr b/target/debug/build/secp256k1-1f8bc2e95f0363a5/stderr
new file mode 100644
index 0000000..e69de29
diff --git a/target/debug/build/secp256k1-7b558304ea490265/build-script-build b/target/debug/build/secp256k1-7b558304ea490265/build-script-build
new file mode 100755
index 0000000..18d6c97
Binary files /dev/null and b/target/debug/build/secp256k1-7b558304ea490265/build-script-build differ
diff --git a/target/debug/build/secp256k1-7b558304ea490265/build_script_build-7b558304ea490265 b/target/debug/build/secp256k1-7b558304ea490265/build_script_build-7b558304ea490265
new file mode 100755
index 0000000..18d6c97
Binary files /dev/null and b/target/debug/build/secp256k1-7b558304ea490265/build_script_build-7b558304ea490265 differ
diff --git a/target/debug/build/unicase-6dc4ed2d87ccf148/output b/target/debug/build/unicase-6dc4ed2d87ccf148/output
new file mode 100644
index 0000000..abd6ef3
--- /dev/null
+++ b/target/debug/build/unicase-6dc4ed2d87ccf148/output
@@ -0,0 +1,2 @@
+cargo:rustc-cfg=__unicase__iter_cmp
+cargo:rustc-cfg=__unicase__default_hasher
diff --git a/target/debug/build/unicase-6dc4ed2d87ccf148/stderr b/target/debug/build/unicase-6dc4ed2d87ccf148/stderr
new file mode 100644
index 0000000..e69de29
diff --git a/target/debug/build/unicase-9e8aa943817d5b8f/build-script-build b/target/debug/build/unicase-9e8aa943817d5b8f/build-script-build
new file mode 100755
index 0000000..0f299de
Binary files /dev/null and b/target/debug/build/unicase-9e8aa943817d5b8f/build-script-build differ
diff --git a/target/debug/build/unicase-9e8aa943817d5b8f/build_script_build-9e8aa943817d5b8f b/target/debug/build/unicase-9e8aa943817d5b8f/build_script_build-9e8aa943817d5b8f
new file mode 100755
index 0000000..0f299de
Binary files /dev/null and b/target/debug/build/unicase-9e8aa943817d5b8f/build_script_build-9e8aa943817d5b8f differ
diff --git a/target/debug/deps/libaho_corasick-ee2f3809623d70dc.rlib b/target/debug/deps/libaho_corasick-ee2f3809623d70dc.rlib
new file mode 100644
index 0000000..154317e
Binary files /dev/null and b/target/debug/deps/libaho_corasick-ee2f3809623d70dc.rlib differ
diff --git a/target/debug/deps/libantidote-ddae729b51ff756f.rlib b/target/debug/deps/libantidote-ddae729b51ff756f.rlib
new file mode 100644
index 0000000..2968473
Binary files /dev/null and b/target/debug/deps/libantidote-ddae729b51ff756f.rlib differ
diff --git a/target/debug/deps/libarrayvec-7b8520bba7fcf1b7.rlib b/target/debug/deps/libarrayvec-7b8520bba7fcf1b7.rlib
new file mode 100644
index 0000000..58f49a4
Binary files /dev/null and b/target/debug/deps/libarrayvec-7b8520bba7fcf1b7.rlib differ
diff --git a/target/debug/deps/libbase64-671f71aca8a0bd16.rlib b/target/debug/deps/libbase64-671f71aca8a0bd16.rlib
new file mode 100644
index 0000000..67a0bb0
Binary files /dev/null and b/target/debug/deps/libbase64-671f71aca8a0bd16.rlib differ
diff --git a/target/debug/deps/libbitflags-c8b3e4b415593713.rlib b/target/debug/deps/libbitflags-c8b3e4b415593713.rlib
new file mode 100644
index 0000000..52b1e44
Binary files /dev/null and b/target/debug/deps/libbitflags-c8b3e4b415593713.rlib differ
diff --git a/target/debug/deps/libbyteorder-190c8b8b4cb7f472.rlib b/target/debug/deps/libbyteorder-190c8b8b4cb7f472.rlib
new file mode 100644
index 0000000..f8f6ade
Binary files /dev/null and b/target/debug/deps/libbyteorder-190c8b8b4cb7f472.rlib differ
diff --git a/target/debug/deps/libbytes-bbb7bd4f6364cc42.rlib b/target/debug/deps/libbytes-bbb7bd4f6364cc42.rlib
new file mode 100644
index 0000000..1081887
Binary files /dev/null and b/target/debug/deps/libbytes-bbb7bd4f6364cc42.rlib differ
diff --git a/target/debug/deps/libcfg_if-d561b8f41e038432.rlib b/target/debug/deps/libcfg_if-d561b8f41e038432.rlib
new file mode 100644
index 0000000..b6464dd
Binary files /dev/null and b/target/debug/deps/libcfg_if-d561b8f41e038432.rlib differ
diff --git a/target/debug/deps/libchrono-8d62fe9ce7de8ad7.rlib b/target/debug/deps/libchrono-8d62fe9ce7de8ad7.rlib
new file mode 100644
index 0000000..01c383b
Binary files /dev/null and b/target/debug/deps/libchrono-8d62fe9ce7de8ad7.rlib differ
diff --git a/target/debug/deps/libcrypto-21fa3687288afd3d.rlib b/target/debug/deps/libcrypto-21fa3687288afd3d.rlib
new file mode 100644
index 0000000..b2a4f4d
Binary files /dev/null and b/target/debug/deps/libcrypto-21fa3687288afd3d.rlib differ
diff --git a/target/debug/deps/libdtoa-5b7f1650e7fc4bdd.rlib b/target/debug/deps/libdtoa-5b7f1650e7fc4bdd.rlib
new file mode 100644
index 0000000..164a202
Binary files /dev/null and b/target/debug/deps/libdtoa-5b7f1650e7fc4bdd.rlib differ
diff --git a/target/debug/deps/libemerald_core-962f3a9aa46868c9.rlib b/target/debug/deps/libemerald_core-962f3a9aa46868c9.rlib
new file mode 100644
index 0000000..06f28eb
Binary files /dev/null and b/target/debug/deps/libemerald_core-962f3a9aa46868c9.rlib differ
diff --git a/target/debug/deps/libfnv-fc1d5751a8057da0.rlib b/target/debug/deps/libfnv-fc1d5751a8057da0.rlib
new file mode 100644
index 0000000..1460c8b
Binary files /dev/null and b/target/debug/deps/libfnv-fc1d5751a8057da0.rlib differ
diff --git a/target/debug/deps/libforeign_types-4224a6bfe004c283.rlib b/target/debug/deps/libforeign_types-4224a6bfe004c283.rlib
new file mode 100644
index 0000000..ab6096f
Binary files /dev/null and b/target/debug/deps/libforeign_types-4224a6bfe004c283.rlib differ
diff --git a/target/debug/deps/libfutures-3c38b04c521398ed.rlib b/target/debug/deps/libfutures-3c38b04c521398ed.rlib
new file mode 100644
index 0000000..5803a6f
Binary files /dev/null and b/target/debug/deps/libfutures-3c38b04c521398ed.rlib differ
diff --git a/target/debug/deps/libgcc-313c6941d6ce9e4c.rlib b/target/debug/deps/libgcc-313c6941d6ce9e4c.rlib
new file mode 100644
index 0000000..9328868
Binary files /dev/null and b/target/debug/deps/libgcc-313c6941d6ce9e4c.rlib differ
diff --git a/target/debug/deps/libglob-3660eba282c5ea68.rlib b/target/debug/deps/libglob-3660eba282c5ea68.rlib
new file mode 100644
index 0000000..dfdaef3
Binary files /dev/null and b/target/debug/deps/libglob-3660eba282c5ea68.rlib differ
diff --git a/target/debug/deps/libglobset-90f8fd59e277122d.rlib b/target/debug/deps/libglobset-90f8fd59e277122d.rlib
new file mode 100644
index 0000000..907e9fd
Binary files /dev/null and b/target/debug/deps/libglobset-90f8fd59e277122d.rlib differ
diff --git a/target/debug/deps/libhttparse-f07a346cf686d3f4.rlib b/target/debug/deps/libhttparse-f07a346cf686d3f4.rlib
new file mode 100644
index 0000000..428014a
Binary files /dev/null and b/target/debug/deps/libhttparse-f07a346cf686d3f4.rlib differ
diff --git a/target/debug/deps/libhyper-ead1652240cc76c2.rlib b/target/debug/deps/libhyper-ead1652240cc76c2.rlib
new file mode 100644
index 0000000..6908a29
Binary files /dev/null and b/target/debug/deps/libhyper-ead1652240cc76c2.rlib differ
diff --git a/target/debug/deps/libhyper_native_tls-31a6910130851f5b.rlib b/target/debug/deps/libhyper_native_tls-31a6910130851f5b.rlib
new file mode 100644
index 0000000..50b899a
Binary files /dev/null and b/target/debug/deps/libhyper_native_tls-31a6910130851f5b.rlib differ
diff --git a/target/debug/deps/libidna-a551fee0f71fe929.rlib b/target/debug/deps/libidna-a551fee0f71fe929.rlib
new file mode 100644
index 0000000..a8a5b80
Binary files /dev/null and b/target/debug/deps/libidna-a551fee0f71fe929.rlib differ
diff --git a/target/debug/deps/libiovec-6456cca526bac37d.rlib b/target/debug/deps/libiovec-6456cca526bac37d.rlib
new file mode 100644
index 0000000..0776adc
Binary files /dev/null and b/target/debug/deps/libiovec-6456cca526bac37d.rlib differ
diff --git a/target/debug/deps/libitoa-a2260b7adc104971.rlib b/target/debug/deps/libitoa-a2260b7adc104971.rlib
new file mode 100644
index 0000000..c80d575
Binary files /dev/null and b/target/debug/deps/libitoa-a2260b7adc104971.rlib differ
diff --git a/target/debug/deps/libjsonrpc_core-ed36abfe18bb7119.rlib b/target/debug/deps/libjsonrpc_core-ed36abfe18bb7119.rlib
new file mode 100644
index 0000000..afd5273
Binary files /dev/null and b/target/debug/deps/libjsonrpc_core-ed36abfe18bb7119.rlib differ
diff --git a/target/debug/deps/libjsonrpc_minihttp_server-cd4c1136dac107ca.rlib b/target/debug/deps/libjsonrpc_minihttp_server-cd4c1136dac107ca.rlib
new file mode 100644
index 0000000..a4f4edd
Binary files /dev/null and b/target/debug/deps/libjsonrpc_minihttp_server-cd4c1136dac107ca.rlib differ
diff --git a/target/debug/deps/libjsonrpc_server_utils-7736c125518db8b3.rlib b/target/debug/deps/libjsonrpc_server_utils-7736c125518db8b3.rlib
new file mode 100644
index 0000000..ba8895b
Binary files /dev/null and b/target/debug/deps/libjsonrpc_server_utils-7736c125518db8b3.rlib differ
diff --git a/target/debug/deps/liblanguage_tags-dce561412cfa441f.rlib b/target/debug/deps/liblanguage_tags-dce561412cfa441f.rlib
new file mode 100644
index 0000000..7302921
Binary files /dev/null and b/target/debug/deps/liblanguage_tags-dce561412cfa441f.rlib differ
diff --git a/target/debug/deps/liblazy_static-18005fa1be5dd889.rlib b/target/debug/deps/liblazy_static-18005fa1be5dd889.rlib
new file mode 100644
index 0000000..1a76291
Binary files /dev/null and b/target/debug/deps/liblazy_static-18005fa1be5dd889.rlib differ
diff --git a/target/debug/deps/liblazycell-43df05f1cf6910d1.rlib b/target/debug/deps/liblazycell-43df05f1cf6910d1.rlib
new file mode 100644
index 0000000..0535ed1
Binary files /dev/null and b/target/debug/deps/liblazycell-43df05f1cf6910d1.rlib differ
diff --git a/target/debug/deps/liblibc-f4ccf2fa58092d85.rlib b/target/debug/deps/liblibc-f4ccf2fa58092d85.rlib
new file mode 100644
index 0000000..589bfbf
Binary files /dev/null and b/target/debug/deps/liblibc-f4ccf2fa58092d85.rlib differ
diff --git a/target/debug/deps/liblibflate-53626bc53c368b1f.rlib b/target/debug/deps/liblibflate-53626bc53c368b1f.rlib
new file mode 100644
index 0000000..0a9a358
Binary files /dev/null and b/target/debug/deps/liblibflate-53626bc53c368b1f.rlib differ
diff --git a/target/debug/deps/liblog-4cfe391024f1467d.rlib b/target/debug/deps/liblog-4cfe391024f1467d.rlib
new file mode 100644
index 0000000..5231f5e
Binary files /dev/null and b/target/debug/deps/liblog-4cfe391024f1467d.rlib differ
diff --git a/target/debug/deps/libmatches-e2a43ce3f52b9dcc.rlib b/target/debug/deps/libmatches-e2a43ce3f52b9dcc.rlib
new file mode 100644
index 0000000..0064255
Binary files /dev/null and b/target/debug/deps/libmatches-e2a43ce3f52b9dcc.rlib differ
diff --git a/target/debug/deps/libmemchr-69681615927cea24.rlib b/target/debug/deps/libmemchr-69681615927cea24.rlib
new file mode 100644
index 0000000..dca8ee5
Binary files /dev/null and b/target/debug/deps/libmemchr-69681615927cea24.rlib differ
diff --git a/target/debug/deps/libmime-4a0f41c031710506.rlib b/target/debug/deps/libmime-4a0f41c031710506.rlib
new file mode 100644
index 0000000..06b8f9a
Binary files /dev/null and b/target/debug/deps/libmime-4a0f41c031710506.rlib differ
diff --git a/target/debug/deps/libmio-24ed8f4e89aa6126.rlib b/target/debug/deps/libmio-24ed8f4e89aa6126.rlib
new file mode 100644
index 0000000..4b3c473
Binary files /dev/null and b/target/debug/deps/libmio-24ed8f4e89aa6126.rlib differ
diff --git a/target/debug/deps/libnative_tls-dbf47671f528aca2.rlib b/target/debug/deps/libnative_tls-dbf47671f528aca2.rlib
new file mode 100644
index 0000000..a552c2a
Binary files /dev/null and b/target/debug/deps/libnative_tls-dbf47671f528aca2.rlib differ
diff --git a/target/debug/deps/libnet2-be2dd9956e589540.rlib b/target/debug/deps/libnet2-be2dd9956e589540.rlib
new file mode 100644
index 0000000..1e9f806
Binary files /dev/null and b/target/debug/deps/libnet2-be2dd9956e589540.rlib differ
diff --git a/target/debug/deps/libnodrop-4031f32ae4cd9e4f.rlib b/target/debug/deps/libnodrop-4031f32ae4cd9e4f.rlib
new file mode 100644
index 0000000..bf6784f
Binary files /dev/null and b/target/debug/deps/libnodrop-4031f32ae4cd9e4f.rlib differ
diff --git a/target/debug/deps/libnum-031aff75c38d8f9c.rlib b/target/debug/deps/libnum-031aff75c38d8f9c.rlib
new file mode 100644
index 0000000..cef6136
Binary files /dev/null and b/target/debug/deps/libnum-031aff75c38d8f9c.rlib differ
diff --git a/target/debug/deps/libnum_bigint-45c792512cec32c2.rlib b/target/debug/deps/libnum_bigint-45c792512cec32c2.rlib
new file mode 100644
index 0000000..fbe65a9
Binary files /dev/null and b/target/debug/deps/libnum_bigint-45c792512cec32c2.rlib differ
diff --git a/target/debug/deps/libnum_complex-783eb5b936143d56.rlib b/target/debug/deps/libnum_complex-783eb5b936143d56.rlib
new file mode 100644
index 0000000..c568958
Binary files /dev/null and b/target/debug/deps/libnum_complex-783eb5b936143d56.rlib differ
diff --git a/target/debug/deps/libnum_cpus-1744e8bc49f70b5a.rlib b/target/debug/deps/libnum_cpus-1744e8bc49f70b5a.rlib
new file mode 100644
index 0000000..74d1aa2
Binary files /dev/null and b/target/debug/deps/libnum_cpus-1744e8bc49f70b5a.rlib differ
diff --git a/target/debug/deps/libnum_integer-dad7e7932a5f6c81.rlib b/target/debug/deps/libnum_integer-dad7e7932a5f6c81.rlib
new file mode 100644
index 0000000..4b2b6c6
Binary files /dev/null and b/target/debug/deps/libnum_integer-dad7e7932a5f6c81.rlib differ
diff --git a/target/debug/deps/libnum_iter-b399bbd189e5f67b.rlib b/target/debug/deps/libnum_iter-b399bbd189e5f67b.rlib
new file mode 100644
index 0000000..a94322d
Binary files /dev/null and b/target/debug/deps/libnum_iter-b399bbd189e5f67b.rlib differ
diff --git a/target/debug/deps/libnum_rational-425879638dc36b28.rlib b/target/debug/deps/libnum_rational-425879638dc36b28.rlib
new file mode 100644
index 0000000..bcf199f
Binary files /dev/null and b/target/debug/deps/libnum_rational-425879638dc36b28.rlib differ
diff --git a/target/debug/deps/libnum_traits-32c57ec3799391e2.rlib b/target/debug/deps/libnum_traits-32c57ec3799391e2.rlib
new file mode 100644
index 0000000..11684eb
Binary files /dev/null and b/target/debug/deps/libnum_traits-32c57ec3799391e2.rlib differ
diff --git a/target/debug/deps/libodds-7ba020b1d4c9ddc8.rlib b/target/debug/deps/libodds-7ba020b1d4c9ddc8.rlib
new file mode 100644
index 0000000..3359ee6
Binary files /dev/null and b/target/debug/deps/libodds-7ba020b1d4c9ddc8.rlib differ
diff --git a/target/debug/deps/libopenssl-9dbe084b5c8e2c23.rlib b/target/debug/deps/libopenssl-9dbe084b5c8e2c23.rlib
new file mode 100644
index 0000000..aa6cedc
Binary files /dev/null and b/target/debug/deps/libopenssl-9dbe084b5c8e2c23.rlib differ
diff --git a/target/debug/deps/libopenssl_sys-a633c1c1325f1b25.rlib b/target/debug/deps/libopenssl_sys-a633c1c1325f1b25.rlib
new file mode 100644
index 0000000..9cc2bd6
Binary files /dev/null and b/target/debug/deps/libopenssl_sys-a633c1c1325f1b25.rlib differ
diff --git a/target/debug/deps/libowning_ref-9ae3d472223e5e47.rlib b/target/debug/deps/libowning_ref-9ae3d472223e5e47.rlib
new file mode 100644
index 0000000..3d68381
Binary files /dev/null and b/target/debug/deps/libowning_ref-9ae3d472223e5e47.rlib differ
diff --git a/target/debug/deps/libparking_lot-3d4f92909099fe8c.rlib b/target/debug/deps/libparking_lot-3d4f92909099fe8c.rlib
new file mode 100644
index 0000000..e9165b4
Binary files /dev/null and b/target/debug/deps/libparking_lot-3d4f92909099fe8c.rlib differ
diff --git a/target/debug/deps/libparking_lot_core-1c8766a081215852.rlib b/target/debug/deps/libparking_lot_core-1c8766a081215852.rlib
new file mode 100644
index 0000000..0441245
Binary files /dev/null and b/target/debug/deps/libparking_lot_core-1c8766a081215852.rlib differ
diff --git a/target/debug/deps/libpercent_encoding-d4c121aa149b4b75.rlib b/target/debug/deps/libpercent_encoding-d4c121aa149b4b75.rlib
new file mode 100644
index 0000000..f5fbcf5
Binary files /dev/null and b/target/debug/deps/libpercent_encoding-d4c121aa149b4b75.rlib differ
diff --git a/target/debug/deps/libpkg_config-fdeeca4d6057a82a.rlib b/target/debug/deps/libpkg_config-fdeeca4d6057a82a.rlib
new file mode 100644
index 0000000..e8cc081
Binary files /dev/null and b/target/debug/deps/libpkg_config-fdeeca4d6057a82a.rlib differ
diff --git a/target/debug/deps/libquote-983cfcbeae6039c8.rlib b/target/debug/deps/libquote-983cfcbeae6039c8.rlib
new file mode 100644
index 0000000..8508c8e
Binary files /dev/null and b/target/debug/deps/libquote-983cfcbeae6039c8.rlib differ
diff --git a/target/debug/deps/librand-76456d761c2cb637.rlib b/target/debug/deps/librand-76456d761c2cb637.rlib
new file mode 100644
index 0000000..16e1c1b
Binary files /dev/null and b/target/debug/deps/librand-76456d761c2cb637.rlib differ
diff --git a/target/debug/deps/libregex-f57600d45f59abf1.rlib b/target/debug/deps/libregex-f57600d45f59abf1.rlib
new file mode 100644
index 0000000..4ae3dc8
Binary files /dev/null and b/target/debug/deps/libregex-f57600d45f59abf1.rlib differ
diff --git a/target/debug/deps/libregex_syntax-0240ebb185fe3635.rlib b/target/debug/deps/libregex_syntax-0240ebb185fe3635.rlib
new file mode 100644
index 0000000..cb263e8
Binary files /dev/null and b/target/debug/deps/libregex_syntax-0240ebb185fe3635.rlib differ
diff --git a/target/debug/deps/libreqwest-11a02eea9b02f172.rlib b/target/debug/deps/libreqwest-11a02eea9b02f172.rlib
new file mode 100644
index 0000000..a1f7df9
Binary files /dev/null and b/target/debug/deps/libreqwest-11a02eea9b02f172.rlib differ
diff --git a/target/debug/deps/librust_scrypt-99699b3fb55ece14.rlib b/target/debug/deps/librust_scrypt-99699b3fb55ece14.rlib
new file mode 100644
index 0000000..f5e32bc
Binary files /dev/null and b/target/debug/deps/librust_scrypt-99699b3fb55ece14.rlib differ
diff --git a/target/debug/deps/librustc_serialize-d05828e9f8a2cc23.rlib b/target/debug/deps/librustc_serialize-d05828e9f8a2cc23.rlib
new file mode 100644
index 0000000..301868a
Binary files /dev/null and b/target/debug/deps/librustc_serialize-d05828e9f8a2cc23.rlib differ
diff --git a/target/debug/deps/libscoped_tls-74736eecfdde68b3.rlib b/target/debug/deps/libscoped_tls-74736eecfdde68b3.rlib
new file mode 100644
index 0000000..692f2c7
Binary files /dev/null and b/target/debug/deps/libscoped_tls-74736eecfdde68b3.rlib differ
diff --git a/target/debug/deps/libsecp256k1-f043f04c53f9ffbd.rlib b/target/debug/deps/libsecp256k1-f043f04c53f9ffbd.rlib
new file mode 100644
index 0000000..ebf786a
Binary files /dev/null and b/target/debug/deps/libsecp256k1-f043f04c53f9ffbd.rlib differ
diff --git a/target/debug/deps/libserde-78efb8229e554e58.rlib b/target/debug/deps/libserde-78efb8229e554e58.rlib
new file mode 100644
index 0000000..b526df2
Binary files /dev/null and b/target/debug/deps/libserde-78efb8229e554e58.rlib differ
diff --git a/target/debug/deps/libserde-eaf5b137e24884e3.rlib b/target/debug/deps/libserde-eaf5b137e24884e3.rlib
new file mode 100644
index 0000000..67331d6
Binary files /dev/null and b/target/debug/deps/libserde-eaf5b137e24884e3.rlib differ
diff --git a/target/debug/deps/libserde_derive-73114808ba8f6d5d.so b/target/debug/deps/libserde_derive-73114808ba8f6d5d.so
new file mode 100755
index 0000000..5c8888d
Binary files /dev/null and b/target/debug/deps/libserde_derive-73114808ba8f6d5d.so differ
diff --git a/target/debug/deps/libserde_derive_internals-c02f12ad40a271f5.rlib b/target/debug/deps/libserde_derive_internals-c02f12ad40a271f5.rlib
new file mode 100644
index 0000000..6dbda63
Binary files /dev/null and b/target/debug/deps/libserde_derive_internals-c02f12ad40a271f5.rlib differ
diff --git a/target/debug/deps/libserde_json-792616b63a660205.rlib b/target/debug/deps/libserde_json-792616b63a660205.rlib
new file mode 100644
index 0000000..62938bb
Binary files /dev/null and b/target/debug/deps/libserde_json-792616b63a660205.rlib differ
diff --git a/target/debug/deps/libserde_json-8f3b4548b9ceb727.rlib b/target/debug/deps/libserde_json-8f3b4548b9ceb727.rlib
new file mode 100644
index 0000000..6cbdf9a
Binary files /dev/null and b/target/debug/deps/libserde_json-8f3b4548b9ceb727.rlib differ
diff --git a/target/debug/deps/libserde_urlencoded-387f5478e4c38fd5.rlib b/target/debug/deps/libserde_urlencoded-387f5478e4c38fd5.rlib
new file mode 100644
index 0000000..b4dabc1
Binary files /dev/null and b/target/debug/deps/libserde_urlencoded-387f5478e4c38fd5.rlib differ
diff --git a/target/debug/deps/libslab-18a7cdae03894a24.rlib b/target/debug/deps/libslab-18a7cdae03894a24.rlib
new file mode 100644
index 0000000..c460486
Binary files /dev/null and b/target/debug/deps/libslab-18a7cdae03894a24.rlib differ
diff --git a/target/debug/deps/libsmallvec-6d84811bc65077ef.rlib b/target/debug/deps/libsmallvec-6d84811bc65077ef.rlib
new file mode 100644
index 0000000..3275390
Binary files /dev/null and b/target/debug/deps/libsmallvec-6d84811bc65077ef.rlib differ
diff --git a/target/debug/deps/libsmallvec-6de0ad286fc318bd.rlib b/target/debug/deps/libsmallvec-6de0ad286fc318bd.rlib
new file mode 100644
index 0000000..607d376
Binary files /dev/null and b/target/debug/deps/libsmallvec-6de0ad286fc318bd.rlib differ
diff --git a/target/debug/deps/libstable_deref_trait-5e21575791d0acc6.rlib b/target/debug/deps/libstable_deref_trait-5e21575791d0acc6.rlib
new file mode 100644
index 0000000..2b60488
Binary files /dev/null and b/target/debug/deps/libstable_deref_trait-5e21575791d0acc6.rlib differ
diff --git a/target/debug/deps/libsyn-b177bd5a479c7be8.rlib b/target/debug/deps/libsyn-b177bd5a479c7be8.rlib
new file mode 100644
index 0000000..095f62e
Binary files /dev/null and b/target/debug/deps/libsyn-b177bd5a479c7be8.rlib differ
diff --git a/target/debug/deps/libsynom-538247bd997586d9.rlib b/target/debug/deps/libsynom-538247bd997586d9.rlib
new file mode 100644
index 0000000..d2152e7
Binary files /dev/null and b/target/debug/deps/libsynom-538247bd997586d9.rlib differ
diff --git a/target/debug/deps/libtake-8fc720ef0ff02095.rlib b/target/debug/deps/libtake-8fc720ef0ff02095.rlib
new file mode 100644
index 0000000..4a74dbd
Binary files /dev/null and b/target/debug/deps/libtake-8fc720ef0ff02095.rlib differ
diff --git a/target/debug/deps/libthread_id-9aba8731d7b3c119.rlib b/target/debug/deps/libthread_id-9aba8731d7b3c119.rlib
new file mode 100644
index 0000000..87d3071
Binary files /dev/null and b/target/debug/deps/libthread_id-9aba8731d7b3c119.rlib differ
diff --git a/target/debug/deps/libthread_local-273e90e65080c55f.rlib b/target/debug/deps/libthread_local-273e90e65080c55f.rlib
new file mode 100644
index 0000000..889109a
Binary files /dev/null and b/target/debug/deps/libthread_local-273e90e65080c55f.rlib differ
diff --git a/target/debug/deps/libtime-162277ce7a864579.rlib b/target/debug/deps/libtime-162277ce7a864579.rlib
new file mode 100644
index 0000000..96582f2
Binary files /dev/null and b/target/debug/deps/libtime-162277ce7a864579.rlib differ
diff --git a/target/debug/deps/libtokio_core-a08697205148329f.rlib b/target/debug/deps/libtokio_core-a08697205148329f.rlib
new file mode 100644
index 0000000..48bca92
Binary files /dev/null and b/target/debug/deps/libtokio_core-a08697205148329f.rlib differ
diff --git a/target/debug/deps/libtokio_io-b05415e36730f2f0.rlib b/target/debug/deps/libtokio_io-b05415e36730f2f0.rlib
new file mode 100644
index 0000000..924bb83
Binary files /dev/null and b/target/debug/deps/libtokio_io-b05415e36730f2f0.rlib differ
diff --git a/target/debug/deps/libtokio_minihttp-e409a401cf20ace6.rlib b/target/debug/deps/libtokio_minihttp-e409a401cf20ace6.rlib
new file mode 100644
index 0000000..27c0da0
Binary files /dev/null and b/target/debug/deps/libtokio_minihttp-e409a401cf20ace6.rlib differ
diff --git a/target/debug/deps/libtokio_proto-f8c0eaada8e5f1d7.rlib b/target/debug/deps/libtokio_proto-f8c0eaada8e5f1d7.rlib
new file mode 100644
index 0000000..c73af18
Binary files /dev/null and b/target/debug/deps/libtokio_proto-f8c0eaada8e5f1d7.rlib differ
diff --git a/target/debug/deps/libtokio_service-51008e9ef79a4b9d.rlib b/target/debug/deps/libtokio_service-51008e9ef79a4b9d.rlib
new file mode 100644
index 0000000..b5183a6
Binary files /dev/null and b/target/debug/deps/libtokio_service-51008e9ef79a4b9d.rlib differ
diff --git a/target/debug/deps/libtraitobject-61e8f3406c7e9438.rlib b/target/debug/deps/libtraitobject-61e8f3406c7e9438.rlib
new file mode 100644
index 0000000..45f7ed9
Binary files /dev/null and b/target/debug/deps/libtraitobject-61e8f3406c7e9438.rlib differ
diff --git a/target/debug/deps/libtypeable-f651278f97cad1e8.rlib b/target/debug/deps/libtypeable-f651278f97cad1e8.rlib
new file mode 100644
index 0000000..1b8dcc6
Binary files /dev/null and b/target/debug/deps/libtypeable-f651278f97cad1e8.rlib differ
diff --git a/target/debug/deps/libunicase-fde571b29b05394a.rlib b/target/debug/deps/libunicase-fde571b29b05394a.rlib
new file mode 100644
index 0000000..f0bd1b6
Binary files /dev/null and b/target/debug/deps/libunicase-fde571b29b05394a.rlib differ
diff --git a/target/debug/deps/libunicode_bidi-f32658eb61912801.rlib b/target/debug/deps/libunicode_bidi-f32658eb61912801.rlib
new file mode 100644
index 0000000..674f3ba
Binary files /dev/null and b/target/debug/deps/libunicode_bidi-f32658eb61912801.rlib differ
diff --git a/target/debug/deps/libunicode_normalization-5554c8b28de87bfc.rlib b/target/debug/deps/libunicode_normalization-5554c8b28de87bfc.rlib
new file mode 100644
index 0000000..66e0fe0
Binary files /dev/null and b/target/debug/deps/libunicode_normalization-5554c8b28de87bfc.rlib differ
diff --git a/target/debug/deps/libunicode_xid-c5a7e4f1b4bcb78b.rlib b/target/debug/deps/libunicode_xid-c5a7e4f1b4bcb78b.rlib
new file mode 100644
index 0000000..7e180d8
Binary files /dev/null and b/target/debug/deps/libunicode_xid-c5a7e4f1b4bcb78b.rlib differ
diff --git a/target/debug/deps/libunreachable-9bd306f72d3bd51e.rlib b/target/debug/deps/libunreachable-9bd306f72d3bd51e.rlib
new file mode 100644
index 0000000..a115547
Binary files /dev/null and b/target/debug/deps/libunreachable-9bd306f72d3bd51e.rlib differ
diff --git a/target/debug/deps/liburl-d8313694214b880a.rlib b/target/debug/deps/liburl-d8313694214b880a.rlib
new file mode 100644
index 0000000..0ca4962
Binary files /dev/null and b/target/debug/deps/liburl-d8313694214b880a.rlib differ
diff --git a/target/debug/deps/libutf8_ranges-b81dc320c0a952bb.rlib b/target/debug/deps/libutf8_ranges-b81dc320c0a952bb.rlib
new file mode 100644
index 0000000..75c6585
Binary files /dev/null and b/target/debug/deps/libutf8_ranges-b81dc320c0a952bb.rlib differ
diff --git a/target/debug/deps/libuuid-85cd019686aab639.rlib b/target/debug/deps/libuuid-85cd019686aab639.rlib
new file mode 100644
index 0000000..5f36356
Binary files /dev/null and b/target/debug/deps/libuuid-85cd019686aab639.rlib differ
diff --git a/target/debug/deps/libversion_check-2b79b50ed3fe47cf.rlib b/target/debug/deps/libversion_check-2b79b50ed3fe47cf.rlib
new file mode 100644
index 0000000..b321d4c
Binary files /dev/null and b/target/debug/deps/libversion_check-2b79b50ed3fe47cf.rlib differ
diff --git a/target/debug/deps/libvoid-6c52c4ddaea6e3db.rlib b/target/debug/deps/libvoid-6c52c4ddaea6e3db.rlib
new file mode 100644
index 0000000..a0e4047
Binary files /dev/null and b/target/debug/deps/libvoid-6c52c4ddaea6e3db.rlib differ
diff --git a/target/debug/deps/rust_scrypt-086575ba696fbdde.0.o b/target/debug/deps/rust_scrypt-086575ba696fbdde.0.o
new file mode 100644
index 0000000..aa05f80
Binary files /dev/null and b/target/debug/deps/rust_scrypt-086575ba696fbdde.0.o differ
diff --git a/target/debug/deps/rust_scrypt-086575ba696fbdde.crate.metadata.o b/target/debug/deps/rust_scrypt-086575ba696fbdde.crate.metadata.o
new file mode 100644
index 0000000..d4c9aa9
Binary files /dev/null and b/target/debug/deps/rust_scrypt-086575ba696fbdde.crate.metadata.o differ
diff --git a/target/debug/deps/rust_scrypt-086575ba696fbdde.d b/target/debug/deps/rust_scrypt-086575ba696fbdde.d
new file mode 100644
index 0000000..e65ced7
--- /dev/null
+++ b/target/debug/deps/rust_scrypt-086575ba696fbdde.d
@@ -0,0 +1,5 @@
+/home/k2/Workshop/rust-scrypt/target/debug/deps/rust_scrypt-086575ba696fbdde: src/lib.rs
+
+/home/k2/Workshop/rust-scrypt/target/debug/deps/rust_scrypt-086575ba696fbdde.d: src/lib.rs
+
+src/lib.rs:
diff --git a/target/debug/librust_scrypt.rlib b/target/debug/librust_scrypt.rlib
new file mode 100644
index 0000000..f5e32bc
Binary files /dev/null and b/target/debug/librust_scrypt.rlib differ