aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Lloyd <[email protected]>2019-04-30 10:16:29 -0400
committerJack Lloyd <[email protected]>2019-04-30 10:16:29 -0400
commit1aeddd8b47ead54d938ee05bb358ba974529502f (patch)
treeee6a91c93f44aa6e93f5a714d6e08ecf5f090cf3
parenta3655a15e84f9496fec587e72d923be4c1901137 (diff)
parentc060827c1e6e662fd51fbb34d0300ff09067e586 (diff)
Merge GH #1923 Improve SRP6 tests
-rw-r--r--src/lib/misc/srp6/srp6.cpp46
-rw-r--r--src/lib/misc/srp6/srp6.h70
-rw-r--r--src/lib/pubkey/dl_group/dl_group.h2
-rw-r--r--src/tests/data/srp6a.vec317
-rw-r--r--src/tests/test_srp6.cpp85
-rw-r--r--src/tests/tests.h2
6 files changed, 502 insertions, 20 deletions
diff --git a/src/lib/misc/srp6/srp6.cpp b/src/lib/misc/srp6/srp6.cpp
index 825c38589..0bd9b192a 100644
--- a/src/lib/misc/srp6/srp6.cpp
+++ b/src/lib/misc/srp6/srp6.cpp
@@ -1,6 +1,6 @@
/*
* SRP-6a (RFC 5054 compatatible)
-* (C) 2011,2012 Jack Lloyd
+* (C) 2011,2012,2019 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -82,9 +82,22 @@ srp6_client_agree(const std::string& identifier,
const BigInt& B,
RandomNumberGenerator& rng)
{
- const size_t a_bits = 256;
-
DL_Group group(group_id);
+ const size_t a_bits = group.exponent_bits();
+
+ return srp6_client_agree(identifier, password, group, hash_id, salt, B, a_bits, rng);
+ }
+
+std::pair<BigInt, SymmetricKey>
+srp6_client_agree(const std::string& identifier,
+ const std::string& password,
+ const DL_Group& group,
+ const std::string& hash_id,
+ const std::vector<uint8_t>& salt,
+ const BigInt& B,
+ const size_t a_bits,
+ RandomNumberGenerator& rng)
+ {
const BigInt& g = group.get_g();
const BigInt& p = group.get_p();
@@ -117,10 +130,18 @@ BigInt generate_srp6_verifier(const std::string& identifier,
const std::string& group_id,
const std::string& hash_id)
{
- const BigInt x = compute_x(hash_id, identifier, password, salt);
-
DL_Group group(group_id);
- // FIXME: x should be size of hash fn
+ return generate_srp6_verifier(identifier, password, salt, group, hash_id);
+ }
+
+BigInt generate_srp6_verifier(const std::string& identifier,
+ const std::string& password,
+ const std::vector<uint8_t>& salt,
+ const DL_Group& group,
+ const std::string& hash_id)
+ {
+ const BigInt x = compute_x(hash_id, identifier, password, salt);
+ // FIXME: x should be size of hash fn so avoid computing x.bits() here
return group.power_g_p(x, x.bits());
}
@@ -129,9 +150,18 @@ BigInt SRP6_Server_Session::step1(const BigInt& v,
const std::string& hash_id,
RandomNumberGenerator& rng)
{
- const size_t b_bits = 256;
-
DL_Group group(group_id);
+ const size_t b_bits = group.exponent_bits();
+
+ return this->step1(v, group, hash_id, b_bits, rng);
+ }
+
+BigInt SRP6_Server_Session::step1(const BigInt& v,
+ const DL_Group& group,
+ const std::string& hash_id,
+ size_t b_bits,
+ RandomNumberGenerator& rng)
+ {
const BigInt& g = group.get_g();
const BigInt& p = group.get_p();
diff --git a/src/lib/misc/srp6/srp6.h b/src/lib/misc/srp6/srp6.h
index ad880946a..cf41b1ef2 100644
--- a/src/lib/misc/srp6/srp6.h
+++ b/src/lib/misc/srp6/srp6.h
@@ -1,6 +1,6 @@
/*
* SRP-6a (RFC 5054 compatatible)
-* (C) 2011,2012 Jack Lloyd
+* (C) 2011,2012,2019 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -14,6 +14,7 @@
namespace Botan {
+class DL_Group;
class RandomNumberGenerator;
/**
@@ -37,6 +38,30 @@ BOTAN_PUBLIC_API(2,0) srp6_client_agree(const std::string& username,
const BigInt& B,
RandomNumberGenerator& rng);
+
+/**
+* SRP6a Client side
+* @param username the username we are attempting login for
+* @param password the password we are attempting to use
+* @param group specifies the shared SRP group
+* @param hash_id specifies a secure hash function
+* @param salt is the salt value sent by the server
+* @param B is the server's public value
+* @param a_bits size of secret exponent in bits
+* @param rng is a random number generator
+*
+* @return (A,K) the client public key and the shared secret key
+*/
+std::pair<BigInt,SymmetricKey> BOTAN_PUBLIC_API(2,11)
+ srp6_client_agree(const std::string& username,
+ const std::string& password,
+ const DL_Group& group,
+ const std::string& hash_id,
+ const std::vector<uint8_t>& salt,
+ const BigInt& B,
+ size_t a_bits,
+ RandomNumberGenerator& rng);
+
/**
* Generate a new SRP-6 verifier
* @param identifier a username or other client identifier
@@ -45,11 +70,27 @@ BOTAN_PUBLIC_API(2,0) srp6_client_agree(const std::string& username,
* @param group_id specifies the shared SRP group
* @param hash_id specifies a secure hash function
*/
-BigInt BOTAN_PUBLIC_API(2,0) generate_srp6_verifier(const std::string& identifier,
- const std::string& password,
- const std::vector<uint8_t>& salt,
- const std::string& group_id,
- const std::string& hash_id);
+BigInt BOTAN_PUBLIC_API(2,0)
+ generate_srp6_verifier(const std::string& identifier,
+ const std::string& password,
+ const std::vector<uint8_t>& salt,
+ const std::string& group_id,
+ const std::string& hash_id);
+
+/**
+* Generate a new SRP-6 verifier
+* @param identifier a username or other client identifier
+* @param password the secret used to authenticate user
+* @param salt a randomly chosen value, at least 128 bits long
+* @param group_id specifies the shared SRP group
+* @param hash_id specifies a secure hash function
+*/
+BigInt BOTAN_PUBLIC_API(2,11)
+ generate_srp6_verifier(const std::string& identifier,
+ const std::string& password,
+ const std::vector<uint8_t>& salt,
+ const DL_Group& group,
+ const std::string& hash_id);
/**
* Return the group id for this SRP param set, or else thrown an
@@ -80,6 +121,23 @@ class BOTAN_PUBLIC_API(2,0) SRP6_Server_Session final
RandomNumberGenerator& rng);
/**
+ * Server side step 1
+ * This version of step1 added in 2.11
+ *
+ * @param v the verification value saved from client registration
+ * @param group the SRP group
+ * @param hash_id the SRP hash in use
+ * @param rng a random number generator
+ * @param b_bits size of secret exponent in bits
+ * @return SRP-6 B value
+ */
+ BigInt step1(const BigInt& v,
+ const DL_Group& group,
+ const std::string& hash_id,
+ const size_t b_bits,
+ RandomNumberGenerator& rng);
+
+ /**
* Server side step 2
* @param A the client's value
* @return shared symmetric key
diff --git a/src/lib/pubkey/dl_group/dl_group.h b/src/lib/pubkey/dl_group/dl_group.h
index 43756c806..5ec0bfe9d 100644
--- a/src/lib/pubkey/dl_group/dl_group.h
+++ b/src/lib/pubkey/dl_group/dl_group.h
@@ -56,7 +56,7 @@ class BOTAN_PUBLIC_API(2,0) DL_Group final
* the default values from the file policy.cpp will be used. For instance,
* use "modp/ietf/3072".
*/
- DL_Group(const std::string& name);
+ explicit DL_Group(const std::string& name);
/**
* Create a new group randomly.
diff --git a/src/tests/data/srp6a.vec b/src/tests/data/srp6a.vec
new file mode 100644
index 000000000..aa1435d7b
--- /dev/null
+++ b/src/tests/data/srp6a.vec
@@ -0,0 +1,317 @@
+
+# From RFC 5054
+
+N = 0xeeaf0ab9adb38dd69c33f80afa8fc5e86072618775ff3c0b9ea2314c9c256576d674df7496ea81d3383b4813d692c6e0e0d5d8e250b98be48e495c1d6089dad15dc7d7b46154d6b6ce8ef4ad69b15d4982559b297bcf1885c529f566660e57ec68edbc3c05726cc02fd4cbf4976eaa9afd5138fe8376435b9fc61d2fc0eb06e3
+g = 2
+
+I = alice
+P = password123
+s = beb25379d1a8581eb5a727673a2441ee
+a = 60975527035cf2ad1989806f0407210bc81edc04e2762a56afd529ddda2d4393
+b = e487cb59d31ac550471e81f00f6928e01dda08e974a004f49e61f5d105284d20
+
+Hash = SHA-1
+v = 0x7e273de8696ffc4f4e337d05b4b375beb0dde1569e8fa00a9886d8129bada1f1822223ca1a605b530e379ba4729fdc59f105b4787e5186f5c671085a1447b52a48cf1970b4fb6f8400bbf4cebfbb168152e08ab5ea53d15c1aff87b2b9da6e04e058ad51cc72bfc9033b564e26480d78e955a5e29e7ab245db2be315e2099afb
+A = 0x61d5e490f6f1b79547b0704c436f523dd0e560f0c64115bb72557ec44352e8903211c04692272d8b2d1a5358a2cf1b6e0bfcf99f921530ec8e39356179eae45e42ba92aeaced825171e1e8b9af6d9c03e1327f44be087ef06530e69f66615261eef54073ca11cf5858f0edfdfe15efeab349ef5d76988a3672fac47b0769447b
+B = 0xbd0c61512c692c0cb6d041fa01bb152d4916a1e77af46ae105393011baf38964dc46a0670dd125b95a981652236f99d9b681cbf87837ec996c6da04453728610d0c6ddb58b318885d7d82c7f8deb75ce7bd4fbaa37089e6f9c6059f388838e7a00030b331eb76840910440b1b27aaeaeeb4012b7d7665238a8e3fb004b117b58
+S = b0dc82babcf30674ae450c0287745e7990a3381f63b387aaf271a10d233861e359b48220f7c4693c9ae12b0a6f67809f0876e2d013800d6c41bb59b6d5979b5c00a172b4a2a5903a0bdcaf8a709585eb2afafa8f3499b200210dcc1f10eb33943cd67fc88a2f39a4be5bec4ec0a3212dc346d7e474b29ede8a469ffeca686e5a
+
+# All remaining tests from https://github.com/secure-remote-password/test-vectors
+
+Hash = SHA-256
+v = 0x27e2855ac715f625981dba238667955db341a3bdd919868943bc049736c7804cd8e0507dfefbf5b8573f5aae7bac19b257034254119ab520e1f7cf3f45d01b159016847201d14c8dc95ec34e8b26ee255bc4cb28d4f97e0db97b65bdd196c4d2951cd84f493afd7b34b90984357988601a3643358b81689dfd0cb0d21e21cf6e
+A = 0x61d5e490f6f1b79547b0704c436f523dd0e560f0c64115bb72557ec44352e8903211c04692272d8b2d1a5358a2cf1b6e0bfcf99f921530ec8e39356179eae45e42ba92aeaced825171e1e8b9af6d9c03e1327f44be087ef06530e69f66615261eef54073ca11cf5858f0edfdfe15efeab349ef5d76988a3672fac47b0769447b
+B = 0x439b7630ec82c94d3bbd466a068d663a40b8d5b1d9b006ba43f5d715498088cca8547bbe3de6406c79f15ffa7356bc93580e478322daf8b2d014347859234f01555c457ab8b7f214875224fc9bfd07a68f37bad4d74bc8467ce10ea39301d3604e91fff5f881d52c558187e68fac3268df2897307da5c58a8c667e0fa8dc837e
+S = 7094d74b440ea4bffa2752694f19600268d61893ad55cac759a18378dce55020742df26f9696515482626372af87d44788d931e60ba0d4d8b31984b30ba285d5db443753ade4504ae124eb63d16db568e6850adf953b353c1255e8ec230e59a904f3784002845a31d12d8f448dd6d1bc3ecded0bba328046b907546f9e3b338c
+
+Hash = SHA-384
+v = 0x4c06965cf41b74644efe3ea5d8d7d02e9155063a9323e6255013c4ef55500ccd385c0458a571cbf6b626e2fc166f0d2e62ed06fc2bb1bbf04193d8028f4f227f8e8516e7afe17dddc5f492d6183a73c4eb64a94d53def53aed62e7989eebeefa23420b73008df74f3e0adef67a28c87a2f03d22beda3355d4d200b2bb248b727
+A = 0x61d5e490f6f1b79547b0704c436f523dd0e560f0c64115bb72557ec44352e8903211c04692272d8b2d1a5358a2cf1b6e0bfcf99f921530ec8e39356179eae45e42ba92aeaced825171e1e8b9af6d9c03e1327f44be087ef06530e69f66615261eef54073ca11cf5858f0edfdfe15efeab349ef5d76988a3672fac47b0769447b
+B = 0xb31489c905db003ded83e9861613df9d72f28a738e4baeb0e10c7f67faa51ed230d87e8d13aaf15e39dd9f8a5d43335570c7c56412495a257d12d3aa5b6fb76c912af20498935b6bb8340102695756d72267e81bf3ad169f4b89ce499b7502327471dddf9b8fa145c1ac6cfcdc32e6ee715dd1f8a9f589db21784cede4b6feab
+S = d8dc67c68957a19d8cc45a0979477f50cfa149fb8dbd8bc4520523fd6d9658bc4fe269d5531a3e14b410d96e3ea15de233e57efce49f90306bbc25c24eaf94cdd97e6f2e29c5ddeb1e9617f4c76adc0a17d63c34f8b408d296121a8533b9437372e5eee78834727d4e1d2ed06da4de24d9ce844a8fdfb5e8d9c4a9bfd1e8ebda
+
+Hash = SHA-512
+v = 0xe714706a2a6c6c0478444006a15ea8625943abdfa2c0ac9085cb174623304b71a55fd9a4114e089a05cd0e898b48294b6c842b333ce8141afce3fa54dd8d0ed6a950642ab0066858456219f88038d68fc4affcaabfec4044ba484719addf2fe31ab5f02bbcaac55b5765fb1827d9e7de8150c5ba6c891da9cbbe1b31f3b70b3f
+A = 0x61d5e490f6f1b79547b0704c436f523dd0e560f0c64115bb72557ec44352e8903211c04692272d8b2d1a5358a2cf1b6e0bfcf99f921530ec8e39356179eae45e42ba92aeaced825171e1e8b9af6d9c03e1327f44be087ef06530e69f66615261eef54073ca11cf5858f0edfdfe15efeab349ef5d76988a3672fac47b0769447b
+B = 0x27f876cfb2079a4eaeb6a54407e212362a122d727fbe987be5e094baf3de39549f48559040f786028364d93264258c07aa33e65951147a87a2a6c256c9a9d137eda62f6ea1485ce3f5da4e7833c2a14fa25d32376a5c08c5e5ec5a18952f966b43759280edfbb4474e3c88b87cd0c2d2eb3b863219fd2e7e382d459d3b9c702c
+S = b91800202d0fb90ddee952e8d8bd3276530f0f73f0e9f7a73315bf477d7b208fc5e452d261db645c16f62e3b9b8cc9f43a45b99b384be5a55fe13273039893a39d051ac4926b9d27f4a696b867ce23e8a342bd770a059e6a306828032a712fe6254d690205931019a4009c050767b7c422eba948797deb05b6c61e0398499812
+
+Hash = BLAKE2b(224)
+v = 0x29c40b070c823e6b9e1ae5961c18ad37fb5d3959ab82d5798313e043d621c61f4f59ba7f9ed14c2b0db47559ba3da166165d85d2a2d5756f5169a7731555329fe7e38baf8e4d4e30b1997c8cc1a92870b3e33402ed9b8f7e6c9bf0f879c47bc65ed1adde9a8af178275483e57ab6a023ad9936b8bbd1c2a917b5c28b17e5747c
+A = 0x61d5e490f6f1b79547b0704c436f523dd0e560f0c64115bb72557ec44352e8903211c04692272d8b2d1a5358a2cf1b6e0bfcf99f921530ec8e39356179eae45e42ba92aeaced825171e1e8b9af6d9c03e1327f44be087ef06530e69f66615261eef54073ca11cf5858f0edfdfe15efeab349ef5d76988a3672fac47b0769447b
+B = 0x911effca6f2fda7613df7d8e397451fa9aef2159f68f015e12f6ceb269930156fef6c6ffdf8db6ffb290395845b33408fd0d007077ffcf23e28e1729c2b2a37355cbec9256ae9e0164b28fe4a9bfa0ca45aaa77c20ba2ff4b44907faa452bec520071abb5108975809606f241290d56ec6dc7c57541c0ce08c52640f1b5b482c
+S = 5f2402280089a0c2732b46befacbbc0d446ef8c1389942f0ab7bca597841545a92d21be95ffb9e7f242deaa318c5931904f19f47dd19f98d9163b6f55b4356894f8ca18b49298cdbe8a91e98af590b4588341f16c3ecbe50cfe90e573af86db0d397b5ac4b539ac77552938e49999f460480d7abd0131c5e7d503e47357afcad
+
+Hash = BLAKE2b(256)
+v = 0x683c1250e6d60e75bc359ec64d3ee7b925a26801b00b3b7f94093a965b632a10c10a0f238a4892b279c32069dc704dfff81768bf9024d8eb453ea31d7cf99359548b52879e817fd7b4526df46a024dbf4a4d7cd25e3ff62456e782210b59913a8eaa50e569ab5ef9c875410b30e74c99b9163e67952d7c194e180ded9aa3cff6
+A = 0x61d5e490f6f1b79547b0704c436f523dd0e560f0c64115bb72557ec44352e8903211c04692272d8b2d1a5358a2cf1b6e0bfcf99f921530ec8e39356179eae45e42ba92aeaced825171e1e8b9af6d9c03e1327f44be087ef06530e69f66615261eef54073ca11cf5858f0edfdfe15efeab349ef5d76988a3672fac47b0769447b
+B = 0x3ed04961d1f26299e0f72e7b18d661f48bd009e7bf7acaf2eeced69a8f0a770a80ef1ed722decfb48284cbbd8f22a3982fdbd2eb027ea3de6718699f5b2ca145c84da3089d8496d5f130ce2c9513443d887a9fd0023f9aa29fad91211f5ee0fbf647fde5229dab0248f33f7fa11bd950113ae6cfbc69dc3212b55f3105442269
+S = a26ce07dae1be155afebc63d0b21073c97ff79bffd113ebb9ca0952d8cf0bac3b5823515cd94d974b41a6a63811956c765990b02b9bbccceab31328567d6804a44a52ced3e49483eb3cdd600db67ba86ff89e6586bde98d42727d6e024335b2512dca95a5c740f50abbb1f4ced36b832ab01e8422fc87931fe8144b3cb8a62c2
+
+Hash = BLAKE2b(384)
+v = 0x0bbf004c1be71bc1622c3c6ffe9ce18748d50e947be62a3e90696cdc6e2eaa5cc673a758c0c432a353d3f7ba0f20cc23654aadf98a373ab4c696ef33bd87cae71868cd8ea0c054706cc0b4bdda7fb65275ee44eeb90f34eca3d31354a65fe549548660ec302e20079700f4dbb4c7d46e6f5eda87d415154168a9d311b2767b3f
+A = 0x61d5e490f6f1b79547b0704c436f523dd0e560f0c64115bb72557ec44352e8903211c04692272d8b2d1a5358a2cf1b6e0bfcf99f921530ec8e39356179eae45e42ba92aeaced825171e1e8b9af6d9c03e1327f44be087ef06530e69f66615261eef54073ca11cf5858f0edfdfe15efeab349ef5d76988a3672fac47b0769447b
+B = 0xc6e8d9de8b1f0b7842c874e7b50257c8e7aa6d7945cf264aa4ab87c9c3eadb2408c1bdad7c0befe4823e446017b2933ec23a09563c30fc184b86f0e72387c27ee71caeb74b0fb387a3378ec4784eb62b465853bf5563cd21ee0f0c5eab48571d516b195f4ffdc2f545fa35f8988bf7a88dfc9d037d3db80e71c8f1c33e03c403
+S = 82966e4c440143726f54b158cbf3427f576f15d84ee762699e2022f24ff65608c237c1497b0a40ef5983aa6983fd3fe9272d001b25ff69815a09ee4be7ab4f9044140d54f00191d5bf4960be7ccff2221df75ca43564ad89319a8c17b2f01ef870e9495cb2b74735cec6dad9af57768b75182444fb4eee871f1509f9027fc068
+
+Hash = BLAKE2b(512)
+v = 0x8cb3f772b67d3d7b44d07840b9bf0c5f492f7e85aa337f96aface5b12f8036ada1bb76583753fca89858dea5f33c646208e31b72bd6fe9c27e4ff5e68f211b52a1726cacd9bbb885b0f0c327b387a658a84c45b27a108488b1bac6618744af5675266795f62941dfecc7a61f4ce59b4f9c1f92dca5e4d4affe6c2d4cbcb76627
+A = 0x61d5e490f6f1b79547b0704c436f523dd0e560f0c64115bb72557ec44352e8903211c04692272d8b2d1a5358a2cf1b6e0bfcf99f921530ec8e39356179eae45e42ba92aeaced825171e1e8b9af6d9c03e1327f44be087ef06530e69f66615261eef54073ca11cf5858f0edfdfe15efeab349ef5d76988a3672fac47b0769447b
+B = 0x4f0571ed14e68b76b4999c238093048187501c58b9fdf653c06837924a8f996a543d72c734ec6793f9fffba7fb65c1ebc5d8e28ad0aeb21cdb86d71ed36673d71878f0d3d8517781ae676f16164e8e7111c162fbed32fa6bcc3e88287222a434ded9f5e5352059cd91ffc839d6d3c6bce0eba4027cc04b4244e27d723be2e197
+S = d9d6c9abf277b0052e40df3a031358c03166e7f815425cca1abaaa637303184731dcdfdcc8c786ea164766eeab9fcd135c9cf8f6f7eb0da8f306543881a22f06a0b6ebd7498c72bcc520614e5af221dafb2fba19f45da6943f9552bb65fcb3819c66771dc180dd083da822862c4cd7d09d9e260c5f7657d06d40fcbd14bced40
+
+N = 0x9def3cafb939277ab1f12a8617a47bbbdba51df499ac4c80beeea9614b19cc4d5f4f5f556e27cbde51c6a94be4607a291558903ba0d0f84380b655bb9a22e8dcdf028a7cec67f0d08134b1c8b97989149b609e0be3bab63d47548381dbc5b1fc764e3f4b53dd9da1158bfd3e2b9c8cf56edf019539349627db2fd53d24b7c48665772e437d6c7f8ce442734af7ccb7ae837c264ae3a9beb87f8a2fe9b8b5292e5a021fff5e91479e8ce7a28c2442c6f315180f93499a234dcf76e3fed135f9bb
+g = 2
+
+Hash = SHA-1
+v = 0x661b6fea4bbe1a09df5a17a9adf65d8ae890aa2f2ea450efb5200a5c5dae98fa2ff0677ebb8c70012cc41b344a18d10c79a64a7ac6b392db99e0c8f16d7a50adbe2955103dd38e5c5a287da9f4264cf93fedff3aa6ce47f18a53ec41ea2e7bf36c53de4b223266558dc0e6ddec513e059b0879112637c7edca8516338a4b5acf4d634133db26ba80870b1eb342ad68c956f71a03171d23a76a4c735199027155b40103caecc131ded02a2664c4e17a0aad2b204d600bb9bbdab7387b130c00dd
+A = 0x6dc951a17f41ab362936a100f0dc2167fcdb76c537a2788fcb201cda999556cfb20fbfc29d3a108dad2e7edd7f82f2fdda964351e509aff3002837f4afa676630c2ce9192d69def5a8452804b0e32a37659396c39c2a2d114a3cab02ab70fca321224049c5f4d13dc0bc810143832ea6d78e5b3be5497afbe27dfd76d01e8f649437637eacb376fa08d31a759041362fc682408864925c02bbb0ca9bb5342bbc3c686dddcccbb65b24e1ba745f50a8ce91cf779586a811a39eea12f8063192e1
+B = 0x314614582b28534282b61d2c89814558d6081be22453fe211121a020d672775086771fc444daaedceb8a94acaadbf0995329959f29c87525c72045c89af70b5f47c120525c9ea5444344554c5dc18f16a00ecd5e6180230416fe52264e91cd6586c46f538644b49477cce705d43e5c3cfcc64b21562666298d87eb5798e891dbd575d7e30e01af4934c0c66ae0b73b6d7514948433214547d347e3405fdd38326b047b9f776d0dd7b7a47574fb3de3c637c007c7ee8357e182872daf47e4af12
+S = 71463717c0c5e9b014df2f53147fda925567066585edcf3b97af5e105f47790956ff32b563346d6f409c64124bb6350f98bfaeb9be83ad3b5392e4e3fb32f4a6bd4798c4b0f3f6bef9ce4cfb027f80e3b912167b05f40bb8c5990e97da03d2c28de1a4f70ecbb725e9a5ed0bb0303fc09fb424e06dcca8fd8b9da7ed54bbdce815c4e48bf43e5746e1cd577f95189b3951f37ed428d76242771399e30e2c47b0a4889b391ccef09bb9039ea544584fb3e9debd241883193c64a8ed9d9719f7ee
+
+Hash = SHA-256
+v = 0x2ede0a454062630d09063a0e6b5f1cb469ab9e1a1d937d8d65d68b4aa007033bfd08d12e2ae5a176d15261a0cf7b8e14cfb39554a3132d10d6b5b3446d918e98945a8fe81f79cfd3b214961a6d085cd8228208c66933eb8a4af3f0789a8d5ee43ec3a6a201f4771898ac09ae9867e03670b3524fe182a3b2caaa5521af1199444fb47ee3ed7037cafaae847cd8c92700eaa862224e01b6ed0761b35cde0b4d177d314648c466f026b3408ef151f6eface89b13688652791203744a8fa93a4fcd
+A = 0x6dc951a17f41ab362936a100f0dc2167fcdb76c537a2788fcb201cda999556cfb20fbfc29d3a108dad2e7edd7f82f2fdda964351e509aff3002837f4afa676630c2ce9192d69def5a8452804b0e32a37659396c39c2a2d114a3cab02ab70fca321224049c5f4d13dc0bc810143832ea6d78e5b3be5497afbe27dfd76d01e8f649437637eacb376fa08d31a759041362fc682408864925c02bbb0ca9bb5342bbc3c686dddcccbb65b24e1ba745f50a8ce91cf779586a811a39eea12f8063192e1
+B = 0x66078c6b792c6194ae3b7033454acb96cb9cd02b4d6854dc51bb2218390c177d2b03e9a2649daf835153954d8dca0423f3742b968188621a40bdeea83391e2fc026f014838a171d80b04e01d24517f1a068e71ef7bdda01d9dcabd13d5dc5e6be8ef9fa4af6f9bfc6931670e609b6486d4ce7a60bf1b65e83aeb631605972f50ef6bad04c2cfb0ea756d63f868085516a35d3bcb3268cdb3c0cd25721bde95dd8011950b3bd39f3b61fcc2b30062c71ebb78530e4b7403a9480eef00c25074e9
+S = 6110bc37cc8e2582a68cb758370620da67ac8bd1bdd62503665e863198b5120fa68534f1956ce549ef3b781c410ec256572018087939633ac9403b81916b44a286e41fe11f4f609a5a1d4af672cb73b87e5189b2c9bf707d215499029febbe66faf057e5f64652b1ffd970a5c9cb185605cb46fe0d02faa8d7c170cfc2123bc186475f74e5d477efa9fd4d3b6bffa05280a98bc6e697b7d687e9e58ff7ad7b61dfd56d39cb89adff552e4b20dcb4e9d3300b0d91af9ab463f0f2a9f279744b09
+
+Hash = SHA-384
+v = 0x2e4a025277883ed3040ee13534b24d7722a1a8449ad872d89af0fd317e93042c66398d2bdb5e8a7ad8f13891aa4044629ef571c11e38be69cbb42d711389e89a9b7ee98565fa9b66cb0d0e99793855969250816bab57d6e0d612047a5560bdb29b5e447268064751387faeb56ec5d14eec048b50e0e53bb747bd59a723e4be4737472838b384c4a5f6615a00e554aad26632de3925bf472474f124ac41ded1dd7c56f7c1398329e35113a2f2e64dd7538048eaa756272103690d11a0e0bca397
+A = 0x6dc951a17f41ab362936a100f0dc2167fcdb76c537a2788fcb201cda999556cfb20fbfc29d3a108dad2e7edd7f82f2fdda964351e509aff3002837f4afa676630c2ce9192d69def5a8452804b0e32a37659396c39c2a2d114a3cab02ab70fca321224049c5f4d13dc0bc810143832ea6d78e5b3be5497afbe27dfd76d01e8f649437637eacb376fa08d31a759041362fc682408864925c02bbb0ca9bb5342bbc3c686dddcccbb65b24e1ba745f50a8ce91cf779586a811a39eea12f8063192e1
+B = 0x5015c18641b88349765b561ebc58ec0444455257a78c9672e811978bee81dc1841fd98cc89a141fd22b9146b09dd7654d3c76c0b684e4b0f434144ef2f48793b65aaf15e18da5eea6aeb4fb705528df82487c6ffb23fe23db85f4c48e65979deaeeabfed2b7253cd5c2947b2eecf5a9a7338d7ac2a2ddbc6ed026d3d18835fc791d1bce007dd020f7c11b964ca68c05892fe06443add24d26fb1eec1d47bd38482fa58586fe8e24ac01fbb94b2415540d7ef2f0833bcf9cf89993e419138b0ad
+S = 0d5f6d31ff21be41acf99d785121696c5bbe2f3d2d7ee98fd427a3bf393c4f2137a6291e5b78f97462bdac3f039adf49fa8dcac89207b74043eb42dac2d7479a8659e756bb8820c20253e7f13ec60ebcb64e2b9a660c3a24c55fcd9ec018d221780225a924304db2deefceb0e0cc51d5897277c5d50a4284da7fd58d78144cccb7abe72505b86ad2077825dc515a67486f32c0651ce72f7afe4c0f9065464236e656cfb9d40b5019493d65dce01571ba2a82eac81a8da24d37524555c4280852
+
+Hash = SHA-512
+v = 0x359c7fa92ac9a8b86a92f3f47fa98c099c8a6ec5fbc9575ce52dc6f1f55d4f1f00c20bfaa88e0707e21ce1030ae122ab4cbc82be31254b49f235c3c303a6a8098e7e286396dce1cb21c55f4ede7543e4a8bf0be906396a227c2ff4bbdadb3161ea4f679a62edf155de2b1b67658a7b5c40368de48849ef88977e4e97da8fcb1cee8ff0cf8d9245683f766cb537d89d442bf2ccd65ed6fa2c9db4ca68a4d2e7558b428596ce7a32414cfeb592e3149a23287759105be8cde7cb739b08056f28db
+A = 0x6dc951a17f41ab362936a100f0dc2167fcdb76c537a2788fcb201cda999556cfb20fbfc29d3a108dad2e7edd7f82f2fdda964351e509aff3002837f4afa676630c2ce9192d69def5a8452804b0e32a37659396c39c2a2d114a3cab02ab70fca321224049c5f4d13dc0bc810143832ea6d78e5b3be5497afbe27dfd76d01e8f649437637eacb376fa08d31a759041362fc682408864925c02bbb0ca9bb5342bbc3c686dddcccbb65b24e1ba745f50a8ce91cf779586a811a39eea12f8063192e1
+B = 0x6847e692e55730ea0762417c9e66fcac0dbcb80b2fc56cf78b06c2e034f1f4569ae95743d4e986e09508f129288d0400884ddc26c84c7ab291be6dd3c1d5131247922c1409d61abbf006a86d61830f005745b8d54c6f7a70a6615644023e56fa75b0e733c221fb6d283a8bdb5280a1e19015f1fee7144e27c4305719178dd56cd64b88eecaa45302b359427fb36681b7e8b66b573e295476f092d6fbd6ceec8d2379d1efed605acc37dcd6ade601fea1540741c490548b172db8d2cf229fbcd3
+S = 6be159a25ac57de6eeb852173b0499c56a24d1cb31aacc6e595b572a2e8255e1984b4e0a2bff8658566f48f958afd9d07c188cf244a47148bd726f9527261292c0a72f8745814111668a58b2222f6c660272f2964ac547285571f93be30791fee8d97ccee743ba31d471a193ed6f96abc1ce207e2108da093cb9a74ca8a06cf04b5075581a9b057b4a1b50bde4310107314b45bf3eaeb409b45775fd708be2f1c8554e3f0916e1e5d5e19f30f9411901a961e7657547c829be75db3e07b1cca3
+
+Hash = BLAKE2b(224)
+v = 0x185a709740a2d6f13532ca56db3ff60c3bc02d94b31ed85d37afa713d4f365fff0e16e9b9f80e52d77cfe30dcd846626cd82267ea853eee65c4daed89fd5a6eb4dfd0c2706a17c44385ea9c9e73981c9e962a42a042d949b8d977c5964848e2997408349882f1bce94f9d57a2fae9150126d8d7c0521661ce5207ebc811b4fdac42c3869232ca996db53dcc2c5b386eb4cadfe4b76cbda4b84425d67bbe45fe3319f25f57494c7928ddfebc0a443c94be8dfd4f743997684f1bd6a0793694d71
+A = 0x6dc951a17f41ab362936a100f0dc2167fcdb76c537a2788fcb201cda999556cfb20fbfc29d3a108dad2e7edd7f82f2fdda964351e509aff3002837f4afa676630c2ce9192d69def5a8452804b0e32a37659396c39c2a2d114a3cab02ab70fca321224049c5f4d13dc0bc810143832ea6d78e5b3be5497afbe27dfd76d01e8f649437637eacb376fa08d31a759041362fc682408864925c02bbb0ca9bb5342bbc3c686dddcccbb65b24e1ba745f50a8ce91cf779586a811a39eea12f8063192e1
+B = 0x2665bbe31c9d5af2ea0c4d00fd8d5292b760f3ed41cae58adb5c1106d9146ed34a525337bb3cba8cab035762fd4cf8440d63a8c8eb67408e43c5ff6cc90690bc57e2c9c7ecfbab1451beba8030cff36428f4c57c2e8335c657190616eb83e9fb0caa24ca8c8cb45e3235548980df21239cd1c09d71f2b3a029ba463f003f1aa95da1f1f27b5ab8d5e5fc9fd05439ee1d585de7aa7dd9f536a08c1ec9a462a75b80415b1f0597e1ab9de67cb899586516c9ccb1f5747feeb15bf89dd071b6a144
+S = 963bc9b6bb91f9b407ee0ac597256dfc56b1d00199a59fb93d3645a2262b482c53940fa06cf5e2045baad26db828987cfee2d9ecd1decbe32f16bf8c718a48ea3702318afa75b76ff2641067565f2056f675289dadbe2d3c9badb67e1f7cf8dfb605180b9c356374feb3b02e936f886711649f04e3779824091ca088ded30f2dadd9f464d33eb7cb9f60da60e08bd4cec8ca1b093d9993c472f989e39787baeb07391beee63c2d770b125ce84bf74d81725ae2495760878de04423ec3ed01863
+
+Hash = BLAKE2b(256)
+v = 0x2b540cb86754dff7451741353b5a9b310d5eec17b2a1797e7bd25b59dca80076239595a357efdffe47b3dab3f14437f34166642ccd1a51b2fbb7a6a796f57e47a152fc57646e8b32f028d48a9155146a5cbfe6376ba9d81a9025874b46c21a24650fce4c8c7192ab6137f03902c341a8977f877ef86bebc050bb1c7244f13c1653b095a41a7da427a3b847e46c3fe3b7e8b3dc4cbdc6b7ab5e37cf7092864d4cf3ff141f93aaece914db7db960942181f0d1c8ffaf06a252384dd00237fc9796
+A = 0x6dc951a17f41ab362936a100f0dc2167fcdb76c537a2788fcb201cda999556cfb20fbfc29d3a108dad2e7edd7f82f2fdda964351e509aff3002837f4afa676630c2ce9192d69def5a8452804b0e32a37659396c39c2a2d114a3cab02ab70fca321224049c5f4d13dc0bc810143832ea6d78e5b3be5497afbe27dfd76d01e8f649437637eacb376fa08d31a759041362fc682408864925c02bbb0ca9bb5342bbc3c686dddcccbb65b24e1ba745f50a8ce91cf779586a811a39eea12f8063192e1
+B = 0x14e9fdaaa105271cc7cdbe31297eabdeba392975988161651312bb9795839efa6a332ba144e58b05cb9ee06584d09c25860dc943a0f99e429d6cfd018d9c18e1714bc94a3f2b85f58157be55fa04ac8a4c1f8d5ecd5f14f63bbd7e1be228d3622bda68e3b7aabca565474f0114d0f7cb51a97bb871f80d0bc655e7e53bc234f8b08e41e1838202f9b857ca671d3fb5b4a52048fe57b7e212847e158289c24fe3e9f1b158d86a3c8fe7373269be3c7b05ac423d0fc5dc67508af245c8a8320eff
+S = 808fe782a2eeca317fe02b5ac2124184308bec42790119844448e12f9711579f0702c0f9a9025d79c4a76a7293f3784969e4ef8ebddd5cb0fc5d94271e8a8558638533dfbe304342e400401cd300fb17fa6c233bf9fc484a5d98bdb5eb77823a8a9b681fb3f0d6e03eb9825b66510d88a78b06740f64b7b7d2cd63ffe922589c40ce37ff6261e12266c3653175591a6e1d84a4cecb95aeeff1fc1b908d2fc114a1e35bbc760f2dcfa969ef7d2280092838210677ceafb96f047128d0bdb65f64
+
+Hash = BLAKE2b(384)
+v = 0x2294d244f1dbcf5cca78afd2f0f3fbbcfa1e37a65b48996303b497dc61bf2072546bee4875b4640405076c6b211d19d1ad66d8939ed081ed74f52e1f9c6cbffbe18a351e7cc0242a044475bc8c2bab60d780b888f901190f0cac876e0fc701b8c72c53664bcf1c64d07387f9e422f1e5c94da3028fdf847a64408f7187c1c993a378be8e3b3db1ff56acf553b1212fc4083c3d1d9c6be890d7e5489cff5bb3e04c48fabbaf5690c22a121c155c8113ec1414bd3db2dc861501c632fa81577d1b
+A = 0x6dc951a17f41ab362936a100f0dc2167fcdb76c537a2788fcb201cda999556cfb20fbfc29d3a108dad2e7edd7f82f2fdda964351e509aff3002837f4afa676630c2ce9192d69def5a8452804b0e32a37659396c39c2a2d114a3cab02ab70fca321224049c5f4d13dc0bc810143832ea6d78e5b3be5497afbe27dfd76d01e8f649437637eacb376fa08d31a759041362fc682408864925c02bbb0ca9bb5342bbc3c686dddcccbb65b24e1ba745f50a8ce91cf779586a811a39eea12f8063192e1
+B = 0x2bd6adbc5bd6feef71c02a407877ecd13af2f722e52622e54828dc3ab3670f23ea311bcc21896a48e8d193164c325fd8b2573a2165d3663814b556c3630c47a3682d62cebdf67fbe20f5de2dd0d8f4afc226d9540ad9a729d00d860af21771d4100e5e053292a1eff2c3cff6ce8709f487b7e6bed458767a855b1dab8b6ea92e0555399df20b82ec019e7a403af875ebcba5d6318ebe08c56051a75889ef0a51e492717933c5b757d4e3fe9b0ce09e7b5a0e9de7d2ad8bb3536b9080c8e051b3
+S = 738f5264e606ba538827cd5aa378d0a84bab82719e3073778a39518ad4dfcdab39fc12eb9a32b607764a88755c75f9dc625c83ad13d798f3a7894d24c5d63c69bc72dda7c846115f28612c283f73602a86c7b4ab34e7762c2f49606af5126ac55cea7cbabbd5577675d771b9bb8191c48bfa4c9a4658d2f23d91f03f15573e09da70df8f6a79d4576cd55debc305f5881f3d83e6bf325d14001945dfb5430c7244d9dd2a4d080b9bb61780515339b15257ab1d0e019c1aedbf2aa5bc92c63f07
+
+Hash = BLAKE2b(512)
+v = 0x8d45c097e489a9c248c317948e33c05e4caf94e94cea63accb655c7c436ab9ae9d8b438a1dc1a96d245256384976f3b3baeade6a656e5ea7abe497bd61bf73bcee0e6288a26932a780f9d1af3d00f28236f2c5bbf7614ed9ccb29c8cf0168e45fe6e5716b29d30940e404f56b260d55ac98eff1ebc99796f1e9ae59284304e19b11039644815741134e6c0f69a0288df3f0e32b78acd2a8a93ae9a1c068b5f4e7e0ed96eeddcacbdefb07be99055b29022eacff1bb01aca1f7d1cf31a4ace4b5
+A = 0x6dc951a17f41ab362936a100f0dc2167fcdb76c537a2788fcb201cda999556cfb20fbfc29d3a108dad2e7edd7f82f2fdda964351e509aff3002837f4afa676630c2ce9192d69def5a8452804b0e32a37659396c39c2a2d114a3cab02ab70fca321224049c5f4d13dc0bc810143832ea6d78e5b3be5497afbe27dfd76d01e8f649437637eacb376fa08d31a759041362fc682408864925c02bbb0ca9bb5342bbc3c686dddcccbb65b24e1ba745f50a8ce91cf779586a811a39eea12f8063192e1
+B = 0x0b764050ea18ac62d7e78157467a248e74c26fd734d10581cf24a3d78cc732fa6d2cc955ce331e481c0cdf087d2b7a9b58775d11f179c06283591f28c9c7d6febcfa163179c428979e904e5b4a3004e84e29c273437fdd29dfa9d60099104bb58e4514800d292d86232965e4e7ff6eb8fa0267a4dd7ce57c7d3e5093ccf7fb28cc09a2bc6722610b7c8cc356aaf0c8069bd7aa6af03b9df3d1dedd4f844918dfea69c617d5244c2fdd0c803f37f98ae1ceb90f88c18b2b986675082cdfdec592
+S = 43bf77e3c27c9919c3decbdf54ccc9516fdbdd20a31ffe2c1c32312320d8a34d43ef90a3a334c4a329c6c8b089f295a3d310101281d9af1c0c154472f890dab15db717ddad5b232b1a135144cb94f6afdcbc750a6291d764ae244f1c4ec1b1d9853a4967e992ae56f419b3e7ae8f4bd81750321f0027813beba05ec220566d98496e3c37b235eebe45cd21f5bb872afc6d5322fa65144a0a98a06ef82367310b331473d5d60c65bf038ed727817f53b5441ee92b35060bd83c303ac9651c9a4a
+
+N = 0xac6bdb41324a9a9bf166de5e1389582faf72b6651987ee07fc3192943db56050a37329cbb4a099ed8193e0757767a13dd52312ab4b03310dcd7f48a9da04fd50e8083969edb767b0cf6095179a163ab3661a05fbd5faaae82918a9962f0b93b855f97993ec975eeaa80d740adbf4ff747359d041d5c33ea71d281e446b14773bca97b43a23fb801676bd207a436c6481f1d2b9078717461a5b9d32e688f87748544523b524b0d57d5ea77a2775d2ecfa032cfbdbf52fb3786160279004e57ae6af874e7303ce53299ccc041c7bc308d82a5698f3a8d0c38271ae35f8e9dbfbb694b5c803d89f7ae435de236d525f54759b65e372fcd68ef20fa7111f9e4aff73
+g = 2
+
+Hash = SHA-1
+v = 0x960c64fa1148b0074457e3eb45db6f7929b368cd06c6c582fb39e5961178c8946d940da78bdc3e73f1a60cdbc7bba2fbd83d31bc3906e986038455b81fb881fed4f8119b312138ce17afc09b12ba91c9a49f2ab593993255138f6ec39e95f67294248df9d95aae72ace37b95a747c6b35112e68b0f33a3c57563e0f75415084b5c6594179cb97a10aceac6338d1def7dce73a0bd3689d5fef55ebed63cbb4ac5b049e53a9d9b5075ab32f771f5ea881b92d29cd27348328f3f9235b2a58cf43262365c1b1dd6b7d96bc2df3ae70e1009e2cfea30115dc2260c17c54bbf4af223c773ee4bcf6dbee2990cb484e38addfd0df6be7727ce1875ebccf15f538b310c
+A = 0x4b700f8d48e69c9aae40c684ac7c7c03121e2b7602eb4c3514804ccada0ed4019193a351ecc65a6f854ede91eb096e721b22d701c7adc64e9cedacd75f2e26bb2f5e45dd53dc8dbeafffe82aa49fca0573444691212537a73cf80e25039258205a7edf4749b30adaf25877c62fcd09d6613598bcd4baf2a9727a53706a278148992b2abb23ad5d512d269e16ca11bc0895b5a3b5ec4721cde40a8c39c796e94f0be86dbbeb33da7037018983921aba3f5053195d5ac1da4e567e3c0e75d9e0609f92e850657b2be4771f415b9cacc5c1ecedc30133bf6474f5022c6519d780760ca4d8d3b966b034bd73877c1b3b33f474b9c3c5299a1968f3e6cd3bfe84445a
+B = 0xaab0634eed624d0ac76a049be922fb3c0d7a31cedf03fb18fc9f8995cac7cb120965f98bd8dec74358a036c798dd3681db3f15302979d09c62bb5f5e1fa5bf37c9678e9f0a4649355ea1474a0980a1cef5a5b71882b14048fdb4045bf3e94236f7c94e065dffd21b7cb2dd652ec941b351f7869a64090a4e912114fc9052ae85cdf58b38deb2345789de6342da0fb3c9f90ba68d402387adaff8b4fdf6109295831e2ab28dd194d66420f3bf3b1606c8876b7554ad3961cc23cc333574e2568f4bc0de41495ab9b56aa5b2d864e019e1829e9f2ec1bfd55d683d3055845a373abf3b831d531202b0e4d6e7c59e0872a220d176a647b8d1008779cd5665a7f613
+S = 58e16e05962b713f484fa1c4dddeed4b3ca907d1022a7ef23422b5cef93c9d584764f31334ce15e2b0076f3337ada1e209a0aa0413ee83d1228bc01c295e0702effaa52426feae8cd490c653f19e8afca31d3a1465a8ed8209d1b33480fb2568fab3f4243d5e23579af903183b24ee8c8b2debab3fda13a73d8c0ff5a60a696bfe92685814cda5bf1cf8237eb419fff7c91911eac75bafb19a501181f64aa222be3f05eccc23fc7ecb32030ba5a9eb8c2565333a23633d070b1f5fb26b56f2a511d3d0e03840626eab5d63dec8a655672eb14f008e8b0f53a1cd5118a533586c1f14f978c4ab2ccb0a6b897d45b83ee366daa753a040fc430b95db1b874f971d
+
+Hash = SHA-256
+v = 0x400272a61e185e23784e28a16a149dc60a3790fd45856f79a7070c44f7da1ca22f711cd5bc3592171a875c7812472916de2dcfafc22f7dead8f578f1970547936f9eec686bb3df66ff57f724f6b907e83530812b4ffdbf614153e9fbfed4fc6d972da70bb23f6ccd36ad08b72567fe6bcd2bacb713f2cdb9dc8f81f897f489bb393067d66237a3e061902e72096d5ac1cd1d06c1cd648f7e56da5ec6e0094c1b448c5d63ad2addec1e3d9a3aa7118a0410e53434ddbffc60eef5b82548bda5a2f513209484d3221982ca74668a4d37330cc9cfe3b10f0db368293e43026e3a01440ac732bc1cfb983b512d10296f6951ec5e567329af8e58d7c21ea6c778b0bd
+A = 0x4b700f8d48e69c9aae40c684ac7c7c03121e2b7602eb4c3514804ccada0ed4019193a351ecc65a6f854ede91eb096e721b22d701c7adc64e9cedacd75f2e26bb2f5e45dd53dc8dbeafffe82aa49fca0573444691212537a73cf80e25039258205a7edf4749b30adaf25877c62fcd09d6613598bcd4baf2a9727a53706a278148992b2abb23ad5d512d269e16ca11bc0895b5a3b5ec4721cde40a8c39c796e94f0be86dbbeb33da7037018983921aba3f5053195d5ac1da4e567e3c0e75d9e0609f92e850657b2be4771f415b9cacc5c1ecedc30133bf6474f5022c6519d780760ca4d8d3b966b034bd73877c1b3b33f474b9c3c5299a1968f3e6cd3bfe84445a
+B = 0x410813e3063f3b4532f2d36413749f39c26c5ceeb1346d3995003c74544c30cba318f981281607ae68dbdc3bee9f0544ada6b13d8ac33217b670973152cf03ef03797615e81dd305342c2e3bb035321d1fd717952e702b09682102d0a5aa25dcee01784a32b0684f75626ca3bf8aec874f2dc11f8926944b06f9948e8ad7649025a58cd9dccdb6b210de00e2283e72baaf93a39b0417dfd1888f841f43d7d41c75b58f654ccb2e8b9c875c42edc34fd3796200312f2abd19b7e2c54b5702cd1a7f4d79fdf73bc418c96466ba122d45474ab6db553417715617f6c3b4a8764279f086acc655e396f85812c90f6f932ce0586168c5deccc9f8beb6891ad13f7caf
+S = 30abe90d7091d4617ea8b93f0e649f7fd1ca069bca471e9daf46f5fa5c2b31f05e650da378c0280f144e893ed8137111ff91842c01ce5e3ed8714b4cb23e2b2658230c53153948663239a31b9fdb503325f3bee65f97d081ab90c9453d79c61758e622f4fa4a76b91dfbcf9ab4dac654968756f20b620b500837e297bd51b2d4fde98267703edf69674c3f0e747f910ffec303bc15e004ecaadf3782cd9d2994ed606b7530ad0dd3e9d6de7436fabea3215a13b77a7c59d7fd20ac1df350ad8b8cdcad5ded683073dc2dadeda1350e7d72619bbe652ee53813cb7f3295ada69f53ed595de4de4ea23ffa964157a42785ff6217268f5a912551ba4adb57e8773c
+
+Hash = SHA-384
+v = 0x2b6eadf735e4adf79a76f1b218802134e86f0baafbe9477bff75204bfc12f01fffb0817a831a81e5ced21f06cf76b9e0fb8ad104be6963e9702ce02466f8a96d30b7f55e576fdee92c0805f02b52a798238a2912e7d07ce7ed3e70208f05d82a1a0ac75abcab2887e69f9da078485db12669c7bf08e79bc601d18687126da056d979f0e29bae9474bb90e0a40bd2295af5fbdc2384174a351a025133311b33a29f4ffd50f57ff063860e5f28f1c0aa733a6f4180e3541d18816c941a3b19adc287d401c07d387ee9733100751e43f73269024b44905b2c4169190597c5123e18ad49c0c1d6057027a421412825770eb8e52fd22ac9db82b477e13911591a472a
+A = 0x4b700f8d48e69c9aae40c684ac7c7c03121e2b7602eb4c3514804ccada0ed4019193a351ecc65a6f854ede91eb096e721b22d701c7adc64e9cedacd75f2e26bb2f5e45dd53dc8dbeafffe82aa49fca0573444691212537a73cf80e25039258205a7edf4749b30adaf25877c62fcd09d6613598bcd4baf2a9727a53706a278148992b2abb23ad5d512d269e16ca11bc0895b5a3b5ec4721cde40a8c39c796e94f0be86dbbeb33da7037018983921aba3f5053195d5ac1da4e567e3c0e75d9e0609f92e850657b2be4771f415b9cacc5c1ecedc30133bf6474f5022c6519d780760ca4d8d3b966b034bd73877c1b3b33f474b9c3c5299a1968f3e6cd3bfe84445a
+B = 0x764c419b877880f2fb7552422a08de43c2ef0529d08c3ae1a10f7e131ee11af3596146d67a127c23e4eb73eeb633c7252d33c29f1c94c5bfb4bea4596d168b7527d942ffa43817a1e130bee34af08f49f9353266dcaf8bcdde9eecf0131ac88bcbd9c07a1e83d43ba0298158a07390a3c1ddb5bf763255e986b86fae596b3e1c88eec9b8eccda7910c7b6a672ddb9d43da531ae0ddcd69df0b501ec4c727fb5f4138100c1294be387d00916ce7ea31cde838cc4fab1517d280bb9140ff1fcaeadf23d568632c6ceb969fdad8d47a66ec69bba85cc87099437217539bc4f625a3c15838eba26f17738c191bb5e7fa3d2d61ad8e92cc411bf6b5617257ac020559
+S = 1f5869cf0a4ec7cb2701d57349ccd2d182216135de8ac1cb6621c2cda5281a22c7cab6bc7887cacaacbf519a0d96ddc7af5524534a81aaa6e9ef8bdcda8c34ab81b692b74cefc91fdea505ba3c41b858b80f38586aad9513c91dc68d3cd541586ecc0c82aacea8f6503d1efd62c32261c042e1eaf881dc04a668495da48c7f1c6ea34541f585c345fd2f41f03be0979650eaac501fced504773730a1bf681bee02f21c806e8acab3f14b7ef7a280878806b17000e6469f3f3da6e57a41d829971e7a8d50df03e71644111218098078e9d19de5bc102255e8dedcca20cdd4d10f57ff21621a5815f2468793e7a8bec7399f68f396fadce0f01182f5ae1a9d6f4d
+
+Hash = SHA-512
+v = 0xab58c34979da9c1c0c5f6ae8a1c4207816e0296fdc0962e75d4909d2d3480b03bbf4965893a569d489107fe22373f28cc65b525d2a2ba52327a65cf78d651fcf5e1870b7fd084ea842be5f73f48ba04af6fa85d2d7f64fc0c5ba4232c5bb57b260dbc427284a7cdc5f648ac2514796d99fd7642930e364fad242fa8bc9a078c5cf3b1b602acd358bfdbd62d63b22291db0ebaa00df991f82ef9d1aade24da1cab28f1ded5ec2bc48aee85f52adb3cba54eff528c9b1158e2d994cd6c6687f8c13c9487ce2c4a0566c320626779c033f16e3feec8be8e56c698720e374b894cbad945f49e787a6e1edfff23cfefdc7d1cf196702aa86c20dece6e3e8911442b02
+A = 0x4b700f8d48e69c9aae40c684ac7c7c03121e2b7602eb4c3514804ccada0ed4019193a351ecc65a6f854ede91eb096e721b22d701c7adc64e9cedacd75f2e26bb2f5e45dd53dc8dbeafffe82aa49fca0573444691212537a73cf80e25039258205a7edf4749b30adaf25877c62fcd09d6613598bcd4baf2a9727a53706a278148992b2abb23ad5d512d269e16ca11bc0895b5a3b5ec4721cde40a8c39c796e94f0be86dbbeb33da7037018983921aba3f5053195d5ac1da4e567e3c0e75d9e0609f92e850657b2be4771f415b9cacc5c1ecedc30133bf6474f5022c6519d780760ca4d8d3b966b034bd73877c1b3b33f474b9c3c5299a1968f3e6cd3bfe84445a
+B = 0x03afa6e214f36335f5511dae573424f4c218af11f8efc71444a652197bae65e9865f4533aeeb71d3fea97d26e0c9c7f22e4f95eab0831dad77ca3282012100c5475267f11b5c64d3ae611a7d760e7d231e9ca0027c44a86ff92752d0a9c7d4bb316939fcb7a7cd86a155718ab748027316f59d832fa87e082f2dc4c3ae6c657242c174d995d010a1259c5af9a5080da2ed3af1f769c629f44743407e6d8bffae04f0091d5f64d47cb847f384f20f4a1632d1af805ad60bd8c5a4070ebe5235999aa14f445db74d5db1e2f984336c51d6ff2764864556ab731eb0216e651921f99709b3ec32387928e2d2033a8ded8b34a7f80e265b6020764367e9ea3b0bbf25
+S = 1e0368388142f0b4a3b1a6ab4b064617ff36359638b012e84ce8c06a8ef3248862ca348138381192a7fdbd65e20924a859a3d022c74bd8c05880e51320d220ad0c8459f95438028165714960b2410fd29d7517fcc7c65804125c048974b1a150af1ffad6af92491f96af078dd912c37282ff33800c99a208a1b397b432577dd6ca44db28ba69fc37410e7891da8a11b788b4fbde55301643dcb85c6a503b1672d41f4f28d9dadd563367986ed9074b6c9b18e4a97cd32b2802402d38671e323a39092a4f3a8e476485a9d7d52bfaa27b83a851f40e47bc95782b3e9a08a05e974f2c3ea8676ec8e43cd4fdc723e4e28db04c2c5c947ac329ad8b6ab195443367
+
+Hash = BLAKE2b(224)
+v = 0x263a5b82887f16c7dfc02e254a7041d4c564a8b0764447348c63512ff52cc18bbebab7310a933df43ecd2f4da6219ae9436ed78a60780526054b85c716db005399fc4a8f02395bb24b62d8c1b70e4e62bc641dae2c78e1973a6d9f81550b2502c4d5b9e363f224db2952b49037d1fc7b285d75b8a02c0ef18481a711674a6ae2a6b801b5ddfdfb6dabd2248899ea84d305998af5f2c0088862a99fe87446264566f77b2d5e7292f8303ceff2ba701661c9fdac4865ead17a69b637c6ddda63785683c73c1fe1a3918c99445dacb226107986df25c9bbb8a457b6f130a56aaba173e871c3df2f290e1864415fe3af714af312344674f5e7d4251e0f1c2571109a
+A = 0x4b700f8d48e69c9aae40c684ac7c7c03121e2b7602eb4c3514804ccada0ed4019193a351ecc65a6f854ede91eb096e721b22d701c7adc64e9cedacd75f2e26bb2f5e45dd53dc8dbeafffe82aa49fca0573444691212537a73cf80e25039258205a7edf4749b30adaf25877c62fcd09d6613598bcd4baf2a9727a53706a278148992b2abb23ad5d512d269e16ca11bc0895b5a3b5ec4721cde40a8c39c796e94f0be86dbbeb33da7037018983921aba3f5053195d5ac1da4e567e3c0e75d9e0609f92e850657b2be4771f415b9cacc5c1ecedc30133bf6474f5022c6519d780760ca4d8d3b966b034bd73877c1b3b33f474b9c3c5299a1968f3e6cd3bfe84445a
+B = 0x4a2f88b94877aa56df4d4f51d6934b5d44ecbd01fddf3f72273ff8ee7bf28886f0c6242e7e734cff7e18416083218f8668892bb975ba305627cb3466178f7db15c034c3ccbaf7ed86ccaa918520b90da1b85a78bc1b6c9d4cd9b7cf6cccdfbb9c0d7ce33e9e36c1cd2040640aef29988c5c6e5069321055beebf5ab8f71d9b4ba23bbb143db8717d02453ee67768af28f98f7c17656a1ba8a15b7b33ec61b45704fbf8929f8901f2b027b08b3bb58942e34bcedc7d91d5bcf8a42806880e7498089026abe08f57d98ed0fcfe8931379fe52eb4056ee2dc1da965b2bc6f16f72aed533914f10e3b550f650eb1569aa4e85306998b5828802afef2c17b30ebdb00
+S = 16688472ce7b9c3b116ffb1502b68efc466e3bf415301f10446891b56d21d6efb83af1c4273a6110e1c13f0b152799845616ca4e43d76fc637ed20be2b87281885b9567ed386954e850b7b634cae7545999ffc8cd1a1f84ee4ff330f47c8fbb7b1a335808f9b4d522711a02abe255de39273fa973ce54bc146733c8a02ea55e4d6dce48dfbcb8aef24c0b241975e0576f6676b323575c0ede80d911397e8835125082b814006a6917b1f4cef767e89e240f8b35f013a3a33548c65c8bd610d1e05fb708983c2b998efbaf8f571d82ae0748b61fe4baef544835d365b0c068292356243329cbebf24fa9b5dda2d07ebb816b1ab2a4c5022f2075d0f8d7e31739e
+
+Hash = BLAKE2b(256)
+v = 0x11eeeeae5518f7789b4a6c757e32209d9162e3a73d8de2745fcb5630413fed5e5866222c4cf9976a8665f769fe34afdaf2512cdf4d7296cbd159e664e1b1f8896e099d6f8b1442db41f51418b5cd981ee2568fe12c2c5622daae04fd9e4c8e5424caf4ebe0c345b070c61f763a6cba28bac44b9d26a7478f073632fdaf51d3262d8ef28d2e36ffff0bb7ae69b39701d3b8a1c3ea3bade1c13f962be9d247ae54226b7cfa9645e22eacdff0e88f843cb7411d675e19e8b023220f8fda5de67f63edc257beea8f088b2d42f21d55792f35be1161c65a7f2667234ee8da72d50258d445419b3e7282feb23d2ed65866bbd51f003041c882a61d504fecd91a09fb11
+A = 0x4b700f8d48e69c9aae40c684ac7c7c03121e2b7602eb4c3514804ccada0ed4019193a351ecc65a6f854ede91eb096e721b22d701c7adc64e9cedacd75f2e26bb2f5e45dd53dc8dbeafffe82aa49fca0573444691212537a73cf80e25039258205a7edf4749b30adaf25877c62fcd09d6613598bcd4baf2a9727a53706a278148992b2abb23ad5d512d269e16ca11bc0895b5a3b5ec4721cde40a8c39c796e94f0be86dbbeb33da7037018983921aba3f5053195d5ac1da4e567e3c0e75d9e0609f92e850657b2be4771f415b9cacc5c1ecedc30133bf6474f5022c6519d780760ca4d8d3b966b034bd73877c1b3b33f474b9c3c5299a1968f3e6cd3bfe84445a
+B = 0x908ebec1547f1bba4d18ce0f3315e837026864a9f989598fd0076de04188b1c0a2f8809705ec3b86c6459d09043d7e452c4c1039da3c285ab9cbc97282d6820664bddc29d0914a560900ee26ea629b6fdbd4ca6749cea4417a205396a90dbb200e26b30eb3290c7419575eec5634ff1f1e1048fe7a8393bf3c0b1b7ac081ec5550d6cf1f218610142310f729b158bb8a4b0dae5cc59dbb14e895cb63149b42f8834e75f97639b04d0477edbd0890c28f0525c31d89e35885e8a443dda0dd74eea3bc3d1b87b80d9c9b9c366faf60f1bc4c6d7f1d165f49e7fd3f6e7633bffefecab0425d35cfcb75b8858f68bf005d46fafc3a4464657e07b42143bad886b94a
+S = 3ae6edc4dd570c611bfcb07db1b9ea68b6e0d98e6270489a31a8b5361a3e6a76c1416dd91397794be8e9e4bf7d9c1f2b75fc4a7a06466c9e2a477d1b11a67e4e24de4d0373a516c27e50d7376ee4060e3ca01c6b3cf6fadd00b3004fabc4d68d8c3496c34f8c2cbd30a5b453f44174b70c1bfff69443caa14a21e57412d7da36bca53364a03ec643c851acd763236084f886f1d27ad09e2746ef6e168d5149f0ec57493b8329ac650c48c26a31cc528ee991e630a8ac0eb050fa52cae11d2e95e46a9ab70b2d09d58df1695aa691b2842098271681ef2520bc09af816b4fdde6af343c1fece6b7b01916b8a80394e3150cc2eeb41924db90f25772ebfd1a3be2
+
+Hash = BLAKE2b(384)
+v = 0x2535e9465ebbfc6c6252758fb6fbe2a1db2ac06858e056c25dc9c49b120a69bcb265d1d34ab4367159fd43f437c233f45b50ca9f3155ac718931e290d0f5ab1f1788e03d76a05aa4e624cfbce2fe4ef63ea717afc87f2e1171b99e2dead984fb8698feaae53a866c4cc0a999a1a4c40efcfdd24eb36ba8866a37fa213f67e19811d17087df3296acb7c13b815a819b9bdb88e07e07adb7444914e9970d814f29fe2ba3c0c91f09d85b9af4e11e3b01b686f02cf9b631e2291beed0d76d3b89f424a7fa53d2361e6e0e73a4991317fe15cc36e6b11aab72d7794a437bcce83ba8eb0fa200fee87b790b9588f9c06f3fef00a788805bc42fadf36f935893c57141
+A = 0x4b700f8d48e69c9aae40c684ac7c7c03121e2b7602eb4c3514804ccada0ed4019193a351ecc65a6f854ede91eb096e721b22d701c7adc64e9cedacd75f2e26bb2f5e45dd53dc8dbeafffe82aa49fca0573444691212537a73cf80e25039258205a7edf4749b30adaf25877c62fcd09d6613598bcd4baf2a9727a53706a278148992b2abb23ad5d512d269e16ca11bc0895b5a3b5ec4721cde40a8c39c796e94f0be86dbbeb33da7037018983921aba3f5053195d5ac1da4e567e3c0e75d9e0609f92e850657b2be4771f415b9cacc5c1ecedc30133bf6474f5022c6519d780760ca4d8d3b966b034bd73877c1b3b33f474b9c3c5299a1968f3e6cd3bfe84445a
+B = 0xa0c6992c82c138a9f53fde53ee3250abefbe35fead24b8fad0d96fc4012e61018d50a4c679ad12260b83cf31bd28d1686b37fd3cf66b5099a6539a031cd4b7eb6021e25b6e9c59b1ef0bc9b9d6e5bfe29f58794de77cf409d0e706f493d677f82a4bbad4df8898261473ae10cad4310648bb17a8042227a58bbc15c000ce5ce52ffba7f3625a5a85376d90d54c112fdfd7b9cbeba87901dd31345a4c7446ebd40f8a15ff075dc3a3af7a588d472e42510c9114640afb6f1f165414b8a85aa81ab56ef987d8e5fe18f201b369b2482acf7d775cb7def47682290042e2cdf526b863359850baa4ed0eadc481c9c9050175fb6445facc4b74ddb05fe89e2f38e825
+S = 96e4825cc3c4a0ba9727557bbbd2042630fac0054088c3a604d64a5d019f83145fa19fb9b949e29baea5784ce50ca9ab3a24923f507e5099001a44393c278bad7f324df5091698b55282c7353da37b0fada4f2a68052585c15d5600fb4a58ee82f4753c4e4eb222875f701799bd461c422873fd08e38cfe294c1c876df7020ec0e30191c3d2b7fa06eb38a46da9b2cd38db6ba8282fc1c144a44a99ad5e3f49158957fa6bbd862877de9f8122424fe6c0dfb3140d0bc75fe9c38d2c8295f30ebe068882183bc0ec2ec0add45428ebb0949a56f8fa5b3a4cdf70eab6214ed42ac9d2aa72aac8069c862ef8f7c840727bd164d0870acb5398f7e98e40c5b2a8c4b
+
+Hash = BLAKE2b(512)
+v = 0x631c3d710f4ba01680f73ab1571f6e98df564e10a5ac92b0bae615410ad9c36a079a5e1321cb50b7a027bee37b918be622c0c1c6f5e7888206cf2d3e1e94b970b1ce74284903160cfe1cf96750741def95645d7bc0f7e61c3a2fa2f870d6fb25ffa1e2be87f248550460d88d7e63ac1e1b797ccda698256b953616b4f462db27b1d38e0525325b0d4dd996660ab755678642a05697f2d1b2cec858f569caed2bc050c439a2d8bf5653dea68bc5b8ebf56f7cb0a3dfd0ae0e524fd919c9bdd7e47c0d84fae0e83861d605b1f8ca758850762957c1955bb255d1bdab5b61d640fa69ab8bc105794b68003a97f1a09d4964a3dc41adaee16e89de16c438ab439c69
+A = 0x4b700f8d48e69c9aae40c684ac7c7c03121e2b7602eb4c3514804ccada0ed4019193a351ecc65a6f854ede91eb096e721b22d701c7adc64e9cedacd75f2e26bb2f5e45dd53dc8dbeafffe82aa49fca0573444691212537a73cf80e25039258205a7edf4749b30adaf25877c62fcd09d6613598bcd4baf2a9727a53706a278148992b2abb23ad5d512d269e16ca11bc0895b5a3b5ec4721cde40a8c39c796e94f0be86dbbeb33da7037018983921aba3f5053195d5ac1da4e567e3c0e75d9e0609f92e850657b2be4771f415b9cacc5c1ecedc30133bf6474f5022c6519d780760ca4d8d3b966b034bd73877c1b3b33f474b9c3c5299a1968f3e6cd3bfe84445a
+B = 0x4ba3d81572a44c29bda7dd6b2aae943d36f610e2f2cc8619300b2d4526c5ae4490888f58e14b42235b48faecefa84258eeeb145d136959b1a7e74029d0760563d01b792fe645decb450bafd04de6674f0a5785ec04a7bc5187ff908973ecb1597a1acfd6d9ceaf4ba574b43506f5ab81f4978d55e1e4afb050aa8857122809d2bd0ed45621dc25211b0c6ecb2255d4ffd3d29720bcbe22fa8021208e461558d711c53e3dce36e02508328d288ad0322d71bd8b102e6cb95102c36e7cb2568bc1b7df3b83c68b5bb8ba2ab9f33634077604aeb5e2d9a9efedc4dff52e1a0519b676e68b02db4dda019b13c0fbd961c59d4e8a36ec559cdc16f1b84b69044e87bd
+S = 241e3f9e86001fd059ba19552fc386d5f305546e1635dbad5c9156de6b456439faee217ec86afc25060d24a6c56ba4c2272552c9b3c75a1706c8ac9322263c110e4ff4a6b51ef2fb846512a650e116924838989aa5d51eb3d3f3327b293917ba45ce8931ced06a94f69d095b346426e969581abcd555b57c69574f2cfa73e6f11e47b2cfab5a6494ecd3b522b76e44dfbdb378c7930e811448299d800ec4406745ade661b182459f9d457513ae02a144abd307b5429d3e16f8606e1b97a50bbe7279713b3bc0563755a314808a7dc0437aba86153998e87a39d20aadc91b41b37cb24da7ba1b032bb6a38f7d96b92e6674f28d4ea99e442ecc961550400e1518
+
+N = 0xffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff
+g = 5
+
+Hash = SHA-1
+v = 0x24cbd3a96ed900d33fa12ba65fb24dd2e45ef35658c0930bceca6f50656c32f930bbdad3b0bcf7790f8dd74e213ee25e3eb4749550f32cd07b8bb2f60006f3819dca00ae13a20727dad29339467dd9926670fba4ada87e719ebca0f51fe8e427c965857b7b726de324d0a2564906da4cebfc625e9482da305c23026b19004759ae863b1fb906b5a97131bcf80a67d5139ed06cbd22af1639627cf450735e52832d416adb16de0ac8dbdb9e31377ae48de9097580d9b185007e0e5ccee0499e8597f86a2ae74c2d931c27722f5b61b8827d422744368e76406bfdcb08e1057af858b3c17f2d1b2e9648b63f897c751044b1f90c5f9c262115cb28b3836106d40c62144d318232845145d7832d254a329f42276ade4fe63d6d2748160ddb5e1a0864dee473ee1cd59caef54d729e6417b710a923909c2b801ca2f211c6c782efc6798b389ca7ddbbc9b3bc4f0f418f0aadb688221f40fed75dd535c59bdb4a74a6c217b28c4e6be6f3a227fabe8ee94bc33ee6bef9c5f368cbd90aa6d137249245
+A = 0xfab6f5d2615d1e323512e7991cc37443f487da604ca8c9230fcb04e541dce6280b27ca4680b0374f179dc3bdc7553fe62459798c701ad864a91390a28c93b644adbf9c00745b942b79f9012a21b9b78782319d83a1f8362866fbd6f46bfc0ddb2e1ab6e4b45a9906b82e37f05d6f97f6a3eb6e182079759c4f6847837b62321ac1b4fa68641fcb4bb98dd697a0c73641385f4bab25b793584cc39fc8d48d4bd867a9a3c10f8ea12170268e34fe3bbe6ff89998d60da2f3e4283cbec1393d52af724a57230c604e9fbce583d7613e6bffd67596ad121a8707eec46944957033686a155f644d5c5863b48f61bdbf19a53eab6dad0a186b8c152e5f5d8cad4b0ef8aa4ea5008834c3cd342e5e0f167ad04592cd8bd279639398ef9e114dfaaab919e14e850989224ddd98576d79385d2210902e9f9b1f2d86cfa47ee244635465f71058421a0184be51dd10cc9d079e6f1604e7aa9b7cf7883c7d4ce12b06ebe16081e23f27a231d18432d7d1bb55c28ae21ffcf005f57528d15a88881bb3bbb7fe
+B = 0x596948ccb187b15c93a0b85aaed3eb39fa3fd3908a5bc55e09dff92f5e06263305c82cf4b484926b9343846763e4c25714744a1d9314090098d00bc92b2fefaa3b090707a8746d4f017dae822d3bd76b4f9bf1c92d2bec207d52c12ff3e4d06073a38a21673701491a9ac5d22dc9e1516704fe9dd978b8ea65f4bc05e19f9046054e300b6abb883e986f8e51f5c8e4ef72082deed7db32d293d026ba3eff8cffee1d56895cbfc4939e8a49ba044d0ea7593b84d45f7a8ad8e40b0448b3bcafc8deebbc64aac02b9d9bf8a557cd64a36e686f8580fdacbd3266cc58ecac846a3b7d658ead95d27ac3fea0925ebff49cd0c71d4ee002fbed15201401cc94e676559d1cc0da5f3baa150a20641da67ad9628e2aae0ea4648ae1efe31ab6b412dd477f3c1e1f42c9fc1c77da75312c3d538f983b13fae2a9ad4d7b05c5fa00e3405d260d2e85350c40628f4fa24c732f2b58978fcb397dada4f5ce5b6ca466d0225dd6f68e8236bcc6c68af0a76f8652f9bd55430c9f3873401175104c5d895f460d
+S = ebad5c66220a39c43168ba7a93dd3c898513f46d861966005e8bebfbb0abf99fcc37d26c8b103671f84aeb6c009464fd9fa6158461394d980a7534bb3cae8ca58e81e5e1d2f26a6febf90d9bbbd2a7e429878d2b2e3b0f10a4636c953ae1a10b7a3b2bb34bab92c9672e1f2f25f1dba03f67f421fc402864b4ac37a408d9d2370372fd5ab1f0b50070b0e2a85a9314c4c3401a26708d48f4e172b1d884d4b4d12428b8c439e000544d047b20e700c07b5025b555abf3a52f0c181ebc34a4dbf91699c8622bf3082497c31302b0cec32f2140123df41ec603d35f14be29b324159cfe5b0cba345f6704c9cda70ba70622714b7231e582621db8d321cb609b07f406bb6fc3b1bb59ec42410848b0e8ab59442d47215217f2214161d770a774cb76ca3c3f6b6fe5ec207a95d8d7397631d8ba2062584d7ec5bf01f5680c7380f6933081ad2b2b90f7178184d89b8152ffac941b0c804d88f174de551c28efde7e14362e8dc4a922baf79abc156b64e1d6c5e23f7eabc2e3e6df69954a66c5e0ada0
+
+Hash = SHA-256
+v = 0xebe52c3cac712e0be1ba08d4dae9d38c960c3f092ed0ee375b12173b1cbe8c2d3380eb4b38f0c529b3c5b207226c2b4c7741249d965a1437abe480b1bb331584673e6e0b83daaf3b2fa370f10dc3b8d599b419133bce88a42cc2675543563faa999d939e90c1c8e7024b906811faa9034512890e21b07135a1ad306380aa5c9462a21e0d635a20b076091145f8f1c0166efde224af4d0ce5ffb9857ddac93875758e4f191131f5837e3dd5bbf8c3242879d0bd7bc9f75a0e492804c69b4fbac8ec02844729a565b859f176e8fff9348deb0ff1ee429c2fffc14af6764dc0c4578d41cd3907e21cde6db94aa64fb79113dde08144c77b404d15addb04d001579d19bfa16830da366a7476a29aadcdef47423ca652f773eb0457c0816683913b63f15a4b17d2bbf3da2dbf976fe5bf66db1cd5a02f0f4765bc636ebe151d95031c6a3fc285c3df130be7cc7281f3664fecacb66be80571551d15a71b0599ef76b8793f1e75eb611f33dd33a046d9c476df84c76c5fa85b6627e6c38756c84b271a
+A = 0xfab6f5d2615d1e323512e7991cc37443f487da604ca8c9230fcb04e541dce6280b27ca4680b0374f179dc3bdc7553fe62459798c701ad864a91390a28c93b644adbf9c00745b942b79f9012a21b9b78782319d83a1f8362866fbd6f46bfc0ddb2e1ab6e4b45a9906b82e37f05d6f97f6a3eb6e182079759c4f6847837b62321ac1b4fa68641fcb4bb98dd697a0c73641385f4bab25b793584cc39fc8d48d4bd867a9a3c10f8ea12170268e34fe3bbe6ff89998d60da2f3e4283cbec1393d52af724a57230c604e9fbce583d7613e6bffd67596ad121a8707eec46944957033686a155f644d5c5863b48f61bdbf19a53eab6dad0a186b8c152e5f5d8cad4b0ef8aa4ea5008834c3cd342e5e0f167ad04592cd8bd279639398ef9e114dfaaab919e14e850989224ddd98576d79385d2210902e9f9b1f2d86cfa47ee244635465f71058421a0184be51dd10cc9d079e6f1604e7aa9b7cf7883c7d4ce12b06ebe16081e23f27a231d18432d7d1bb55c28ae21ffcf005f57528d15a88881bb3bbb7fe
+B = 0xe4e338879ef55928d8c6242187fc514f5118675749ecbdd76cbd01759ff6f94399e655fe92d656bedfebfe5f4444be01c74ef747f11a7deb67ac99ef9837bc37e5a2c94ccbac1b1b12a1e9be0eb0ae5e0f74b314e3a7625b2e11364dfba043eefacc9da0bb0aa14f3806b079fadb55abb1362cc8090924fa13e30f4198dc3fcf012d69c8eb32e4a93126a830f37709c07dfdf8e66c0fa6d00ad4efc3f03956cbb06f7d2739c14f8bf057ca9282117659114dc265535f7a49db4fefe558a36d80b96bddb96feba4bfc62be99b19b7bf363d59c0e47d1465ad768df7b0f4c4a3be2ab58c9f60591c485b96a0d02481a58c7df3926d4df09a80b80f197cf3c4e20cb8bd6fb4951fe3289c1774a96581e2489f19f0f8671e0fd7547c212fa328b7b93039fec06e55fa7bb2cc373ba1c5f3abaf10f2a42dbe741421757709c9d23440ff2a256f9909b04ebacabf95efcd5676c74bb4f7f4a188643511cb64fa5f00809dea47998fba13c8eb5de902e89870ec1ea189de5e5d6a990391fd324644f83f
+S = b15cbaf557c03f0e657550a2aea0ad2ef92a76d1cff2f078597504754f540498f891ea952c85ccb74b6a9af22990364db8a55d424745a97ef0ac43c03d3a0b36bd1145a2e7db880d42283cf3541f960b33afbd1d39bc9bb6d34f3ac9844e796f4fb5724d906bf28961062248f229327ef5c57e6fc754bb5decb56c021079e9ef8a0b1f2b5f8571c2eb14c04b7d794b1e8bf17b9940ff466d3a337f361e41eb52a7a48d478d0cbc470e2e10dca3120f0b0c41c69bb5bf0510f67e9981dd5c6a1161259a18b7c795002f1c7bdde398372ffea2dcf70c6217540af8c4ca3d5e0f334c281339fbcfe736236196ab12666ee6e46d4a8ba3999671ea54c5896392d7fe1aaf493832a3be150906bdc27b6cb0735575f5f32a799242f543c444340ca7f11589308b0b479f82fa2cc321935e82a3a5d628db2329e6657fde217d3010246c7de650e2439d2e0bdd0fd5b7ee97408dec362490916f82698db530cfd17b35c93107780453cb598b390da1391d01757c18b67488f800e8576408a8464e0d53fc
+
+Hash = SHA-384
+v = 0x0b766c9537ac2d67573b4446145ce8121f68c47c66f6725bc0bbbe37141a400af7d0920964c0a6791c102147b09d7efd4b7d6277968e9dc2144e6c6ba8b3fd60ac7b6a3cb2a575e67e0b138e082b9bd0ff34710752bb478ad9fc163e90810bd675cfb916e95944c4d3fb99ecc49ae83ba990513bc904f3669b2c2245b9fd4290da2e30f5f5065d6e97bf5b37fa068a5129c0f3a1ed21460a7ece62545fd07f33466abc71eb3f7eb9e5bf9776b8ff33ee8c8c7c93d1757f69ba235cb2a1ba7c778c1fe820a12c914e4e71c58932b88c617746861bf7db3a0e95983f5b8ab7996d55661a32ce67f125bf2cdc0198ad64aeeb1e4a11bedb8463b843e742abe3d3280e35187da489c4927bb75805bbc7fe64651207daaf82f9f5a2bbb2d96bd15e6fb5721f58086da163a259459ffbc611285edc2b29ec8bf5eb5cb30cfbf68bbb16a8af631dac2e1ec0d43d8e9caef33f28423da2fb74b97301434b227ac9ed81877f279ac1e9b1001d39a3e368ddea6190f6fa3872dd7129bca17bd814e1ca8855
+A = 0xfab6f5d2615d1e323512e7991cc37443f487da604ca8c9230fcb04e541dce6280b27ca4680b0374f179dc3bdc7553fe62459798c701ad864a91390a28c93b644adbf9c00745b942b79f9012a21b9b78782319d83a1f8362866fbd6f46bfc0ddb2e1ab6e4b45a9906b82e37f05d6f97f6a3eb6e182079759c4f6847837b62321ac1b4fa68641fcb4bb98dd697a0c73641385f4bab25b793584cc39fc8d48d4bd867a9a3c10f8ea12170268e34fe3bbe6ff89998d60da2f3e4283cbec1393d52af724a57230c604e9fbce583d7613e6bffd67596ad121a8707eec46944957033686a155f644d5c5863b48f61bdbf19a53eab6dad0a186b8c152e5f5d8cad4b0ef8aa4ea5008834c3cd342e5e0f167ad04592cd8bd279639398ef9e114dfaaab919e14e850989224ddd98576d79385d2210902e9f9b1f2d86cfa47ee244635465f71058421a0184be51dd10cc9d079e6f1604e7aa9b7cf7883c7d4ce12b06ebe16081e23f27a231d18432d7d1bb55c28ae21ffcf005f57528d15a88881bb3bbb7fe
+B = 0x011b8498441dd57564abf268375d1158f2090c43f5058811df1a01a4f4a267a9f521dfac30826754edd779d2e6a1432242f28006b5266b68c6b9cf4ba5de046b7f62b0ab114585cd54776f6e362b8fd5a5f13c5c4e6d1ef96a3625c69a7ce755d6ac0344c6124de4ecbc7532d1dd41c3bb58dffb17628ecea32916cf5f91926e74062c4c7873c94732e8b7b49a7f78f03ba68bac4c82be5eb73b1484535ace3f458f33113aeed5dc70df753b23c10bc194537782b9b0439bf911e2c8b7682c91667bfa7936305f429f8846b421c19b8ca1aab76ea1d83db5a19306d1a208cb1c6ff4ae185b63111f3f1400bb4f2c0742e928230682caa8aa23b3dc87d8d0b7bf67964fdd58ea57a86a2a0643cfd4a261d2d02a02ded41004f41d46c320e766015096b6494520729aee42ca822db16a4e62c03f153653cfa3272864eb6859b9fa58687230044841e5850445b159a5f52e116b3c1c534f3ad82ed879e5037631448c104e7ea02837701f5706f0a2bc1f740636749f5404ea12fb291b7f465981c8
+S = 4ba6947bbcf8bd47bdbc620c74d8558442720c8392f5492c6c082b8ce1fee350a76d5ce605df988710f2fa6c9dbdc48ba7efcdf6634c76a53c6ff1dc567e5bfbbd97912a916696e955dd94b701a18ecaefc63cd4f0d008f90fd042a1f3c1644e545588a871e5a1a370c6d93d8ad16b725740f739c5928ef30de3df2dd9ab6bd485d00d1b2b138164a7c68c18df56f53957b52a2db719ccbfeadeb8686d32c79c64bf6a33a77fa645c9a2416653a432bfa58165e0edc17f85817d84d0366f0447fbd83ebf27c2663751fd06838f1708c6aa06d9374cf782f89799d88530089cfde6613fbb84bf9d0702271aa9a9a51a4bbb63b1949cac0d6d9daea50210d3bfa0ad78aa67b3e925d4911f2e5b6ccb81d8654442444061228fc18f12ef50e346b79ff253a4b2d729e4ec250a7a54ad117e1a1c2a1d6e90ce498ec6d46e3abfdce9f6f7ce9e4b704d39cf52e350dacf40794f3845ee14b20e584b0f7b493e95b07ca3915849f111e6b9d98dee8ef4cf465e5be23383f343ad60031dc2d927b3d81d
+
+Hash = SHA-512
+v = 0x9b5e061701ea7aeb39cf6e3519655a853cf94c75caf2555ef1faf759bb79cb477014e04a88d68ffc05323891d4c205b8de81c2f203d8fad1b24d2c109737f1bebbd71f912447c4a03c26b9fad8edb3e780778e302529ed1ee138ccfc36d4ba313cc48b14ea8c22a0186b222e655f2df5603fd75df76b3b08ff8950069add03a754ee4ae88587cce1bfde36794dbae4592b7b904f442b041cb17aebad1e3aebe3cbe99de65f4bb1fa00b0e7af06863db53b02254ec66e781e3b62a8212c86beb0d50b5ba6d0b478d8c4e9bbcec21765326fbd14058d2bbde2c33045f03873e53948d78b794f0790e48c36aed6e880f557427b2fc06db5e1e2e1d7e661ac482d18e528d7295ef7437295ff1a72d402771713f16876dd050ae5b7ad53ccb90855c93956648358adfd966422f52498732d68d1d7fbef10d78034ab8dcb6f0fcf885cc2b2ea2c3e6ac86609ea058a9da8cc63531dc915414df568b09482ddac1954dec7eb714f6ff7d44cd5b86f6bd115810930637c01d0f6013bc9740fa2c633ba89
+A = 0xfab6f5d2615d1e323512e7991cc37443f487da604ca8c9230fcb04e541dce6280b27ca4680b0374f179dc3bdc7553fe62459798c701ad864a91390a28c93b644adbf9c00745b942b79f9012a21b9b78782319d83a1f8362866fbd6f46bfc0ddb2e1ab6e4b45a9906b82e37f05d6f97f6a3eb6e182079759c4f6847837b62321ac1b4fa68641fcb4bb98dd697a0c73641385f4bab25b793584cc39fc8d48d4bd867a9a3c10f8ea12170268e34fe3bbe6ff89998d60da2f3e4283cbec1393d52af724a57230c604e9fbce583d7613e6bffd67596ad121a8707eec46944957033686a155f644d5c5863b48f61bdbf19a53eab6dad0a186b8c152e5f5d8cad4b0ef8aa4ea5008834c3cd342e5e0f167ad04592cd8bd279639398ef9e114dfaaab919e14e850989224ddd98576d79385d2210902e9f9b1f2d86cfa47ee244635465f71058421a0184be51dd10cc9d079e6f1604e7aa9b7cf7883c7d4ce12b06ebe16081e23f27a231d18432d7d1bb55c28ae21ffcf005f57528d15a88881bb3bbb7fe
+B = 0x40f57088a482d4c7733384fe0d301fddca9080ad7d4f6fdf09a01006c3cb6d562e41639ae8fa21de3b5dba7585b275589bdb279863c562807b2b99083cd1429cdbe89e25bfbd7e3cad3173b2e3c5a0b174da6d5391e6a06e465f037a4006254839a56bf76da84b1c94e0ae208576156fe5c140a4ba4ffc9e38c3b07b88845fc6f7ddda93381fe0ca6084c4cd2d336e5451c464ccb6ec65e7d16e548a273e826284af2559b6264274215960fff47bdd63d3aff064d6137af769661c9d4fee47382603c88eaa0980581d07758461b777e4356dda5835198b51feea308d70f75450b71675c08c7d8302fd7539dd1ff2a11cb4258aa70d234436aa42b6a0615f3f915d55cc3b966b2716b36e4d1a06ce5e5d2ea3bee5a1270e8751da45b60b997b0ffdb0f9962fee4f03bee780ba0a845b1d9271421783ae6601a61ea2e342e4f2e8bc935a409ead19f221bd1b74e2964dd19fc845f60efc09338b60b6b256d8cac889cca306cc370a0b18c8b886e95da0af5235fef4393020d2b7f3056904759042
+S = f1036fecd017c8239c0d5af7e0fcf0d408b009e36411618a60b23aabbfc383397268231214baacdc94ca1c53f442fb51c1b027c318ae238e16414d60d1881b66486ade10ed02ba33d098f6ce9bcf1bb0c46ca2c47f2f174c59a9c61e2560899b83ef61131e6fb30b714f4e43b735c9fe6080477c1b83e4093e4d456b9bca492cf9339d45bc42e67ce6c02c243e49f5da42a869ec855780e84207b8a1ea6501c478aac0dfd3d22614f531a00d826b7954ae8b14a985a429315e6dd3664cf47181496a94329cde8005cae63c2f9ca4969bfe84001924037c446559bdbb9db9d4dd142fbcd75eef2e162c843065d99e8f05762c4db7abd9db203d41ac85a58c05bd4e2dbf822a934523d54e0653d376ce8b56dcb4527dddc1b994dc7509463a7468d7f02b1beb1685714ce1dd1e71808a137f788847b7c6b7bfa1364474b3b7e89478954f6a8e68d45b85a88e4ebfec13368ec0891c3bc86cf50097880178d86135e728723458538858d715b7b247406222c1019f53603f016952d497100858824c
+
+Hash = BLAKE2b(224)
+v = 0xec63341dcf3cc4c06412231f1bf2552d8176e762870316fdb3151ed827a7d861f31d63e44d7315d4ad9b89a2053c27713ab7c6a78cc7fbb2515de9e14c7fadb2a848ff8eb1597fed78312d5285c6684169a194faa1736a322977566fc4fc1d2246df6936d85bdda125b39a4900bb7ae0f89b8e974bafb2fe0c088c97b50339f565b02d7702e5cd431d603b63c9be6a91b12be2930c1c7ea6613f770fd2e535249833dccebf784c2c60a6ce0503ace6e8601a461fd9b96f4befc0642afdb8cdd8a512ce1c4b7ebdc7001964b3bb2757b246b683ef1868a798e0bbb569c4cd395ba6605ee93c85a70b3011781c04a14e859ba7e275cc787eff0cf8454395a8a70d5a969cb175af3d26051800c4ef9c2a7736995c4fef966a7ed061a5cc1b8a1d78374430dfe211eaec088f2e0df2ab7a69abce31733f5205e742a7ade69c87814d743726ac03f764221000ad860139f67c28a457d0c5b9ad0b53db279b47b7d01c909a1d4790252846f61f9accb9bfcf0f065fcf3c6003ed0b9c34d682704d3a50
+A = 0xfab6f5d2615d1e323512e7991cc37443f487da604ca8c9230fcb04e541dce6280b27ca4680b0374f179dc3bdc7553fe62459798c701ad864a91390a28c93b644adbf9c00745b942b79f9012a21b9b78782319d83a1f8362866fbd6f46bfc0ddb2e1ab6e4b45a9906b82e37f05d6f97f6a3eb6e182079759c4f6847837b62321ac1b4fa68641fcb4bb98dd697a0c73641385f4bab25b793584cc39fc8d48d4bd867a9a3c10f8ea12170268e34fe3bbe6ff89998d60da2f3e4283cbec1393d52af724a57230c604e9fbce583d7613e6bffd67596ad121a8707eec46944957033686a155f644d5c5863b48f61bdbf19a53eab6dad0a186b8c152e5f5d8cad4b0ef8aa4ea5008834c3cd342e5e0f167ad04592cd8bd279639398ef9e114dfaaab919e14e850989224ddd98576d79385d2210902e9f9b1f2d86cfa47ee244635465f71058421a0184be51dd10cc9d079e6f1604e7aa9b7cf7883c7d4ce12b06ebe16081e23f27a231d18432d7d1bb55c28ae21ffcf005f57528d15a88881bb3bbb7fe
+B = 0x87c1140e1bf7e8e28bc81300c6ce3cbbe9d1c2d6c76fea275e14d03144d9b10ef0ff1d8519d47faf25f2d530dbb1e5e104c4a01d1651298b67dff351d76ad11b46b582811a766cb518cb705cb436d87e88d745b29958ca657fd2dc7cdb9e680786b925617f4e34630b235ce7a49957ed95b7abf42fef0469186d2406ee130f449b21dfc139a1bb71523f575fdeb1f102dd2c923e92ea49748214b19ae65fa07e327084539a0b54135a7d93ff58a01e8680e1f02c8cc8e51705d3fe48c9083c44c49701f292ac7443f625074888f2faec0838e9280344a799c5a7f5013ebd06430f34a8e1d6f14248184a6d77e2a1dac675582e5aa9a1f1ce1aaee5aed9a4e2dbc5ede0f47423b1e52951c739fc88da7291398fb9b04addc2fc3f9ddf75d2cabfb2d5527359a1226d869b49fbcfd043a9040be9a4b794aec0ef8b8dc2317c2dfe292b29a023ae747cfdd3c4e3bd21514d842b3d2cb598e025a2b089fa6fa6105cf61dde4af670d0588a520c21b6408ce99302cfdebecb2f48b04a2e2a040228f7
+S = 0837b665ece39dde82aacd08a24ca8694840b3df65497396a8544f2d57b993817365ade94f6baebec3534a8a219233e3bcecf03d7504c0f12e823946f2920b0c08fc4dd363ed6a24210c3a4aa9ee0cbbbabb3cded1f526bbf469b964eed4e987fe81cd26015c41d52fb819dc3588bc088786504626efe9b5c417cfe38152913ed548f5457adfeb5d12dd577070f4a98682f290490784001b337888e7a45ed3aba7caab45cc239367550ef55eeb187734f6669178a8673d2059ca6d45958b6d35f6d7c1f86871471ce6f78b4ceb493395e9cf02364ac082ebd41e4ab2b57c4523940390997cd46d3446739b8a03a4cad3a059712841f55af5cdfc23cd431d4a22e51292eb1889a89ccdfa795d2f707584b1ccc0651c40003cf25343c9057a31081ac4643d720e2a06eb5e35cdee7c28d4d8b5ef1eb9a1b76b3cc01e56612343e97f9fa7e035a36c520ad2882e30aaac346917a5fba4216fd5aaff35e645d94a4e8ca6cc1c8f014048fa1bc673e99b30382ae2a62b97ee5709d0e0ea18e3d3631d
+
+Hash = BLAKE2b(256)
+v = 0xaff7cd1cf4c4556012498b6390dd6169ba6c647c1544dbe2f9e2baa4b75763ccf4a1fbcd8aa867027d93ae3fbf18f667947c7d7ce380465ef4e223c67c654227d817904e09745c52d896b7ed0ddc8e99de6c65ab9cb289eca5f6926794480e9a794eb4d543b7a80ea6f6a0f2ef8e3c12fcea7a55a9c5410137adc7e522fa98474d0abd990fc5364d98617221838b599a3a4e0201dfd9272d350bca715f55570ba64732674676a351a295021a03ce608cae00eb79d90fa86b60b850a5bf7e2f67d3089415dbf7da8398a3b6deb1deb778cb5cf5bf62ef88501d493f406e1002da8b7c4901033fe142e0299ae646a1e2a0d6513a2ad6b98f0fecb724d0d82a64b1cac0cc67c7e634f5de45ab2606cfd334e427ce47f55db2ac49b8825988fc04416beb189f61236da3e491dbd6fb99b7fcfdffac2ffdc3933dc3bf6c3d2f91319efa1ddf60b36b5b9fb07bd6edcb3626705a24738820be9afa3af13689c6adddfc6226bfe0bef300feaaf1fc48c2cd5d32afd289d566bfead915011d392229d427
+A = 0xfab6f5d2615d1e323512e7991cc37443f487da604ca8c9230fcb04e541dce6280b27ca4680b0374f179dc3bdc7553fe62459798c701ad864a91390a28c93b644adbf9c00745b942b79f9012a21b9b78782319d83a1f8362866fbd6f46bfc0ddb2e1ab6e4b45a9906b82e37f05d6f97f6a3eb6e182079759c4f6847837b62321ac1b4fa68641fcb4bb98dd697a0c73641385f4bab25b793584cc39fc8d48d4bd867a9a3c10f8ea12170268e34fe3bbe6ff89998d60da2f3e4283cbec1393d52af724a57230c604e9fbce583d7613e6bffd67596ad121a8707eec46944957033686a155f644d5c5863b48f61bdbf19a53eab6dad0a186b8c152e5f5d8cad4b0ef8aa4ea5008834c3cd342e5e0f167ad04592cd8bd279639398ef9e114dfaaab919e14e850989224ddd98576d79385d2210902e9f9b1f2d86cfa47ee244635465f71058421a0184be51dd10cc9d079e6f1604e7aa9b7cf7883c7d4ce12b06ebe16081e23f27a231d18432d7d1bb55c28ae21ffcf005f57528d15a88881bb3bbb7fe
+B = 0x1235c3bf9adf4c2fe037706c2c8d85f1bfa828eb91f3f76d81bf1495c39491357c3f2dd98f31c749d5095d2709518ec7d904f5e1b02e2383d2ad801ce8b49b4339f0d3c4a7ce85d97b90e6e7c3029aaedbbcffad18ef630489bfe0dcd15aa71de69290b52c5bbaea56e5404b8f7f8ba16e37c3ef9270ea346885712097e2ea0af73956606baa11b430a3ee2462b20832af2e3a1842155d04350ff0e5045d1e5c70aee9e1856d21fe7223b67ad16e2866fc905e7e7d90911410c1bca5d0cb1700a2b02d60d012d99bfde45d0374571f35ea67bbbb5b1a786022c096568582a9aac30efd2df2772ba76351b84cf12f919c836f24f063b31c1cd565aa2325b32401e2eb82a5bfc1f5bdb86d69515e6bc581e0643f2f43db546db1480457405b838d5f829eb5a392068b03b754989834df8bc5980df144256f758184b19b662277c23e465916eefc32c01001fb38cda2838b219f78a7084d6428799ff896b181230d7d17df3d7914ffeec06f7c6b134055a175f78d2995e78921b5fbf2b596fc99cc
+S = 2982ea08652a3d2ee183beeca94f942c7ab12e2b97e85b0a9249c4925f69d4567a8d710683e6a8a1777fcee2ee85cf04add02a8857df3ccb5bde95a04e8931a820ee8ccdd7e093ea3c9034c22f75960d646a6d4100102a9da8cdfa21db779e30af6bab42fee878e88cc9023376b740dc817ab82684a713d9ac6a1e5b949bd7660241b43f2677ea98bb74cc792cbeff3c0b36eecfc3eab4d07a20154608cca8d07371198e986e61a6e5a6336c219dfc242bb28d98e6dc8f2f23f81f619f297a0059b3bccffbf399ad081e9a96fb98b9eccbc0866ae2dffae043b6d1c6a181a3c3f5868d7830b5370d38b1c90d3765e4283807b57afb3ccae2d14a129b4edda838d732d932bff57d5856b14331dc63e6a0a11505eed90a9d66fbb6f78d57af50ab98743046d325b355a3238a29cb1d51cec263d6468fb56cd0d8f4ed037cdaec9730f41e16cc8b94a2457345a81b20cc0179d585370a2aa1c4d4380208166887483e19aaefffa6c61414bf1ab6cfbbf8a8c1b3f6c5aab22b770bdfb6d950f1f1b7
+
+Hash = BLAKE2b(384)
+v = 0xedf6ee40fe1be5ac881f415bcedfbfb4244eb035f0788845601a54aa730100844593bd96efa52688013134dd42bcf7d0a251d2ff2f900550ff8dd7b6707ccd1afc6ee1c48442bbce69703849a7d5dee56a2b5956fbc97ac9e77bae445748f31e31611f086d4a310e3f702fc3de059ca2bca40dc256d99484fb0ac9ecc5f9f7dd89e3d5fac44dd462a94f9137c0668c7e9251267a220a02a682b06ed79e81795d041a0ba8e9f579e7326cea6be28ec948ecdcbda45af26404b58fe4f4dbe00ca075be7d4d61908c0327e837b3d5e3023ab67a8fb0c3aa94b33afe5280207a09ef424cec3e5cd0b3e7934952881b69c1e0f45e1aa0f58c40cc72738ad73011a49851e399c82ce0338a9e85d1b4e0d8baaf63abc90e2687c1e9ab6a104778805baa0a087e578328e8491758821ea440b8eeed4a96c39ba2223baa071ef91d3bdb35c55ef3b7300e5675c9919fd2faedf0f7027c029bb468f0ffac6812ec274c08910b2e70d5ec00cc7f56bbb5fd7834e71ea62b00c9628e434357cb9fe22bc04ad7
+A = 0xfab6f5d2615d1e323512e7991cc37443f487da604ca8c9230fcb04e541dce6280b27ca4680b0374f179dc3bdc7553fe62459798c701ad864a91390a28c93b644adbf9c00745b942b79f9012a21b9b78782319d83a1f8362866fbd6f46bfc0ddb2e1ab6e4b45a9906b82e37f05d6f97f6a3eb6e182079759c4f6847837b62321ac1b4fa68641fcb4bb98dd697a0c73641385f4bab25b793584cc39fc8d48d4bd867a9a3c10f8ea12170268e34fe3bbe6ff89998d60da2f3e4283cbec1393d52af724a57230c604e9fbce583d7613e6bffd67596ad121a8707eec46944957033686a155f644d5c5863b48f61bdbf19a53eab6dad0a186b8c152e5f5d8cad4b0ef8aa4ea5008834c3cd342e5e0f167ad04592cd8bd279639398ef9e114dfaaab919e14e850989224ddd98576d79385d2210902e9f9b1f2d86cfa47ee244635465f71058421a0184be51dd10cc9d079e6f1604e7aa9b7cf7883c7d4ce12b06ebe16081e23f27a231d18432d7d1bb55c28ae21ffcf005f57528d15a88881bb3bbb7fe
+B = 0xf88b98a9cbb2705a4daa847f5b9896b828df84b7b8bc134798698bcdcd3f3a20309ddb54ad5a6979b1a692d03772c6c3a0ab468e51f8985f07a51a0313d0f9384c9cba5014fd49f7cf72358e03773a58b712595147dcb10b35e28113b7a04d56850138b5d49762e60356905725428569877f951c4746de9d5cf78ca3e0dec5ecd45e599373e4250b2facf422a615e8fbe85240269e41eeda2f0c4654cd0cb7bbb61f493faa2e647ea19c03d5b32bdbf9402eb2cf795d2ebf5af28b30e3c0bbf8f08424f6f1d37e910e6f36fafb38434b09312d6b2045d3e9179e3c65394f4d33a02839f2c5c5c0b6fb11959582ae4caa8bdb65a802a21cbca35d249ddcf94278d7a9dda22510a532bca8480dc59f1381b367cc30a8aa5b4f78a2a26a88f867db8719e4765ee0d01d128775ccc16d9d3bc97bd6c78b9e8dadb64b0041a350266fd6ca5eca40d37e0dc30dc727d47ec869a4e83bb6e09ce01acee486436a96a63b158fb701d27764e1d4f8937cb78f8350becfd4a2d44bb81278fec4798d312e04
+S = 386506c0b0f0039fd4c2ce7fe5c00bfebb843608398af535072f30e3844860f90a15fc176e209c1010a388aa5f6d942cda1c6d59954e0cc2124855db2ff7969f62958eaed903cb479f3aec778883cf23df2eb83033654473e32f9cb987fff351c1249cf975349f06be97ef8e1e6745c2d80a153261a8771de84a13782b20f309a1d9d6a2bf1ad82038ef0849be906a2ac1f43a548ebc366d7b75fb1653f7c88cbc3bf3ba2e6e3d1f174cb1cc8987df21e34c38217a681ad12aaf989610649f1f8683f6eeb53fca3147a8201a79ac5b0af1a03796ac236809184108b8a13248763ab0c34506ffcebc73b76d4388a9a2cca8f96c044deb10b1ff60e96d0ff9c919d9acd67826dcdcad5b727bd2472444041938fc933dd6c80d739ba6752791668cb386a633786360effb63a3c2c13b5b64ffae00137ff698a205d0a0fe70f14ce3a7e0592cde992f646c8a0a7fafdf858907a7af96c314dde2a37d2f0e5b97c14d5ba3440107217eb4beab8b6b0190d8d4e0a9efc41a8585f476ab2c566391137d
+
+Hash = BLAKE2b(512)
+v = 0xe09dbe866def5bcee6b36f10124b2805ecb407ac04b246c402ee017669c8325c7375f7278c61c3aafa45215548390c7792592fed08539e4b9ff64e05ea96f779d5e8910159896d9ba87cc0a0c47ef5fdd6c67fcbb9dc703993326f9c2453a47d6a3362f5937cffa99549f7d8c4f7f0b77a861da78f0c7118d6db1b00cdbfc48f4bf1c82717d8b8b2a9eedbfdc3028f9be515a9ce011a6dee54dd9e3e19dc5156041c883d681d1ebbc5856a896ead8f9d6544654ff6e79cf70db4770a18b6a35a36edc08f79845a010ec1857a73175f791fa48b08dbb5fa008da6e40dfaaada73f4ce9767419128f5444dfdedc854964172165f598bd9191044ca936286c46f188d828550eacfa35799222f7cae05a38b2057f286c138241161420b9f94325f2abb742d65e6023afda74122d99ddf65796b81d968f6c3dea42c5ecc343cceba68159226df6784670ee3b49a858ec56b1c33a337cb34a4ec5176ac0bf765b497b59ed65b647d1d4322c9ae6417d5b97755a671bce65871c0b5db7003706d27b3a4
+A = 0xfab6f5d2615d1e323512e7991cc37443f487da604ca8c9230fcb04e541dce6280b27ca4680b0374f179dc3bdc7553fe62459798c701ad864a91390a28c93b644adbf9c00745b942b79f9012a21b9b78782319d83a1f8362866fbd6f46bfc0ddb2e1ab6e4b45a9906b82e37f05d6f97f6a3eb6e182079759c4f6847837b62321ac1b4fa68641fcb4bb98dd697a0c73641385f4bab25b793584cc39fc8d48d4bd867a9a3c10f8ea12170268e34fe3bbe6ff89998d60da2f3e4283cbec1393d52af724a57230c604e9fbce583d7613e6bffd67596ad121a8707eec46944957033686a155f644d5c5863b48f61bdbf19a53eab6dad0a186b8c152e5f5d8cad4b0ef8aa4ea5008834c3cd342e5e0f167ad04592cd8bd279639398ef9e114dfaaab919e14e850989224ddd98576d79385d2210902e9f9b1f2d86cfa47ee244635465f71058421a0184be51dd10cc9d079e6f1604e7aa9b7cf7883c7d4ce12b06ebe16081e23f27a231d18432d7d1bb55c28ae21ffcf005f57528d15a88881bb3bbb7fe
+B = 0xfd53b58f81af32e786703b3c2c4926f8fc3db459e49cd6ecb5e59dd3e22c914a3b72ca4701655c7d90d3046a69db9eeb446ab6169a5e6b3bef9e197fd9cb232d59afb5d2c7e6e890daec9b8f5b07983f8b3d8f338baf61f26223722832d53396ed2f5ec91bc9f17e953e7a8522920068ec04d7005fd25b692d00c5eaaa9101ea126b438166691b6a480bf527a24ff8d27e237546ed2954a52b7da7bb80c8f23579a3e96c95135908cb796ea1bb80a17c7e96ebd2c92ad0a57fa00874f75187cc9f112ffc029f00e5b7d3c12a381de115eb3e6e74f044015572e6cd06710cbb6055abd5fa65a2218fb62fea516726c38981ebfd61c3a345cb9a23ff7d652acb99723155d35fb8e96963e9498f58c8e97611caaae60ac4bec599e25e5337e410c725af5fd52c0508a4168caa4bbbaad81e4fd2a9ff3b8f6f082cec9a17eaa06cd8547d85581bc68b725cf812f5793762b390581cbb5e6cae6f35176fa231f8d916da8fb67cf8b448ccd2161203acdcb0a5981f34ac224bbb4291188809a5cb87c7
+S = 22544e7240c7169892250656217965e5ad41666978b6eabc4939af08ea959310b54e709a59dc18d8ab69aedf079a827279b6441084802588d10131fe505a748a66348ee713be670be5d66115e5a712764043730ea1355c045d9adc6277f887d7d106691d5dc33d8bbbf8c232701501a8da958a0e68fe19cf7c577efeafccc499e85a431c9d2a010540a53f4104c488c1769f21f6ad1f87a9203e1991dc584b670c51553447a9e36c2e2e73c004f51df3ea9f7d621b81118f9adfba7d0563d0e1eca2fca64ab3632474898f5199e6e79488dfa0f56a19097aec597e6eeaa4398f8a9a88fdd0941252b4bba24f4143a7f2f09062c85467b5eb260de067f9b2987a8129b87cd17d017c64e9832b4ff9c3e8d5b19dcea9eb64d9176c1b23903f2f2f2e32cdff3faeeca6abcfc15abf6f573527de88e3bf59958731b32a22d24daa33af1c025e36a35db9b512dc00a5655dfb1054257b4abbbe3cd926e7fe74705372b97ffa25eb367f62469b22ba67423122956520865aabf2ed1a432f107ec4bdf3
+
+N = 0xffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff
+g = 5
+
+Hash = SHA-1
+v = 0x30716d4386a077c18f80259ce80b9f4a15015f2ecfdf3968e2b057b5bddad3dd9150dc1f82f450b8cc0f41ca6f5145b99a30cbcde2fddea420c0218e8446d22ee25eb74f960c31a56ffe975b2bccf3a18da7f9c146cdd8acd432695eef4b4f28f889a09fc7efa4053aecaa07137707f670642220569b9c5ede52bfe3e0976df7bf5f75b513832d8f26a02af4308061db7df2f694d4828ab14354a02d466884aee59593079094198187ebc6baee861501d7bf3ffcd712ad1780237ef2486e9b70bd3c0b2f386e775d115040b481d63cc4b2d978d9bcea3aa187d33a55f087623474357e37cb94f6909e34e7cbb1c10ff61d587721fdfb63c313a80b39295fed0e4a29a3cbe6c9a8bca9b9d454b3ab744026e33accff7d1b67a2f12b8d76eb315331ed261facbca7b21f434e3021603a479b4cdca5e0ebec0e69386233ec803b4f38b50f5c7d91cc7e78ce766494a9c5b7cff844946fbb96189aff9eacc34edcabe56bb6608576699336e1b53e13c14b0b1b6d17e449df3b3d6ad29fe1ab7a22fef7f4465063d35263df4a161c37df117e0e6cd9c98f2291e8d243df729a40800ae426260d6923cbf342b29c4f22e83199cca9897e7c5c94c682167ff32bf5693413c0455befbee0571243e31d3ad19ee48de853ad7a3fe29070bc1db48c964892af73590878f957da1d5660f7b68b1b8c86f13251a25dfd9dfd8c2abf34cd44dd
+A = 0xefc47c04488796a19f9d90ae91c8e215c65fee070f7b1d829336f4bdd89279d6da2b7ba7dbcfa3a12785c89002e577d198252eb91845a379051a20dda3caa6acc535d7935de098e07930c3799dc3eaf0dfc1915433ca9437780079a275f79e08d6ed48351e77027beee42829508be603b2c327b5450a1712fc869409c6b8851da50bbff71a2541af86d5b5e2c7e2f2e239c4cfc491836427904015eef97751b2f784ea8762ae6bdd7f2898dd3e53562941053f3c16af1580909a5a252b5da34d91cd459757bddde71506e138f336583b4571c10471dd880ea115b492c97e53bac575b282422131dac1516546b7dfa5b3b33f1028890e9c9367ab95e904a603681888099ea170bd689be30e5845e4e825c20716163ca717b9b46f9a4a0366971554472cab5c944ae78a38442d29ce5e54ce068dd45b7b79484c7433020184dd13b4d2a77305940d5ca3e6dbb3dc59e03e964c8eae39e59e3e26c46cdc78f568b5e71fc8f7bea5ae95d0306e24f670262080d3fd934321bf036b344a52fbf59a32c4cc371aebba53a370a1d2eeb7450a694667bc2e31d24bc997b6dd54f2a60ed7451a1020f25bf11bfcc0c666fbafc9dc4cdf42e95656c987ba8dedb5a49e5e08d303d55a9f157def215101afc1d7fcb739c3e91bd89703f4b76c23a20bc1a0c2c925795d4edc901d2cc4ad2a0c63b656571fc853a55412e92fd92ffd91c330be
+B = 0xfc09923eff0b166e1bc45330d80548dfea23f59179767a7f1ea83f9e818dbd850048d911b548f2bb2e0e7c2af308a99cdc167771380d528ae56a50818e69d00b29270ef1493eaf15508f8e3d8db645e1b82b99086bf21cfd45e645fd5d5a425944a914ae5c8a37d66f5bdd9523af962e9662f479d738d9f919a8fd99016c37c475434385ab631000555a1b24827e5fc45b0ad1dd02069ef01cc2f23e99f7eec7b03acec106ef298f12b971aa6415ab1dc2982e86deaa3b8a784fe984273fa5807f8b19e348e52677b243d589276103bdbc8f55a8f0b8a0fd59f78fe72b0c3c71979d488b557d1be287de12ed0f8fc960e7e0e50a906087fd55174b00d1410d4850d87add64e9fb698fcc37c1976099a6da776ad16686dabb6dfe16cc4b90042cb25b6e4d5fb4297e1535e1844bfdf0080d43e4d81bd5aa324e731be7cffb7e1f8a00dd1ab740f8ad6f29a2917390b77a3f68f8930e30712f220208865d1fcf026eb4a4f02fab66612d4712c7d5c7c600f31bad8aac42f653db3718d860ab8929b8c7413937c1b48c1f52ffb19da7688caf76a505d2da1f3f138304d3a444e737342e06ae3d69dd26efa318b71e0d89a5d61685484fa7fdcd341e4f0088ada6b23908125bfdc5d2c54f1c552ecccdf14f1f759322e9c5b0f81e638b0c57f5699b445f9ea732d19e26b58e409f5670fe32cfc7fa9c350dd4a216844e747b407af6
+S = e253e70d1f8421ec98487861ed524c3075a60c2217e13918be9c29ec575ed55029389ff412a102879a599eee10bd3bb438da4cb52fba95a295f1e53c0b0ce9150ad3b01e96bbecf104de47ce7ceb275781f3ab0302f4872c796d16fc0b47eccd565aa37bed277921165e65d3369b4b1531e563719a53f31c3f1d79b8857ab6aa639c64d2c52c652efccc37deb3826dc11a2a3d32ec3c390379aa9f71578f5d29c6d45852d5f99477101bd8e2b4d2a71934412066995f8061357a651247372ed78a2b785f57a29e30debdbabb43f0e2537f36c00c651bfb49d1048beb49596ceaae6c9348332f3543c8e5cbeff0d8d25331a8169f905d0b03458a6f7771f1be8d4cab4893ee6ee6ee7de2b1f1ad9b6cac6f11b9ee1b6bb030c74a41a5989b5455d2914d73ca1d9943ab6333876bee28ffcb11c4620576703c55cfb82741448a34072ea78353f05a2060e27e539572af9c7c491b8ec58b55ef7dac8dff987bb85e73e8f58c3a27bdfb6f0083c7731554ee37beccce9abe1356595eae56c2eea24bb148e01df6010649b41e70ff5c6fe6d7ca29484d07223ad7efbc9fd98f450018c17d3506086caba39a50946f6dd833ef07a84dae3e70fbe9cb17d6a2170200d382e3c8d8faef1dfd985cfd8f44ecadf9dfb6932120dcfd789557fe01db4d6e45a5f844e7ae5524608713665b6304e7ce2cc5e58f45ead1f112f350636d2fb008
+
+Hash = SHA-256
+v = 0x3d7412caf4e5c89f7c5bf86df61baa084d4c45e34a4e7126f14604efd17486cc5c80c970789da243412778b8e246beb6f430023f40bf38c1a81d0083f8079882c29837ed6d6f41f462833818e6eb8559a1d432ff3c04bd6071967fb5332ab3e7bd9ce84bc12f125e12f0bfe01d525604932f8aa2e6472e94ab6818a1a92b93285fa10d647a545bc5000bcc064f6ed00a3dcc809c45bb2eed64c1e273655dfd8003d0b276f13ebcaf062dae55fd1759d7bc9b8e4c19e5fd5c7a6e649b81822400a9391677f29f71161e98d19e5825cf13eda2319f240e0ecabe6895b5482f290df07b9369686b9ea6d91fbe6410dc90b75f2ac33e63dd050d9188162cf52db9793920e2e7d0ba2e1ed55859cc77a7c157868fceb64b7322cc1b228df75c4c2ce12363a178f26be124f8c2fde1f1626b0165ad0df7b3b9aafd74f0fdc5f0516090865acc976cefc4597c755f529f0ffbfcfea36813cc92fdadc4b2a20e570cb327236e3144eb66619d0f5b5af69f9d294f83a0b95c6eaa7358fd8f2fd28b8b3dd1a47a28597fd48536ff42752cc0cdfadbcafe879c9789c5a7a16379656b872c02ee90ad6cdeb099abea3b4460768651229dc3cbe98346ada15e6f0da69ffddda881e2c056617f9872a4d75ebf6f0435ad9542649db2007b6a0a283a0ba9dfa043a49af231aa545d8dbc42646a6be49baa83538846a332171d29162eeea622b5a7
+A = 0xefc47c04488796a19f9d90ae91c8e215c65fee070f7b1d829336f4bdd89279d6da2b7ba7dbcfa3a12785c89002e577d198252eb91845a379051a20dda3caa6acc535d7935de098e07930c3799dc3eaf0dfc1915433ca9437780079a275f79e08d6ed48351e77027beee42829508be603b2c327b5450a1712fc869409c6b8851da50bbff71a2541af86d5b5e2c7e2f2e239c4cfc491836427904015eef97751b2f784ea8762ae6bdd7f2898dd3e53562941053f3c16af1580909a5a252b5da34d91cd459757bddde71506e138f336583b4571c10471dd880ea115b492c97e53bac575b282422131dac1516546b7dfa5b3b33f1028890e9c9367ab95e904a603681888099ea170bd689be30e5845e4e825c20716163ca717b9b46f9a4a0366971554472cab5c944ae78a38442d29ce5e54ce068dd45b7b79484c7433020184dd13b4d2a77305940d5ca3e6dbb3dc59e03e964c8eae39e59e3e26c46cdc78f568b5e71fc8f7bea5ae95d0306e24f670262080d3fd934321bf036b344a52fbf59a32c4cc371aebba53a370a1d2eeb7450a694667bc2e31d24bc997b6dd54f2a60ed7451a1020f25bf11bfcc0c666fbafc9dc4cdf42e95656c987ba8dedb5a49e5e08d303d55a9f157def215101afc1d7fcb739c3e91bd89703f4b76c23a20bc1a0c2c925795d4edc901d2cc4ad2a0c63b656571fc853a55412e92fd92ffd91c330be
+B = 0x81ea670060a87c6ef310a3a1d930e4febc0670def58bc3d32d17a430fb1ba2dab2d6262ae0d7d6104798bf35e0347eeefd2c186b15499b2878d88f23b22c2694991f7bfb73e8fd3efdf2fbe2b96cae3616367d65f7b4a71f7a37afc8d5db77d15875f6c69bf395a650cdfc02bf27d2477b1caa5970cfb96d389a057da0a54dd53f1c535329ac48f110cd2df8037d64e1786dbe34538d687fa8be0139a9d81650875cc7857ceb8ffb35176903eeb40ad9c19d91ddfdb25efd944fbb4b0e33dfffca439a5952992fece861775730046aac77f6f921f9b3f4e36310fc9721fdd81eb53f2089bae62c2b80e60feda4dce316daeee89b3cd8965ac9944d8504b2c1dfa3144d4b5c7ecfd69cb9bf811871dc623f2c83a1ac784b99394a85a5464924de6a885a59c4bc8d3b7a4c98e391f659814c84dc4c1c9b5b346e1085cc9e4b91cb5f45176e801e2ffd8ae00184b3b1ecc9d34928586b66e4d2a90f127c022a14bd70564d58edea7775fca49c4f5866864881dd06a383288c5ccc58e0b1c82e52ca204de24227c5bd68396c749aa54f5bceca81fdc8cd3e9f6bc58264c44e7e2e139467df7eebe747663cea3173e37b4053f4cd03efb21260f8b64e970ba29e4566268b09c0dda8d058e8bf260d7703512bf2a5cfe75390fdd69f5a6d868f41171f6565cb5fda63c6b08d17041a8e3cb101a06d51ec4455f0fe6e55b8946208d429
+S = 369581a04d4e7c0a7b0145d358ed76bb91c82074c3a1f3c1ac01b46d4d6a4d9e92e09f4294a376c1b2b611244313cd9a03bf6f487e748d18aabb573dbbc474ef033baa066be0645370786e4e1cba5296f54ca63e658870f64953d367f4df34a4886a563adce42f424e4c983d05bd680b5a0891477260b6895e295dcd77744a5ebd4d2c37ba5d0a0c372c70707df00a51999db7c02732c480725598208a0b99e8072fd32c9036945dbf955d38a89c9f953ff8caae2317edd51732eb2c1552a684fc5d92828ef806496bccb19ae302e09f4f8f5f7124af23dbda69f751d65e1089779ee92b2aab79437bbf4bd7fd0d2338a1d37bc91f47672c0f330a7f75ebc289abf49208a793ad2ebc4385350c73bc4d0b37ec6a4d60fc3a4cb000fe4b52440698264603ca13e069ac24ead77a5b0c98d239e81db78fefca2ed9e025e99324f5f25728e1a5632bd9657a7b7fe1aca0ef9906b73a2a0cbb3e6cefb469b8fa09e51d230b2bb90db59c13e107878f45a90dabbfa17ddd7f485c96a288e85b8fea4eff8350ed9f1cd558c7dc99702564cca85de79e3e78ba0973a9d391a5e565942f34bea3f4d2c6569a580725084c4834a0cd8690528164d2c1f0e81dbd8861a5b5ecc532914d7ae3afa817ea2f22d19b7dcbb8e35002e07fb2125580169fdfbb1f110c6f9b2ce5330a4ac6f3f06fb25126d69490197f9ba079561fcc326f3df753
+
+Hash = SHA-384
+v = 0xb61b18d5858c2c8e7283bb30fbe30f2b6506fc50d4e7ee335248abfcfd1514a65e7ad9918a7e86dacf325994058ea717690f2c7557046b844cb24b5bf9d245b6cb901d7af188c28afd62b3abc962e64386da893c89b98fea10abcb399a4f3744425705efed66dfa2dec307045d09c45a18d47c64598823585808c38b8e699ff1104ad66c28291d43449614de82ad21b50d349261982bfec8075265bc57e47e1ef424b2f2f3179988e8a81b3d6d47ff9ee99d6344cb4fa041a1306f4c45b89b297c00dfaf90985c747052536b64c6f442f03eb082fd6428f1b414a60ee628459dfcefa097a857e8fc581d124af73db581cb5fdb5c5abd986f093af6cf1029d8b5de3dd574b4c48bf5a78ac89554869ae1349ccc726f48470ef5db5ba840ae77ece70704cfc257a6dda49cd6579c2e735689b1ee5d308fe56f3253deb5dfc6e162437bc93fd1e510f15ecea51e2459dd69b098e6f51b7401cdd2d66f41a266b3b72269638daa781678d31cebf1075c6c46e333be7f6a7c11c220736434cde40b08013ebd9aba207923393925a1c467f7e83ae1a37d931c9273554ea6aecb246c1dc351764b61293d281c4d58f710177c699ffe77a63da41fe4af0e643653e170c494b9936217764432e20a3bebeffad9f084e7b1acdb39d14c1a13e1e5367d723eb062e5aa37b796f723f0e09812187d142e03c08ecd83ba184d5fe83e72d37880
+A = 0xefc47c04488796a19f9d90ae91c8e215c65fee070f7b1d829336f4bdd89279d6da2b7ba7dbcfa3a12785c89002e577d198252eb91845a379051a20dda3caa6acc535d7935de098e07930c3799dc3eaf0dfc1915433ca9437780079a275f79e08d6ed48351e77027beee42829508be603b2c327b5450a1712fc869409c6b8851da50bbff71a2541af86d5b5e2c7e2f2e239c4cfc491836427904015eef97751b2f784ea8762ae6bdd7f2898dd3e53562941053f3c16af1580909a5a252b5da34d91cd459757bddde71506e138f336583b4571c10471dd880ea115b492c97e53bac575b282422131dac1516546b7dfa5b3b33f1028890e9c9367ab95e904a603681888099ea170bd689be30e5845e4e825c20716163ca717b9b46f9a4a0366971554472cab5c944ae78a38442d29ce5e54ce068dd45b7b79484c7433020184dd13b4d2a77305940d5ca3e6dbb3dc59e03e964c8eae39e59e3e26c46cdc78f568b5e71fc8f7bea5ae95d0306e24f670262080d3fd934321bf036b344a52fbf59a32c4cc371aebba53a370a1d2eeb7450a694667bc2e31d24bc997b6dd54f2a60ed7451a1020f25bf11bfcc0c666fbafc9dc4cdf42e95656c987ba8dedb5a49e5e08d303d55a9f157def215101afc1d7fcb739c3e91bd89703f4b76c23a20bc1a0c2c925795d4edc901d2cc4ad2a0c63b656571fc853a55412e92fd92ffd91c330be
+B = 0x7754c560c01de1b339c847a6558ae06f30e00d4b48ecc1783190e922576d4646d1bc5c1f879e1b44036e224995993a5e0b0b98c6101b147f211aa849afdaf0306a02db978306b30b5662cee97fa843e387e15a3abb0e9d56b07b2f518d3ee6082a871bb9c5d306a44f737e79a454dd2684eb553bee633fda48002ec420f6abc730c51063a90c9ee493f5c6c423b59a54306873cb64f590fa63ddec8285bcf6880fae864bb34d3c9b30d2ca7c29166e5eca19d98ed0cf24a568e8c49d4a4a5abd42ec85a09678d89b99affe1b7835e4b6fa257e81bb4a7b0a4f61a4e101e8de9a95739bbbb0f361877a27cda37e4b37ab4291bd0b5fe1969542593f41a70da8d0aae5328f7f9e3219c6ec2549b97941c6fe20bce1804ac380715ec602d56a0bc95030b23d7dbd17090376e39921502c6e3852accb4250c25bdf748cbc326cf7820966885bb480430b5d5a46d4a2fe3335c7b7eb6f8e287cb9939de7c4e899f9ecd7de307e8d7fcf3aa0f7857fbf795f7ace74a0426ed57cbedf430371e2cd40c73a9f836ff30e536345051f4cd660ce36430ab7274e1f5b14b3427a37d735eda549b93efdefd24014bebb8d3d51d2d0358a12f168d54ae3b9178c505a469578bd96400e210e58555585d395fc6b31eb5d5f6fe579436b4863f5cd4907fc4b83c72551d58ed836f214f128478ef2f5ea46a5cddf48f565fe2e2dcc599d9e6c55c3
+S = 0fa1ae3b5da9493159e9c37933b2d9a4706f18c042fd355b2caaf96048dd11f79130eeaaeb7fc9a81a6d0ea7ee3b00794aeed16a60c5968b058bce219e1edc37433cf466326c80d0283ffebb3339bfe6cee3953bdc0a176fea44e2fcc8d84666121fc52cd08050556e41381514b11d0a184305cca53df40091cfa666f0d1c596758f90b35e345f236871fdf1cddc8c1735111a348e805a77857031f2433ab0568de55b3397dd450f6454922664574ccaf8187fc839001fe8cbd0c3d4acf5e1f4adf40ee4cbe4dcfd8f1428b353290e56e4055339400cfbd2199ab10cb02343b416366eed24a178e7acc9ac66a1defad9cf8e0661b83c664a6767068201dde4554eaf7ccbea77fbc62dfe947fb7fb3d7f43793530d73f80a4ff087228517b937eb531066808c6452abd116b38357d1c9ed6cfa9c210be42ee6c03a8038552928a5a82c1c97361150f3901df44df689ca33d6b2cbb2d684b37a407a7ae025d8137c5b19ba4cf077ed4b6a14a094859c7ba2b6c9ae904be159ce32366d815ebf0de2f590ec26a28741ab840d6dffb7280022be7873f660f41ff46fa0ea2939114d53a746f4ac18028a8f1fd95cf24ddc54c068c14391b98fc4ce4a9a31e0d9a69eb4344312008ac43008f232a6ce36ffe5a30d5e53d412be908d230e931ce5945853ccb82a33cc0b814a8fe31cfdd5d4d701d45de9b1a9322813bf94a27b800472c
+
+Hash = SHA-512
+v = 0x915a1dd19a14edeadb3cf09159ebcda4cbb652ece45801401c450a1594af6f04839a849b5d806e36013d4f512134ca8099d2bba6aaa61e1c0742cd95f37f8a4441bb78b6432484c86e5c8152bfaacce9ce01acd82aa75dd1147af5c6fae69f7093170d08ee03a053e530d7612ec087f9b52449f8ae6a8063860498e8cc862a29584fd15cb8411322f512d8734e89f03c01036e3148889e514565fbb1428098518aa9c1c843a93ca461e4198e397a8fa74bf2bb5eb1bc035f9684f88843b3e7d36dd09d8b2dd2e2d8dcadd13cc2a0ea9ab321a960f52e6fb2164dc7dc3dc75fc9178b977789e60698704595fcdb3877624a13745862f8ecc88ff9e72e6796136f4a621d12ffe7368a83e21358746428842f27fe26f47e546413cc908484929ec65056f675bc56eacf455580b14d4da523ca56385f8e46080f4b2d076ebdaa159f8f1137ed24fc58f17e33b852256446f0d94f671162b4fafeadcfe1eb9e0d7b80036bb09c8dee28edb6f1f0217e329821abfa21df8f8c01149e9293b4ef28abaf0666c84d4561fc3c45f0f6632abbc9aaaca083f6617496f06d92688d7ed7d10d50e4d409e7dd37ff697c455c7db7cc261aafb43a514d434aceb6058c70dba5126735afa1e9933be97abddd9078c162e1fc054fc0fcc6ac879dd8fd589e421a70d9d0b825e5d2e25ceca05ff9c45c4e12313cb153cc4fdc1dbffa20ead3ef9e91
+A = 0xefc47c04488796a19f9d90ae91c8e215c65fee070f7b1d829336f4bdd89279d6da2b7ba7dbcfa3a12785c89002e577d198252eb91845a379051a20dda3caa6acc535d7935de098e07930c3799dc3eaf0dfc1915433ca9437780079a275f79e08d6ed48351e77027beee42829508be603b2c327b5450a1712fc869409c6b8851da50bbff71a2541af86d5b5e2c7e2f2e239c4cfc491836427904015eef97751b2f784ea8762ae6bdd7f2898dd3e53562941053f3c16af1580909a5a252b5da34d91cd459757bddde71506e138f336583b4571c10471dd880ea115b492c97e53bac575b282422131dac1516546b7dfa5b3b33f1028890e9c9367ab95e904a603681888099ea170bd689be30e5845e4e825c20716163ca717b9b46f9a4a0366971554472cab5c944ae78a38442d29ce5e54ce068dd45b7b79484c7433020184dd13b4d2a77305940d5ca3e6dbb3dc59e03e964c8eae39e59e3e26c46cdc78f568b5e71fc8f7bea5ae95d0306e24f670262080d3fd934321bf036b344a52fbf59a32c4cc371aebba53a370a1d2eeb7450a694667bc2e31d24bc997b6dd54f2a60ed7451a1020f25bf11bfcc0c666fbafc9dc4cdf42e95656c987ba8dedb5a49e5e08d303d55a9f157def215101afc1d7fcb739c3e91bd89703f4b76c23a20bc1a0c2c925795d4edc901d2cc4ad2a0c63b656571fc853a55412e92fd92ffd91c330be
+B = 0xfbc3fb1c1058a2bbfa22f4e9abc376b0decd76b8f3da6ff167c350de89ce17728d6e81d6bfbe95b93c1a6afa490d7cce53b50ab02be729b9a3a8608124c617908e78485336d898e478ae5e4016141aed59946c7a1a56a0f83b07b1abebc09dbb26f9743518b9e2bc49430cc0ede7adaf692a6e3e19aa7d1815a186fae18bfde078b5317a4e1666540f46a9b8add10f8e90835a414084464b660eb9d59f1c28835cd6ac4bf78da2b0f62aab00cd2f3086b7f16734e8fc62476b734d63d17ea5a4837be294fed5451e12643c95505ca4142dde6bd2b73878852a12a6249e11274c86ac9d3354891fcf6249abb8829b081d4f0e8ba1aedc4f4348e892b2323be7cca4340ca322e777449f0db60bea728d14c59f19eb820e05ded0fd0e2363a2ed87a86b6954bc84b6176d89ec3c54f41893479eeddc9ee0044494cb040b16175994b09ad6ffeb26bf532a2f0156e8127a275a03b23453524b061651af6704a4afaf38ac6cab8d8006e52c006fa409488f52faddc068192ca581788cca61e39ee416eb55f3737c8955f70a50fb173a264da0c1301db364e99616f0a34f511de58161ac5ef1aba37644c2d570bae80bdbc55839d6d31105e582606b8d10525473104d3a824a48de0a121e913ae7808d63f93dcad1c7ec9e7700614919bd6659c20ea26fb52a77ea419d6a70462d6ed986aec2db5e52eb09adbcbba6ba3472a9fa2358
+S = f77744110f6470570d39aca89421417c2caf0d001b66771d21150a1b3573a4deacefc35747854d0bd6a6fbf72d13012d0caa372d68834d687dc11b5410d3e298c6f7500ccd2180af81da5b43b23fdf5898fa115b5e0cc46a2524692dfd34b3e8a1e5f71b3c584747059f17dcb20eee32496330e6e80e0794a81cb11f314994e5b3a3ec1ebd09f01104e6c91a1927d5f642b12aafbc50ca80a57cf61b6942feba10b1c414daafc7062ab58975e77afa8dc5dcbe035b1cfb942e2f3a9e993a39b8d443730a0b343e7321b62a3c6f0a4160634996be2ec385616b99f107ed79945403d5cbb3e4bcfdee2637fb7dd6e9c4db9fd7642e4ed1aeff5d654e8850e51c1122e504df2a64831b5c439d54f205b0ea0f1bc6e4191e3de63354390bb4f6a46cc7110529d2b79463b16e9d655acc4ed5dac2849b9860bc61089fc7c46c28d33c6c699e6fb335ab859b74147812bf856e6d2e9789c41b33cd7791640e7b5895d0563b78ddfae31dfbf778934f2be7ef826a07c5ab13cb0f9b172dd75e3cfcc9aba3ad7237ea93b92143dbfc7a54941cda18dfccae39541407bba3ea9276b89c2e378ad7bdff3a6bae87159d6f9709cf5f033d51242b3c09208521a7b301aea134c97bc6eca7e22a4a33bc7a9b094df960c3b6c20bf1f4c2d14bbcda55fea7f21a982624a2862b7038ab2162779ebb20ec10ffd7a6d84ad5b22db78f606c2c55b0
+
+Hash = BLAKE2b(224)
+v = 0x0347e773b29b57dcc84d45ab60f4559d363bc3d05409e53707f6d81a47c536ee6bdfeb8f362546b8facbca387bc9628253eec0ce97c95de0e4666ab5543f4db044564220ccb73af4abedb68eef32f9d42ebfdeb98278f89e6cee5447c5a80409762cf492599c5b72c72c2df58595c37487e69b5612296a78883673b657fcd393b8e7065b02b8942a0fdf692ce28c7ba84585edf50edda7538a0f96076dd63ee3c5e449cf0b261c97c2c5519d7c20b095b331d4bf2ba33367129848d995ab2958430a2ee9c214b1c51fd196d08059a8c5b3339703f10bd3325f7f94706fa89c7523f4e24511ce6c1cbd5df36d74eb65ec56cf2eb5ed4d1408ad6214c1f240022d501dd990cdb70ee034d2b009082897d21c315c2982d25ee31746efb97e378187f7b2cf8622c0991f7b75ecf02169874d377fb8ed2b3818d8d7b770b70c42a1cda4d5ff75a3262c83acb2cee84fe270487e1de3b65a3256a6b977596c42bc68298a8e52ca0bd389f80abcd6944d7a2162af308bb1e25d8a20b685046fbf50d2f9674ac70911ff078ce19eb2933b9f979bf53f8962d603c7cf1fb5aa647b0cb285c9b81efdaaa76ebe523195199ef537cd58f5053f1f59981b502f25f597eb20b3394fc625b2a2b20410aef7343e6db77bebc4e3812096e667987188d190a167671ae2b24a9ea4ebddf5783599c42b54d83c890f24bcfd91598a9adc13f0a1d8c1
+A = 0xefc47c04488796a19f9d90ae91c8e215c65fee070f7b1d829336f4bdd89279d6da2b7ba7dbcfa3a12785c89002e577d198252eb91845a379051a20dda3caa6acc535d7935de098e07930c3799dc3eaf0dfc1915433ca9437780079a275f79e08d6ed48351e77027beee42829508be603b2c327b5450a1712fc869409c6b8851da50bbff71a2541af86d5b5e2c7e2f2e239c4cfc491836427904015eef97751b2f784ea8762ae6bdd7f2898dd3e53562941053f3c16af1580909a5a252b5da34d91cd459757bddde71506e138f336583b4571c10471dd880ea115b492c97e53bac575b282422131dac1516546b7dfa5b3b33f1028890e9c9367ab95e904a603681888099ea170bd689be30e5845e4e825c20716163ca717b9b46f9a4a0366971554472cab5c944ae78a38442d29ce5e54ce068dd45b7b79484c7433020184dd13b4d2a77305940d5ca3e6dbb3dc59e03e964c8eae39e59e3e26c46cdc78f568b5e71fc8f7bea5ae95d0306e24f670262080d3fd934321bf036b344a52fbf59a32c4cc371aebba53a370a1d2eeb7450a694667bc2e31d24bc997b6dd54f2a60ed7451a1020f25bf11bfcc0c666fbafc9dc4cdf42e95656c987ba8dedb5a49e5e08d303d55a9f157def215101afc1d7fcb739c3e91bd89703f4b76c23a20bc1a0c2c925795d4edc901d2cc4ad2a0c63b656571fc853a55412e92fd92ffd91c330be
+B = 0xc8d71fd6600e1dc041039f632ce0b2d8e789a9a1aa12d1f13c22031189f5a1b67631971589eff1fa52d8734be9d063b2c1ba55352d814ab0daefde3b1a7bfee94560f9afcebbd6dfdbe4ae904a3e93c570da87debf90bdaee465841970cadbe8cdc659dc6f1981f1649d3eca3eb7b41307e72f8d5f723eb682cdea27388fccb4e5d2c9bb14213716d29fe19dfeba2ef49f7a3df5fdc6ce238c1aa5f549c4236af2eea5d180987f11a87d0d9ceb9f2cdc94c9b48cf8fcbab6b5428509be4cae7259c2e402d34e9cbde96629f94fc6d419fa4ed3bf9104e2e8bf017ceba61f3a5a60d33fdc107f2844f41cb8a1757f1ba4a0d75b3a4cf6c60feb982bcefc3051d2ea62132da0201fa399a41cc6d8f48470ef76f4023d16aa94502820bc580b4dfef13c43db7e4f4202af6f3790589f3dbc2a7be76c6b1c0acb762b0b7448f8ec603aa6ea034ad44241e4feba36879dc44b919e419ef67a6d01d261028214fc708512cf15d3d11f2a37185fb9d27f52a4d6b162ac0b11ed0875014f0f58c25bf66440a404082614da3f88d84e2349326fd3e6cd02862cda2eda90a6f726631a6fb5630ba4c371e511d57f3f3def5bc92aad81d960109654bcc898ac3a767aa09451c57724ec614d3a9c85aa8ed385bdd2b08a08780ac6a9f8c9bf7432cdaa9d11271031a67cac141e1515ceeb479775db7d3d32ccb21b7e451b473c7a5f37a0bb8c
+S = 0cb6b036150f7104e477663aa94e3d215ef9ff2c76abe8f952ca824206ec7c8cce5a304b042ca99a893c05314dc2f6c28d45ae502623342321ee1906ea4d2357b7d2cd737d793dd3548a9e22b71c4ae2a5c068c688ab0aa4303ce7e68d7587525cb8aad64596c5077844fcdfcf285f1f8c9397b515044e1635496fddff3e7da62edc38712571e654c381e41bd33b553fc200039a16e0271d9777fc7a57b945b4775f288b0fab08ffebd907bfb8fa52f19e2554e5e080573b9045065c911a7454912e95aad64bbdc97dbc5075355100e8cbeafbdeec4b9a0f6f0961cdab36fc00e2a9bf9c6c1e1ad23b76a6b86a9899ec633fc3f6a551bae8909d3290c2ac2a0d67eb6ca9ce1dbef15bbdd7367209c4f9087c8a07afac99b1424eb825ac452db8355d49f4836ea782cba42a444b9701b9ab7afe34c8749abd5f4ac26791431e31154fce7ebf9e6339f369e50f1bf26e8238f5bd6ae2e112e36ce5fceb94fb61b4b44da7e20428c3996aea0babbbf3216544ce67d4f858f9f49b16ece874089c1c41f56589191c9283d5a9984ce8d90f82cab2fe3af4187a5363d1e90a2ecfa2197747aeb6eab75c6b3052479c48d82d9a9308f4cb2593ed1fce7d89a585746fea5861939956f9135cff485ef4db3ae9ee271f71984fd7a35307f06dad908141696d1ef4b5befb1f4a2275d7ccc2464afd6c295d3441b85c7c031ab1632c8a8b10
+
+Hash = BLAKE2b(256)
+v = 0x0b0a3412059bec354dd4c32ee39480cd214a80cb85687b9f142c0102c104b6388e3c2754c723a29d690fdc1d0994d6bce98edc9f24819a5855ac671f7219523ffb0ab87f0a624b1b33fc1b82105f44e1ff5ef8523ce26201ca26fe40827bf99f48cf7c530b86edd760ef430698d444911955772b21764343c480df7f7ee21361e46e9cf9c352ec5292e21e0e088cc719cead95b8183dc766421cc6c47105318b2f589b944c70010b143f25dc59dd6fa232e5759b1b3b79b3b66ce908bc5e8d0cd63253029e15cae4cd1f9b3bb8d95a6cadbc14116177b787fe0fe8fb788e44fe7a8006a0f10475b28572fcf2c7b0d4f67418cb5f97171c7c264c9734b82d2e3484d5b5f604c7b049898ebc860f73ba6b4071285abfc2a1b3d54165e15b9b053034ebfdd9cf80d314e736e1e40dde75a72258898e4e6d5b7d0949edae376b5acb724a89a7d3018d125dae0a1130ac10a35f47e64f96e5545dd0c06a42c7b13313df61ff9fee78f64ca3c300108bab623999552a8d5f2c4795d9211c1d8fa54d443009d015a4d0c40989ab0a7c4069bd6258139cca72bdec4d612dfa4c8bd219041328984eb4a9ee19b5c5149c277fb5f1e6a46b9acfe8546628826a57f6e138199dfd21ca08ccd379b774eb90c8bf38e5101fd8ab7f9315a94d63719092e693c1a51eb4c39748a147b7b1d9cef51645aae2754a78b2a2e712e2394bee0b572d78
+A = 0xefc47c04488796a19f9d90ae91c8e215c65fee070f7b1d829336f4bdd89279d6da2b7ba7dbcfa3a12785c89002e577d198252eb91845a379051a20dda3caa6acc535d7935de098e07930c3799dc3eaf0dfc1915433ca9437780079a275f79e08d6ed48351e77027beee42829508be603b2c327b5450a1712fc869409c6b8851da50bbff71a2541af86d5b5e2c7e2f2e239c4cfc491836427904015eef97751b2f784ea8762ae6bdd7f2898dd3e53562941053f3c16af1580909a5a252b5da34d91cd459757bddde71506e138f336583b4571c10471dd880ea115b492c97e53bac575b282422131dac1516546b7dfa5b3b33f1028890e9c9367ab95e904a603681888099ea170bd689be30e5845e4e825c20716163ca717b9b46f9a4a0366971554472cab5c944ae78a38442d29ce5e54ce068dd45b7b79484c7433020184dd13b4d2a77305940d5ca3e6dbb3dc59e03e964c8eae39e59e3e26c46cdc78f568b5e71fc8f7bea5ae95d0306e24f670262080d3fd934321bf036b344a52fbf59a32c4cc371aebba53a370a1d2eeb7450a694667bc2e31d24bc997b6dd54f2a60ed7451a1020f25bf11bfcc0c666fbafc9dc4cdf42e95656c987ba8dedb5a49e5e08d303d55a9f157def215101afc1d7fcb739c3e91bd89703f4b76c23a20bc1a0c2c925795d4edc901d2cc4ad2a0c63b656571fc853a55412e92fd92ffd91c330be
+B = 0x72949e605ffeafbb41eb4961e74f792d5f12908d4343a129f2838d227e29c898a6c9bbf909783aec28bd850bc6914e6a2e194d23765e600bd25adbd4342ab361a522f95f2fe03946ebacee6a05ba0d27c476d26725f0b404bf0754a81411a5b92c8acf2933ff27bf1dd9b69be7f60ec65c2f5dc6b4c1755839098a56e49c8a461063b98670d6f1b6396efdc6f994c9b8355529104e41cd024b86eac4042cd2ecefe39d7333686e5cf2c186cd19ad47128a0d45e99f4b2586785a36f98d440f8e525e7608f342084708c96abc5ae4222d1b6de4087966f2b7f8e86da9ccd2b0d8dd7dff83d7c47a893396255a454bf30d8eebbd34edfc30b2549794120361e6cbbdaf5c9e00e93787eb5ab44bfc38dd1954047015ff205062a15efdb6c4dc83cdbcd8cfe98b6387e9dd34f2f3ad524f1bcb1bc82d217331c6e99b5bc239527c417cd08f9a4fa50f64809933a24d831696220fe5b42a84ce22ea0fdb63364826c0cd04365594ae4e6bf59a83f5663f818b3234ee94e40328c3f20364be30c5be0416ea420fe7161f1f6f985a503358da6fbf647b9002ac108430ffaa7853cdc05c855f734be2176423d3df58cfb3cd6451626283601494ddd1f1a3efb9406747f7fd7ee54763efae7bd03c10034806ff42c94874d00e15d7eb066c64d077f4b715ec937fa4632fc23a514fda56a2567a0e2d1cdb528be965a198118732250f3d4a
+S = 39773c58e09b0b6c76fe41587e37f38b7edc32599b00ebec184a05437eb0a4c2d41bb2b5a9568c41209648516553d5207a6c26352d44f921eebed8be21b03390a18f6cb5cc99b44a7980d86b94093656dda0d55876c193718eabdfb69f7324d90b965f0a64ec42e99f178b79e1208ed87c8f98611ad42f06b11bc5b0fc2925d49ce452fcb125e6868a8306454cbdbba7c414035aeed5bdb0c2f86409350162440f4f7d29686edaf534233aaac0d580471911cc2627333846ae0018c0cad74658e001186aca13225899cdbde998ff4763c6e276bd3eba9ab240496691d28d1f89e51c07b73ab6ec9928c7463cc09f25db47ca984424b02dca4f82f19fd44a1bf3376e64f0af1428cbe7d29908cc084ab3e037c0464d140ebb2c83e5d580583bacea25a4f9376eeb7103835fe3331b9015fbc551373b140ac90dd0d4e03b37c408c89066f424d3b16853def5e622d85f3651cedf9046cd7e83f3e4ed57aad648bd6ff4fbc34a40a8b0931e0ce47ad60f77ae4b4cc4409f390e0567f8f7f1c1f7be1ded5ad97baef66d776da67fbaec99459f448d841ea93c1c2e93bd22275f958b61cbd03f4afdd298d49803b527595fac7167dc35462ff80ee9fa5ff944519833280ee5514f00c4f22549cc5c4e37df16823a1560ec3ec0ce09f2837d50a874d9c94cfa4abcebabbc265242d95daa827003315f27fb05845498e4564ebc56dc8b
+
+Hash = BLAKE2b(384)
+v = 0xf2be59565a4dc8ae16592d980724c3733218b773bf8760bf4c9de79e0530e1cf3d8736c9791e4b44365cb683a1e1b84d6769c51a469ab75a5840c4728700a19e993c6739817e75b3b41ddabc512c22f98c023960e4a6b5a9c9fbbfa9873b435bc626e5673fd7b9a0eba3d8bac9796eddccfc0c1722114be5ae983fc301d4b595a01f3fa40ba7f610fe7a42cc5d72e216414911b47a9defa6b4d8bb544ce9e4217e065fb805b1fea8b704e7dbd8e7c24150dc817ebc4e69afcf6b44da695063bffc69e2b2b44edddac8e7bd78800c2132324e199302ff8dbc882690fd35adb7e0c4e7e2a0ba8c2cb9e101435c371ae5e362afd876c3fb5c9d57e921876721f942a8609327c09a7619e5bbdc85ecbfb61a09ba2c435f02852baf065fa9459523f860efadd7facbe5db3cd830781f8b4cb8514248a35d52b855bdfde7f8773238d4c30f110456cdb0d5e2ffb58b542c23309f7c833616b4f8b73dfd9ef51ebd8c27a6abb3b930926383e96936ac96843cd480a2e60fc76d414905c3f39c4b1521a6ee7a6e0c09104d4820732f2c4aaeabc2ae247233b3197ffbe5a6d942bbe7f24c6fe5d1082b286e4fedbb292a0ce421e90bc1b35f0e38edbddda89cc0f017b52ecb82e2e33ecd421c8a094e2ff837984bb2cc708544e7b5bba583e5306e28ca8928948341f88de8d930a1b49b6e2fc072e266b7ae371c533cc4f47813148941de
+A = 0xefc47c04488796a19f9d90ae91c8e215c65fee070f7b1d829336f4bdd89279d6da2b7ba7dbcfa3a12785c89002e577d198252eb91845a379051a20dda3caa6acc535d7935de098e07930c3799dc3eaf0dfc1915433ca9437780079a275f79e08d6ed48351e77027beee42829508be603b2c327b5450a1712fc869409c6b8851da50bbff71a2541af86d5b5e2c7e2f2e239c4cfc491836427904015eef97751b2f784ea8762ae6bdd7f2898dd3e53562941053f3c16af1580909a5a252b5da34d91cd459757bddde71506e138f336583b4571c10471dd880ea115b492c97e53bac575b282422131dac1516546b7dfa5b3b33f1028890e9c9367ab95e904a603681888099ea170bd689be30e5845e4e825c20716163ca717b9b46f9a4a0366971554472cab5c944ae78a38442d29ce5e54ce068dd45b7b79484c7433020184dd13b4d2a77305940d5ca3e6dbb3dc59e03e964c8eae39e59e3e26c46cdc78f568b5e71fc8f7bea5ae95d0306e24f670262080d3fd934321bf036b344a52fbf59a32c4cc371aebba53a370a1d2eeb7450a694667bc2e31d24bc997b6dd54f2a60ed7451a1020f25bf11bfcc0c666fbafc9dc4cdf42e95656c987ba8dedb5a49e5e08d303d55a9f157def215101afc1d7fcb739c3e91bd89703f4b76c23a20bc1a0c2c925795d4edc901d2cc4ad2a0c63b656571fc853a55412e92fd92ffd91c330be
+B = 0x186fc888324376e6f48c3ce345ea438e520e5b04a316db6a4c7563ea3bc6a8374106ce4bd2d6ddd6d6261f10853d8ee1fa50589d1c7842cd89cb78e59bd0f07204c8095d2da55d31248a12818ae2a5f0ada847cc4dbb3fa13551d99571a309952094e29f63d3fc455f5e064ad209b4c5eb1138bd77eba83490e707344ad27022aa564bd757088d6e4561679b11154b7d7e8a7c6a2ec572b37c652fca9eed57df40d074ea93aa6ebce98ffa46c8072a492eff3cc14aa341bc0f0619f4c4d6f2f867eba1456b7d128bc9387c71ae8d75fad1c5d01cda49c3c8a6e85f526ed262df1f38f8a595dd19db13d953475e50705a8c0d54912195cf039fbe394082b3b0dfa38150238f4570fb5b3e18ddcafedbeaa9ea80bb584b818216a283ac56ad798c58f213123ba110f506b813ec880eb428c6f3cc9d45fc8f3b43216111e44e3fb471a893ebd8a727a3bd8b1623289dbbcc1aeb0562900cc891cc3d6d6fc478540787c25d3aa1a0e7da04c39941c8bfe5a15881238e81d624a05ef5167085301dcee3cec59e53d0bb570d23cf79ae53501d93587275e7b15e1dc04a9f93ac7a8052a78c6116d4b1566314d6a2dc17bf538214fefa64e8d238ec32358ce63f1734fc5f8126f1f34835c518d21f849bef527d2b4e0febba2ae8690f58a92cb5d74420c12c90a7f1ea25520831d01e757107fb32eb4e148096cb7bb3a53d285aaa5722
+S = 798d5d4508faa904112e9eb4ca77e6b51f0f4c489f753361c5e76cfa284db44726b0224e77187b8057adc8cd6e3d1fe595597b521ce33a5cb26c4b591bd0664bcd4ff3cd8377003e1e3b00f98958b774ba3ec7569acc2b5b6ce0643a1b28bdd8fe7a947b94b2df4769d9ea3332a58a8dbaea09a43b7d25d4767f2bacd92ebfe7295f9e78b9fef20c981053ce2cfeb7a169537dbd666146676f98f57a77290339b33e642fbb7103e5b4599c61b367d1da908584fac33266203a3a7b1a2df1e707a3bdc5c71c857b78a0ada2d84499f7050df07da255d5e2debe9443ce4a49752b108589944d7065761114b9e6f7508185f97a90943c2cdcc4f269096859006fc962dda7175d34fdb79117b5353e08d5cc49f44f8953d9848945e02005499ace803fcaac389d2c9e4f87ef78f4ed35ade406a797bbc2be3f90d5da41f7e07c2ad5892f0a9b73bb97731cd5373ba043d6b32307f9c712b27aff03ea24ec1e6734adbd58d41c6db7245377a2affd24af0f323f526a1f6bd6027d0afcceda3a807a2cf63b554ac0104a5721ba41b55ae069d7df5733141f7d23828ab69f80319a84b335d0ab313073d06d55b94bb4853e5e72b5de67064e9ae0b60c8ff76f60f5fd64fd96462280b94ddcb84b8c3bfe27bb8e7beed8ac888ab8b442e033a9fb3a2d76b9a911f0f50ec7cc5ac95d8d65ef928f66212686d875c8e0d8d5addc78b53308
+
+Hash = BLAKE2b(512)
+v = 0x85b50c5da551c065335b883638d596a29fe21d5819cde88e342c2189eeb1acad3f955e8032821bbf25e57829b9d578d7aff2989438c661678357bb5cd2de5e891ef72a3e600ba1b30bfbbcfff232aa17fd9e01752afa5acae4b20abe144dd64ebacdc1cee9e1ce62893f5b8b382a8aef66597dd18bb7e564c9c09a7fb91c8d92abba2c54a7165b9d5697c9f14ba02d04b876a61cb58ed0f9450781d70b466a19948a63c82e835a0055e387ce80c086a62c6602daea90e7c881c39ed61c84232970921f795651653ba6f58d9ba4a84a41bd6aca768ccfb24f5db622e496af9eab29e3c9d1f215f27d30b88efb9bcd246b591f26f0fc68ab2d65395299d8c159d239d5d55aefa2f6ef46774f727c6afc224738b2798ea2488addef4a5efafdd5e34aff2b4e130ea9ebb4c4fcfe58b9a4b8fe41e255c5e75f177f25d7286d98f71de1098422067ca8df8f554962cf9df4fd5fa5d3a7276d19be9f06516eebbed6c28082a5be2ca2920f95066039c5c39229b0efc78c3dcae06dbb0d4db8d85084aa91c0e6d74dba14410c17fe1005160e9e9411b5c0f4544587e44f6c3f2a5e0c37d8d96a9aa13c9b4d2c00af706fe95d6eab3647d2dc0b04a32b52cb3be6ce044be3d99fd314812993713394ea668c964c9df7e4c4dd86c0c5762fc9895c444c902c7fa3bb3655ec4edfe4d34a68a94d97515f99456201aa422e2d23929a5db898
+A = 0xefc47c04488796a19f9d90ae91c8e215c65fee070f7b1d829336f4bdd89279d6da2b7ba7dbcfa3a12785c89002e577d198252eb91845a379051a20dda3caa6acc535d7935de098e07930c3799dc3eaf0dfc1915433ca9437780079a275f79e08d6ed48351e77027beee42829508be603b2c327b5450a1712fc869409c6b8851da50bbff71a2541af86d5b5e2c7e2f2e239c4cfc491836427904015eef97751b2f784ea8762ae6bdd7f2898dd3e53562941053f3c16af1580909a5a252b5da34d91cd459757bddde71506e138f336583b4571c10471dd880ea115b492c97e53bac575b282422131dac1516546b7dfa5b3b33f1028890e9c9367ab95e904a603681888099ea170bd689be30e5845e4e825c20716163ca717b9b46f9a4a0366971554472cab5c944ae78a38442d29ce5e54ce068dd45b7b79484c7433020184dd13b4d2a77305940d5ca3e6dbb3dc59e03e964c8eae39e59e3e26c46cdc78f568b5e71fc8f7bea5ae95d0306e24f670262080d3fd934321bf036b344a52fbf59a32c4cc371aebba53a370a1d2eeb7450a694667bc2e31d24bc997b6dd54f2a60ed7451a1020f25bf11bfcc0c666fbafc9dc4cdf42e95656c987ba8dedb5a49e5e08d303d55a9f157def215101afc1d7fcb739c3e91bd89703f4b76c23a20bc1a0c2c925795d4edc901d2cc4ad2a0c63b656571fc853a55412e92fd92ffd91c330be
+B = 0x873fb94d0e96d950aa998deb5fd53185bb14b17959453dc02b058edd6ecddb152bf058fbf63d06241c059a37651c11a4cad214bbc9ea00570aeb279db89a0e2b13fab1fb60c3e3f1579df91c31c8d5dfaaa8b8b5120f31f1f57d8076c36d22b0673f197f238e7196e412f1525b7ea38430afe877c8823d1c896a21058fcd85adba678f1650850f2645280f275816f50c4b39d49fe5ae3dc853d6d5a6b23649830b7bfe33588fc4dee87c56404228f871dceb3e5024dd79e41dfc33e305d7de554078982b3887054a38296cf81faa457ed7ece674717533d1efda727b0cb4461f639a807618ce62f562ff00eaaa3f88889a1a52c488e26ef888c92b847d5a030d877daf01eff92de860fd0587d337b0d6714f21ebf8248fbbc13cfedb23284634161d2c6d4f29913763a9ac39db40b11959aa75247f0c0228beb89f5daab069b5f4d0b215be62e78960bcfe8827cbdeb1aeccf96a8009f5166ef8ae8b8e9f964622a1a7c415020d760e6b50e01650abcdcf9ec7f514095c916ebeef328562c737eb34105ab6117c780e48ca87061c5f6e74b2058c6404dd592b18ff6750ba4143eb51bdad3c4e7a1ad451c9989fbcaaebac397e4a86a01104c5897d4bfe8114b3526cff8c9b116b43851a057fe0d1055324de67f5666e64f03bee2e289ee27f29549a7316b90661a140c8e32f9f673dbc8157c153b1a00c826ffe0636bb1e95d5
+S = 4585f150e6ffc2a17a0aba92df510439cb0282eac3845b2559032e83f73ae7d564130a162f2f948cc6df98688c31b994de2dfb3bc0996fc493fffdf26b8c24a7b5c6e718f50517cd48ca3a24c79a72ff83871d4f58135490e87385813d0858ebe00c11ea97468bbe1159d17a5153de68670b01abc0f9ba4e2234e43f5714a54ee43992d256094ef9fb98aa2f0d35b850382e8d7d85a2dfa356ff908be32b8a41ed4b7dc44ddc0645f2c07e7e296f5a2ce2e4f9b4d11fe4b9fce27126785a86d4e6025cfd45eb440a736b817cb8227e3e10b05c5d705168c9ec5ae23b817c1da5e9bbe3ccdba741376d275bd66d8b7f07a6f989258eafca0776a575232fb0c9787ca827926dd1f39eb42d5453e76840d7187a85b710fe332e766136cf3703b6cba19bc4e013414acfb6bdd0bdcae1d58f61f7e4bdc1cd60a19dd8e5a8c2259630350fa89130583bb53eba372a72f37d3de250c41f30740506f8325207acf3833691ebabfeeb9e4829464b477167743ca2d3c684a43829ed4a8853f08341d85a16327c239e96bece6063ece88fa18d88a6b0926906903400294b7cbc49cc4a89451116190815c0f0b28fcfbf97162e7ad36d6ff46480052de39b14dc245fa22c635115e2045af6e30cc962c8e72eae35add5b0c17d96b4ff4d583f375f4e34d987d944ae4d6a98f764abe1eafd0fb11e0d1aaf92d661b68fef6eae4d3ac2c49cf1
+
+N = 0xffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff
+g = 5
+
+Hash = SHA-1
+v = 0x61708bc4b7bfd9ddb4ab62bb393240315c971e2bd347ec3efeac435f82b27157bc6090002a27b607c21010bfa471976c7476efd356f312d68c25f464804e566bfd34c7e9f56faff69fe3ca094ade6fe5f5b0aa782569ba4163ca6727b845a920de2309a4d15310b7ea4a5322971ca9524676c7b7d2e380a725a8ea6c8b049b2f2f69f5f0e7190a7ba24046290fd08b70de4e2e5384f58106c6017fb63bd4dfe867d8d594e37aafd011b891bdb627cfd90ee88c1463c63e9587ce4a5461deccc91c6627b4f9e989fb11a55bcdf4ffa76786650634185c79fdd7cd04b761fa78d8252325e47b4e4c58cddb40b58dff06c4a2070eabc3a85cb518e7f4e6149f3a08de96226ff336149ab0c5af51d10a5fdbc816d094107dd9bae6e9b997e013da6f97f2bdb800ffdb726e3d7266a87c1490b306e10cadc0be05186526445b5324fc5f5c258c0572684cc2f44edc5f8c2d43c84b88037ea7efbd96850b70e56899c420665e9a15c99d67471c0082491b233ce05a41de0843c9f0127007c56e86701a172c97ad3ad84152840b560eb06b060f56bfcc34c5dc361a6271d9ca165983fc733d454c50eab45aceb0eb4de3c6ebb86f2270e5eede5ddc2e5082029e8cc6de29ed28c968574a7ae10dd1506406affa1899c1dedb8842f2debfad1cebc5a6258897e09dfb7a6f4127218890786e371c73333ed299d04ee110679dbb100a61b590b4806a1a8554a98fb1b5bba8c6f43bb20bc495fd8249495da4c8cf6f5e691bd0c138b33f270ba722ab76d175d18bf42a8261fd3afe7be47dae9743a35f6e38e442e10dc217d33750cfffc470e6c9ebd19ec57078a22aa235334176b644c97750a541945cf4a0b09cb0d2bae839172934b68964a86ca56371045da404bc879647b3b2efc76c08de4237e404f5d197900f1c34a2d4570f7ef4c49dbf623732a97b34320aa82f8b06549177db5ad68ac3e6b0a0933eb22426edd367b9e07107efc9ca91dc2095b6e4a156d87ff3b5135a571f3a28bbd8b571be261696da6bd81be7449b276de444b1faf2268289c43949c042e801b2a29d9295a9660b0ca222c3
+A = 0xa271447b3d484bf77c779286d345b06f96e2545a1ec207958c620e51f5dcd428537528cc1bb5dd68ad753775d53f0f0d92a4aa8b59b80a159e1b23e1f219dea0331d361c8061a316df5478fe0a05a8d1ad2017a126b32ec0286dfa77fb7c1be913fea0e1605cb4402307a8614c36e7adf6711b3e8e4ca136675b7b40721dcba3d710acd18490ec841bdb09be3aec8b6dae69027b8125bc42ae6f5564c7dbbc3d0e660d48bc30f0830b246b1532b3f9c5bcf4a272d9f8edb9570df85b67467078f210e7b0b4e37cf6b447d1e07a11bf51a1018076856ac2eaf11961d1f56a3dbc10acd8c79733297e16b984ce41ac274066964e2cdd43680aca1d6804dfe6cf68ec746445c74190fb1cb1c03763a62c51fb422d29b139d4ec4577b7241fd6eac5a62e2f77a414b8006e6931db51088b62c25856210b677484f88c5668326df01df2c82ed39a9158203c4461be7d9427b9ddca1a577b105e926bb7d252be7d408f716f8c6a6c642e902b3c9a59f70dd523a5025d3b89c4fa66e2edea4d4215c77ec9e4ae8877b570ca39dbe46efbce8915c3e8fb48448d67dcd86e1e17c35f89f29ede148a7e0fb8a085ab58735f08ffa30b29062dc341429cad715237a86c4693e8b5268c38e1245dd99143f5fc4651ddc0366616309a3d99fb81e2e740f9c67ef6cfee417a696bd8d04c2cedd8b8a3a05cbcd314d81fc773004d6da8bc33bbfb04ddb17a0968c7ee9933332e28aff249c7bb98a05fd7d28a7c607d5ba9b3f87b3ebeaaab66f6c430c872c9298b1cd20c1ef0cdd2f2a415517be79973e0fc07a19f30bf23422e6c0065776f216fd3364e18798f05ce4df6c02f13e4d56d2e2b658ab3515c650970c626bfe7e91224cfc7943a4fcfb2b492ee693dd249e9619aeb6fce9c2043740097b3fe2f90a2b89b3aad05687d742d8c1818921e23754b769be2f5b33be8c8e779667d1e491fb462ef24c8a285b17d99c68b6f3d106ad976bfaad0ad74aacda01216cb07edc91db3e5a0536a8c83c4c10fc324e2b4ac7626d029b9f0002051d9907c5bed60d5993c5dcd04349d087d2f7ced9598f3a7e134f5
+B = 0x1989336d42155e47a61eeb5a31ec7a7782a89abadf9e2250f4eb7d4d1d0230bdb983ffdc9dbc6c234424bc43e8fe5533da93fbf75133cb3e1a3c29031cbb6103900d3987695bbdff6a4b20b429c858e5c523ed88b8959b45b1d266f32ac13b4337a6eecc228a6c75e1269d5f5ce8ba2fa1af89428f6a77ab7df41728639fe0a69000fadbb6faf6f7a24899e79f7c0b5264c3dcfedf79886210396e4153721eed5e151661fa124b041b0b77abbea9e199f99e4981772b78b0e8f10c3370546b63892bbfce1882f45a57ea18cb4d913b9f57a82edf6876ceaeb8cd1d98a29cec04fa2191db37a6e48e5b31de6f19948c7d997da6c19288f690d226748940e65d74baf0056165d9bf9952b18e4588a193460e76fa3abab324b464c0cff324d8d8cb3e463e65893ab6011a90e323bd38764798d2aac73f2f56b16d0b902c8bc68afc5e637f036fbe35016a0f2b0dd0642833bbe34bf826ab776e781e10d9e705e9bbedfda2ceec2396a036bf4f1eb85c94298cfe7e9b468f242fdb52842edf63a02e945129533a02963d677cd39094b8a1b94eb3041d8bfdc9ce29b7768a064e6fb5948058051ded40d18c9885152edc60431804c545cecb32c6170115c0557ad0efb9704c65b304442eef1ff497757b67356fb2bcba3287b2c89519099554c1211fb35a61a9a9d9ec25bbb64108003a43ca8858a5892c01dfd74ffb46c69a65b9330baa67e5e7e00179b698bc5451fd84ba6cad81442fe124ad997d40534e09e83f444e1a57b473b7cf9224184df3e877ef62f99650285ee194c7be8c065d11c2b2a8bfa065188482e19b8dd02ddc85d0ffa23079d8ca0ad85a103047d549bbbe014d6e27f07e122d09f27afc94266522bf73065d991272377587266ff3a449f5737c2274142f9ba73576d596669ced3d493d23010a95bcc867568ac300d6d300220fb84f256b83be91b0b013d57280a16ee9056a29ad30a706478f01bd85711f815458cd7d69af9cea07d1865a5053c184817d79a21e2fc72414dba0651c625c46524346cd8f87ee54d742719352c9a4cfa12baa0adb86a94e54a06e1214e26367
+S = 2c613316623aeb1bcf007599caff535988c97211b82de8235b0866df9b0b2ae627441d024a4b2cb4a16d4f5db46a51b094785c285dd99663161522a81a8ee1a3406c0fdc40dcb1c183f5dc5433ee0767fed611ce282a320467eb9e9331fe5b29140756b721fd7bd5188e3cff272cfa53c00017543cfaf0fecf4fb7c559ef7c986a96a57823837a7a368ae80b62475b7ab9653a2819fee42181ce1089bf4a283d85a375cb1601d37dc4e00c09976f0bddcfc9c22a67981eac8f5ceb4c43ae691abbd9e43968ec798291f363527c5e04b687dadb5fcd1a7fc64317342bdc96410f1163ed320cc2f63bd434341bb17e7d704f3fe901cea1fee5bc24dbe66c56ff1a8d37b3fe2840c8f06c4ec871600ca5bbaa2487f80a0ddfb5122b824a2ef9a71b3cb6512baa4715a7080878455b102f0d0c1dc133d3af55ed266b7b4d91f788bf44ec28c3e7d09695431ed3302136551cef00b941d63d022e89a11d61c8b6458f8ccd4fdba0011045725b0daf7dc08e7e44586c14df481f80c752508efd4ac1de74f5056fda479e0c2e518cf5cb434ee1ec267ac0c51b84334990bdfa04228aee6eca66fdf760a8f475bb6cd07b4b6d5d1af110ef9c518aeb0ba957c086bad652ec9cf4539524afff4694e03c0569760519fcd828514830b54e36249480aae47e5742d048f6a499dbf535385f819720dfcd9256d3926e7667758ef59595272a93434aa28c4feba985fd731c86bb826a4950c1250db3124fe124d939dea950aa94e05a090a0a1e8722dc4a7e06ae5f985e1866cfa5bd72225a1e7cdf700a8422a0be1a32ba331d97be163f3d8391a86c8adb3a62e0011f41905fd6a5e81e51fe6d3d88170fc27109fea01746b00294df176ad08c8f924e90045143fc9d9a1c1c250c8a5ab44a8584d0bc04392b6c34211d7b74d2d5a54ea95662292e3a251d75012915d89c72ea466186660ce8e0ed2b9f0767c8103b12114cb5a513ee679e2c4219c36ae9a3b3b363bc45a5392107304fe2e7c2974f69a1850bdf5c3bef0e49a1a20a3e109c440811e36a0811fa38c52a3c75ab16a04ff4d89399ea136731e87a
+
+Hash = SHA-256
+v = 0x49396846d27df031f8cc18aa9bdc9b9da7562f6ae07df21fa66c26cd0310fda660c3d6f2e6c1caa03e100fc4d6b352168942e178b7f2652efc56e2c09031dc7bf9b27b16407c071c5ac3d4bae94a545bd5c530c5c165705de1adb67157405c621eeb1fd70fd228c68ed7ec29d9a64ae2eedcc5ac4ce5495adc47d2eeb0bcdfc7b17f7e258765f92075d02c757fa8072868f7e86cf1e7953f7551cae870b689ab6e6740b1973165cf2d5d411da49e6d3d14b0c297711510181309c0b8135d6bce53c180154bda252bd9125b3c1f7c5df3e9da46c93364ff49983472648484c0971fc417e0706a50f3fefde2040e0dca9d9b61cdc2bf66feb7947bc410bb7da0bf3d4687c2da248fdbb5cd9ded9afdd0fd748c2760d682abbd83738a3c6ca40d642987ffc291a0f152573543285968e2f5d274c3f1b1779f77acde347d2eef161b8a5c763e0109c45d8fac4e8f8d723c1424f3ae5ab1356ca3ba515568ea52b18fc71582155924e3c4e4b989a4f8a98bc1d06d9425f98ca7a45e368bd6deeb179b185c08e232c89dc83a767262fd6266c5eb0026d23ffb163d82fef58a43e78ab14d00dce931cefe791a4eff40f4704f918a452bac4af1028d6d9eb9ee0761b1a3f3c20669c4df88183208b40ba5e30d80ddd2accfbf16c2f6c80d33462b4d61638244f1543a62984401c9c2775ad1aa2f51efa0c65d39e4f9839b6616ce5205340aed47837b997aa044bb9918710d724a17ac8c8a996d5f32b9995d0871ccd9f8989c11b7eace4c3afa3f6d64464994c54eb55a384cc2e30e41ef0998314ce6dec89b94617aaa415ad59ee00861cfef8c91b0c80b659d31b2be9dd20d3ecf4f004e908c7ad82f9f29aefe24934bf56b74b643314f43ab7918b735b3f832e589ed67e4e58ab1f11fcbb49d36f4f3a38543b60df36594cf4b2e73cceaedf531b78d63d535a9d64d39422ba542ae0ec69e18fbd37c900ce2305322cd4af4b91d46cb857531e79cd3457b898d46a4a180d5c0a7b0caaebafc14ba799cc841d1c571b7d1a6875dcec7989a9dd906025861f94201f444775ee15d112bbfa8c3e516cb98
+A = 0xa271447b3d484bf77c779286d345b06f96e2545a1ec207958c620e51f5dcd428537528cc1bb5dd68ad753775d53f0f0d92a4aa8b59b80a159e1b23e1f219dea0331d361c8061a316df5478fe0a05a8d1ad2017a126b32ec0286dfa77fb7c1be913fea0e1605cb4402307a8614c36e7adf6711b3e8e4ca136675b7b40721dcba3d710acd18490ec841bdb09be3aec8b6dae69027b8125bc42ae6f5564c7dbbc3d0e660d48bc30f0830b246b1532b3f9c5bcf4a272d9f8edb9570df85b67467078f210e7b0b4e37cf6b447d1e07a11bf51a1018076856ac2eaf11961d1f56a3dbc10acd8c79733297e16b984ce41ac274066964e2cdd43680aca1d6804dfe6cf68ec746445c74190fb1cb1c03763a62c51fb422d29b139d4ec4577b7241fd6eac5a62e2f77a414b8006e6931db51088b62c25856210b677484f88c5668326df01df2c82ed39a9158203c4461be7d9427b9ddca1a577b105e926bb7d252be7d408f716f8c6a6c642e902b3c9a59f70dd523a5025d3b89c4fa66e2edea4d4215c77ec9e4ae8877b570ca39dbe46efbce8915c3e8fb48448d67dcd86e1e17c35f89f29ede148a7e0fb8a085ab58735f08ffa30b29062dc341429cad715237a86c4693e8b5268c38e1245dd99143f5fc4651ddc0366616309a3d99fb81e2e740f9c67ef6cfee417a696bd8d04c2cedd8b8a3a05cbcd314d81fc773004d6da8bc33bbfb04ddb17a0968c7ee9933332e28aff249c7bb98a05fd7d28a7c607d5ba9b3f87b3ebeaaab66f6c430c872c9298b1cd20c1ef0cdd2f2a415517be79973e0fc07a19f30bf23422e6c0065776f216fd3364e18798f05ce4df6c02f13e4d56d2e2b658ab3515c650970c626bfe7e91224cfc7943a4fcfb2b492ee693dd249e9619aeb6fce9c2043740097b3fe2f90a2b89b3aad05687d742d8c1818921e23754b769be2f5b33be8c8e779667d1e491fb462ef24c8a285b17d99c68b6f3d106ad976bfaad0ad74aacda01216cb07edc91db3e5a0536a8c83c4c10fc324e2b4ac7626d029b9f0002051d9907c5bed60d5993c5dcd04349d087d2f7ced9598f3a7e134f5
+B = 0x63cf48b88907fb360d05809eed1b5e08d7fcc9ed6cedbf8d5ebdb0f5355c7caf6c6a4e613b4d6d1451089f90827a4c1eb0d5f8e087b3656712ea6010629b0afbe8b659143722468698a0fd24b876cbde42c603f210cd78b5fbf2e837209f17f35637b1c59e2ce786d051696846ea2523311e2d1e9949b16f90156ee933c74407f5521853ef8569061d1f2d3223c98b778eaefa9cddf123f651f2f152e405774208e543df0bc19b295f34fdccc1e78cbbc16d7b43ccbb957e95b0a6d373ff9de26c6079f3739d04cc9ec51f743720f2d8c5bdfd947cf1318a6098f45304419c426463c25174be1e79aeb4c1b985a454c709c1d7d218df9b4d1719a30871207ec3d69d1da52cca166b7b341909aabcf72edbe19b4765e232201ce74072b6e1a24b44a945976a8a5b0e0b9b3f5e818a69fc9c227c9ad8d1198004cca86586a1716db7ab5b3037bc6d008aa1ccd3ebdbfba2d9583d684d2ecf7cede31830354773b2c8f9c4095835f411eef3dc3068d273e7c067d5a34f55e0bd1f488bd74c4e1695b13b722a62ec7aa31302eda9e7caa104287fecf90e87c398722aeee527d7207c2fd1d5c6c81a49adbf31f96abff19681609884f8035c599ef30376611392ce991628b86288e252207c60b0fef2e6c4eb34d16f385258be6e39c309c109d016ce286bc0fdf1919aef02fb8f84cc81f7789f95526412aba22f53ad88f95681b5cb7fe898ef65edb08c295dddf2e53e0803711a5eeeed0fcb081e6a1a7e0dcd1aba3d46deda810ad80997bf6daad3a3241da7180a813ebd09ef9f01178cabec5601fbf799144768a739873d01a936b7117fbee19f716692dcf970d5b3caeb7f8fc16935ed8f08dec73b1e6c450c7e034688b68bcbf384cb3b785a7d4db595a9e1f5472b6da31d86137cf4767fd449ed01dc53f26661f8b89201d4e43c83effe97419e6279984811348438f55e656409922976512af4bd7afea88182a76c436869eb5c8ec6a7d6dd8cf974a11517eb7df5af1e9268ed25865e5cb3179a1e4248eaec9a57ec418be3e8ea78992dffc31a805a31e8436ba763f8c8fda16034c8ff5fb4
+S = 74888875b59e21d2b1ce230de8562e0587cb2e5cc7a840215ba45dbb11a7fca13d64b24037071e8f7e4c6928ed66c3828832405631e531c3665f7054daf95f3c99b7f627bf4116fa3a641014644d00fab00790302123541bfcdc8fbbb19b49d7c5276e56ea87e334431d61d4172f5c4208ab354ab552de8a79f148e8df90a513a07dd1b530b44afb5e87d1c217b09c64e1b10cc08efac931c50042bd720fec2fcb34d10c8cfe525c2e570bba3d305fb31684ae694372b3f01e5f577e4158a2e5d5df027bbf2f0be41ac5271cefd5f64ac9f94a54269f783cbbb2c3803dd6a56da0dc39adec4711606366c3e623ac3265b907d2f76b89d66dd6df226054b50f1b54afd9ede2ccfd6cd24b7328ec81c2dd0e57bd3fe312ede390a8e055ba86119a5bec0168da8f0c6f985035d2355aa0db2ee1eac3d7ed5171e0481d698f5970a4144cf121dbd6d2c835cb4c8852160a7ce51c52673a2fe20a1a0a03aa770536537aaffcf4abfd092441ed9622d273629a33bcce2978019cd549c131c5e3ecd3cd1a024c397e193507b71d059ce4a5f5f3c890a0b9278f865b8e62b7b07d1ffd0002d7538a5ef65ddbba6f73f3255787dbc29be8effa64de23f8827cb1ded5520965d50069c88633a1ba2848f65669a45a3ff7bddb25faa8eb2ccf70aeb5a619de52bb4deebe4247d2447689388c5817fe7aa731acbaca047a041e81d39d847b20bc3598b880b733895b633f1f378c639dc55ed6b6e4dfbd01407d6dfce3bf27c0fdcb7a7300b9c73175c858a8ed91335f29fe7744da33513f7b865e96ef0264ffd17d0964ff8b583ea6c6fe26360bf1e0368f840935a113f734f75afa940361705133f8353ae97e4f119db7055c6a722c756403ba9cf9df3d782c3ef115caa7d276fe0480a3b9b7ac6910314011740a0dbd104ac7fc1e9493b7d2f751f457a870dfd3c27c32a53bc3dc5326f5eff05038dfc8412d161ed9d16ab7d39cb4415c38c24d6cf84531308d5223b32ff7d7a7fa63679276bd1b8342f2d9f45e0ee4e2dbbbd78bc41d999f9677486c0089aba521ce2e74d617d24286c629d4affe3cc442
+
+Hash = SHA-384
+v = 0x2d5b1165d71fb4fb164b77051f5daff95cc5dcdd11121f0a9e4f64962bc71cea9d8f4349035b9dcb34687f2febd33dcc15be3e6a17a53c04db1e95b50d7469846c30e87f4ef45ed36059c9d51796921b6d688647a44132b8e6d910fc420947682becb8480bb65be10753f8be23ee6f49e69d25156dd0a2b1bead3735da8c2bffabd082c305f6fc3ec665a0dd9da9f886efca768ca605ce32f25d0151f54308f99280cd02c6589350b25b6b24c92b54a07f9230d4798480de9aab37656acf43614ea0fd257090268773c5309a858e9e06775d26fbe7aed15c76d16ce34a024449aed325da98aa6a889bed46cf2c42fe90df2090f53b4203e777b14634f6fe72334cce2dc8d42a514ded2236bee7e8a63b7569bb39a505fe5e3f53fbcce1c1f9946c8b9d933781eb8cf981e0a889d2fbe68af0dcaf7249531615bddbb701f2b2450d7e6b0941b0bc4bcb101cae3c0355417d18f95329e38283c9e41853b348ba75949467240f27ff0f827b63f1577b8014aa48bd365a1d4d63d9d6507520bcc30a4b24636f7ddfa3c8f810da5258e139fbc98a78a9229d7a5f515f2e73cd05438cb33d1190203edc9f55091c1db7ac9414387054fcd9d0ff6f6c5bc4c3ca21a2a1f83deaa9644327bd0fb6a4e1bd7ee4c009a41ac0e7251453d5cb7949b6c6c0fa0dcc73228f294c6128e79454487d2d99b398221082c0f26254f1798c2a5998ceccf6d300e54390a32f344c9be83b78cd4e15effa043f0472597beff0938e80f79a05136e1eedac375eaa64dcb94f970913d668619133161eb5dfa51b9c81888938cde7e46d2c660db028d96c5793fc3e02ce3c8c8758a29b97af8aceb1daa862744e772dff1a9b79deb9fbace43865d880660a1744ba7ef598e781d71b40ea8af707f6619df259bb581a272f7e2bca94b3f1c834a0f252a11d453d2d3dc4f87d254c48e86eb818af1994c438ce27f4e63c6eb4b538d162b042f46bc7918279922e99f36794b504725d288dc8f88776716c75bac341860bd8b9dedceaa777b5203b8218d57b4d58dcca294f0088043c7be0055002d902ac181db4938c38ca1c15
+A = 0xa271447b3d484bf77c779286d345b06f96e2545a1ec207958c620e51f5dcd428537528cc1bb5dd68ad753775d53f0f0d92a4aa8b59b80a159e1b23e1f219dea0331d361c8061a316df5478fe0a05a8d1ad2017a126b32ec0286dfa77fb7c1be913fea0e1605cb4402307a8614c36e7adf6711b3e8e4ca136675b7b40721dcba3d710acd18490ec841bdb09be3aec8b6dae69027b8125bc42ae6f5564c7dbbc3d0e660d48bc30f0830b246b1532b3f9c5bcf4a272d9f8edb9570df85b67467078f210e7b0b4e37cf6b447d1e07a11bf51a1018076856ac2eaf11961d1f56a3dbc10acd8c79733297e16b984ce41ac274066964e2cdd43680aca1d6804dfe6cf68ec746445c74190fb1cb1c03763a62c51fb422d29b139d4ec4577b7241fd6eac5a62e2f77a414b8006e6931db51088b62c25856210b677484f88c5668326df01df2c82ed39a9158203c4461be7d9427b9ddca1a577b105e926bb7d252be7d408f716f8c6a6c642e902b3c9a59f70dd523a5025d3b89c4fa66e2edea4d4215c77ec9e4ae8877b570ca39dbe46efbce8915c3e8fb48448d67dcd86e1e17c35f89f29ede148a7e0fb8a085ab58735f08ffa30b29062dc341429cad715237a86c4693e8b5268c38e1245dd99143f5fc4651ddc0366616309a3d99fb81e2e740f9c67ef6cfee417a696bd8d04c2cedd8b8a3a05cbcd314d81fc773004d6da8bc33bbfb04ddb17a0968c7ee9933332e28aff249c7bb98a05fd7d28a7c607d5ba9b3f87b3ebeaaab66f6c430c872c9298b1cd20c1ef0cdd2f2a415517be79973e0fc07a19f30bf23422e6c0065776f216fd3364e18798f05ce4df6c02f13e4d56d2e2b658ab3515c650970c626bfe7e91224cfc7943a4fcfb2b492ee693dd249e9619aeb6fce9c2043740097b3fe2f90a2b89b3aad05687d742d8c1818921e23754b769be2f5b33be8c8e779667d1e491fb462ef24c8a285b17d99c68b6f3d106ad976bfaad0ad74aacda01216cb07edc91db3e5a0536a8c83c4c10fc324e2b4ac7626d029b9f0002051d9907c5bed60d5993c5dcd04349d087d2f7ced9598f3a7e134f5
+B = 0x630600610bf2cd8f8d860732998924d9138401c0fc2a4f8cc224a4b698cf2c6b01464fb26801bba9c649e224f019522ce05acdee90a108a3621be2c597de48a2772f094ef6f8a09aa80cc4a20bc90c54515f57b2400e57d5279af5f13d3ce5bf8af65ef76d8bd1de9fc00686dacec17da02c71a31a5e5f958624a17cb2faa993fdcba1dd8f8944070558f481f86a854afa0a31bec98bb4cda12417520153645a6467bdabe4824c887566a0c77b1f1f999a194ef1cdd49e116bd0694a4e460430423b4dfa9485e116b663543e59d2b00db2a0343cd3c37db2e968b13844e42477612ed03deec782ee8e3bc1375f5300ff05f48ce96e23237c958c92c31a5fd5321ab3b838eb7375a2560a0e8e5925a9beee563a2bbca6338effd7014cee2989faf8e795ca003c0e71f0eb51c3877da2e005161b13d8bf267791963384d2392c2b999e924c6bcab85ea20606fbcff933d1f6b3d52aa4d4ef24adf65b1c299d144a7750bb130f20924afeb3bb12f01d2fe9f1ca7ba2eb898bdcf7e6b00bfdac9e800c9a3a8e8b67133d148e98459b82d6ef302aea708c2b4a335601ea9225e44163dac5b2ca39ba8c9f606454b6caf8addb91ad44868fdf039afc10f9d732e10d20231045c654d19024b4e453e9d0df748287ee160f0a8fd9b17d961a4538a80e85808575173e3b92a9b52234a41dd7a7bc8b6f4711d20ae39d4a52a605f5a62c79fab7088620a749de67a3c7a656f61c6257c9fe624232e7bb57de2d9c5a1bfa9d3da1a0c0f7b2245607af3544b64b0fa8f3e7f13895d6dcdbabda501b6c662a49a0b0141f372016377c33d2c1e654be1cde3b9c1caf2bbc17b074bf4de87e9d5581e6c9eee94faa521364de74dfcb8cee9c765e79d3b862d2889fa2ddccdf688e15f1ae0570845c2733d143cce488889ddaf2a1d6a2f4725390fe3aa9de7bea8cbef9f9a26736b695fbcd5587f40e0d14c77b590f4ff2376bf2c7bcfa0ad3dcd178a5803e06402d8436d644b672e61a8336eed54d711fc7ae5421fce9633591f5be34f2fc3082279d33885bbb168f7c04f1f32a08bde84636aa03ac9cb61d9b84
+S = 2de257f3a433dcf72161b4de41014999b7c1415f7f6440141f781a5c80f5c52d9b275bea0d29f7be99ffbc235ca377910b7a28d35ea682adc9d7d061891997ab0f11cdb4eb94ecffd5fd02504ca52c74e63ee3d2242b77d1d6625f0dbd0c2b0d0c69cb85db020b8247944509421745489474900dfa847fdf1d87bb3540539bf2be7a58789bfc66436debd05c4af0cf52187e6b26f1000f237ccd59ed936a91f931fc35ac010c6eea4a8eed309262dfd6833b991878a2ff20396b71de60417c841d64c7a722f1db03c4035e5729f81dd55685ccf756c2075802ee3104640ae633eef8f3677359174c47801be942ca8bad296eb58555521b72546012ab223d0016d971c99ed7f853ea9ea33bc93dc87451e3749a5aec52b2030e8c8c02da058c5b77ab2a29c8af2d0b7d71eed015aaf158f06ae59f2e78ea6ffc0a11e7ae93ca313618051e62d695ccb7190d22f26612b26f397ea28010b3def7c579de53aef3591f52322b491f8da1a9a1d7a2c0c19fbe2c581c1e4711d2f6939a4f9d0a240bd6fc5d1f0d00b5a0c98ed71be4d39daa70080070c4f9860822cf4e7f338e6073c23c4cdbff7b1156149b23fb5d1bf0c6c3d88b21debd25f007f98b8d43aed76b24fe1d737f3a541b582c93ff1f40512b3ea81c76f7033bf1c0ae6b46c7db38a78ad1bfe70614f0e8bf855a1fd48b6a33db951097b75e2f501e128e4da66fb290d516932324253ea63c5e57b556c3c207cb7c8fe2430c0d242f56f34dad7b249a95b6e66cbc1c9ddd0ddb55e3ce869b9f19d5c30f8668dc316e1acd626d90b1cb1ade3f631cc7cf6d979f85f75bc8ea1bbc4ce7c82dc2b39678d2b7cf4533836080915ee8aac39be0081d8ac0dd55d0b17aa3a455b943b0e33bbcab6d8c060522c92f87200a76641522e351c48aca3309c041595c9aee2c6ef8547089d186803a5c384c616330c3cd132eaca1083532ecc3a3a818294cdcd772dad16055ba1aa76e0acdc4acfb75c4fa6ef3af975062aa69cf87359d17b40e437db3ca0c28edb8d57ea2fbc8894c76241ef79d44affc3c4bd31e20e40c24f61d0210b1d4136ed355
+
+Hash = SHA-512
+v = 0x93eb6be5abc880d776f9d0d1f44e51d9535c911a566eb0826776b3121fddf454246b40582dddc8a2474b0933054d5ec7857789e23ad906c34cff4b10fe4cc970640439bb5082c771dee6d47e3684446fc61222bbbc84dc9105a07e9dd94d40157ca1b3bc8d55f09bf771e42ae943e1f09ad160f954bae55e38e23c7df4777183d09f4324941ae5beab143cf7c4588b4c2d4e4256ccbf58da801c1c80549a8e816f1d3d2873de14023ffa126c079603cca98a8aaadab8ad194a62b265a996a55e0ea8d8e2de3c9f5fba26b6c6625b5ce260fe064d936b73fb35ed1e14f3d91527a44fd9f7ec00a903931f8fa2ac9a08032b2b8948156eed810f1ff23075c76314b0b5f1a04461b63ec100b731ea0ef2ece7563bda5c6fa19b67c7d83f02ff54edfc4695ea92528fd92dff960f3c50354263d30e8f46e43cda7d2c7e1760f4bce57f7014a7e989806e9168030798c168f71f0fb0563d9853f2539926161ac2aef0257c3d38ab789eec0598679361ed7090b6519ea204fc7af0dbd76e7ce0cca90b53a1768ad8340c1faf466b1f45960f92f60a8e2c82722166180773be5c9df2f3975ae7e1b9a2fd105251e031e91fc913c0bbe31a0baf51c0892452ef37980ddad48d2b4d461426f0c7aa1871e418a8de7f66e369ed2db257aafe0473205f736c767299335ecf0ba3330ed69183ee1957a7712452f166e02b0b976d786367c05a1c62175d59bbfe0754248d650ad0b61e8b8c2293a05cc99666256e740220052d809bf6a573011a01e3df8acd263d27eac83155fabe64a04f735fe26b7da939b3722b1e9a980c4c26a391f7224fce4628f20099259ac8e4e8216719fc66f8ae57119f2b579facc40b8eb3cd4bb8da7c9d3e847f93829e1658e2a98f0df2325e25940ed7fc9d75e7f84e3f6f729db90caf59ee5015ad626cde4eba09a929afbe34cce0841b469a022eeb0ff97e650378c64e75cb09b82bd0824952695ef026aa27f370be2fa75ea0e4f1bc80d072850f9647469e2203d7a1da6612e1f6729bc1973f7218531e5b17b27915f37840dcec69896accbafff05dbc75bebd6d2fdf2e05
+A = 0xa271447b3d484bf77c779286d345b06f96e2545a1ec207958c620e51f5dcd428537528cc1bb5dd68ad753775d53f0f0d92a4aa8b59b80a159e1b23e1f219dea0331d361c8061a316df5478fe0a05a8d1ad2017a126b32ec0286dfa77fb7c1be913fea0e1605cb4402307a8614c36e7adf6711b3e8e4ca136675b7b40721dcba3d710acd18490ec841bdb09be3aec8b6dae69027b8125bc42ae6f5564c7dbbc3d0e660d48bc30f0830b246b1532b3f9c5bcf4a272d9f8edb9570df85b67467078f210e7b0b4e37cf6b447d1e07a11bf51a1018076856ac2eaf11961d1f56a3dbc10acd8c79733297e16b984ce41ac274066964e2cdd43680aca1d6804dfe6cf68ec746445c74190fb1cb1c03763a62c51fb422d29b139d4ec4577b7241fd6eac5a62e2f77a414b8006e6931db51088b62c25856210b677484f88c5668326df01df2c82ed39a9158203c4461be7d9427b9ddca1a577b105e926bb7d252be7d408f716f8c6a6c642e902b3c9a59f70dd523a5025d3b89c4fa66e2edea4d4215c77ec9e4ae8877b570ca39dbe46efbce8915c3e8fb48448d67dcd86e1e17c35f89f29ede148a7e0fb8a085ab58735f08ffa30b29062dc341429cad715237a86c4693e8b5268c38e1245dd99143f5fc4651ddc0366616309a3d99fb81e2e740f9c67ef6cfee417a696bd8d04c2cedd8b8a3a05cbcd314d81fc773004d6da8bc33bbfb04ddb17a0968c7ee9933332e28aff249c7bb98a05fd7d28a7c607d5ba9b3f87b3ebeaaab66f6c430c872c9298b1cd20c1ef0cdd2f2a415517be79973e0fc07a19f30bf23422e6c0065776f216fd3364e18798f05ce4df6c02f13e4d56d2e2b658ab3515c650970c626bfe7e91224cfc7943a4fcfb2b492ee693dd249e9619aeb6fce9c2043740097b3fe2f90a2b89b3aad05687d742d8c1818921e23754b769be2f5b33be8c8e779667d1e491fb462ef24c8a285b17d99c68b6f3d106ad976bfaad0ad74aacda01216cb07edc91db3e5a0536a8c83c4c10fc324e2b4ac7626d029b9f0002051d9907c5bed60d5993c5dcd04349d087d2f7ced9598f3a7e134f5
+B = 0x9ce2c593321cb5105add07b50270725184fde28ffc252acdffe83b9942e8b16ea6d314d4e7c88578a9f61fa1add6a7d12526aa7b0b39d2e79c77d5e978ab3d315a3fdee159f49ee0a23dba15ff346d76ffe23610b1f81499d647280214bdcdcc7e887b805d9993d4773b188113220846516638b1616c380c6dab622f0a439a0ed5d9e35c8cefe63ecfed176466b4c8b25216b827f7de52e1978fb4857e7eb5deed7a6e0c54748893f8371ef0fdbe77a3f08aae7c430bcf56108eb613727afc58098f601802f545966c180f04c4b3fc6d84d8355881004bd221c2ebe4f28045cbc00035266f38331c2b05cce9924bc6ab50b24dd7c2f1511846d6e28a6fa662cb8d4f9c0ef32df3b83c9f9e684ce57085aa9e516c8d978ae6c692d40d99740b53fdc8d424f89a19ecdf4e902b2b8ed52fcc965924debb726e98a119e1b6b540eead53e81b19583cc5e113d60c0a8d45cb1d9a6fecf8b41dfecbef9242ea8eed010aacb2934cfe034f8cf792d4906e9b0c79c9cffcbacba251ddb4c30d75edd5e49ac4231f38502a8e56ecf4976d71e9a115143072e410797d1fa39cbcb3c6a16fc1e12034cfa919ddf8eea69858ea1a524c035e01c8cd95ddbb25e868e3632040a5eec84ea89289bfbd1711e3700fcdf741c00c493017598ce23bd604d3fe9b89045ed1a9cae85a4e969246b6ce86a1640a48f08f2035f6fd69a6973fb52ae7c65f94528bdaf04fadd52bb9ad3207bb77a0d783c909620849345d6151ab9ddcef4eb2b451cff4fbf2ac1b5fb1e62ed5021e2ff542badb0515cac96f62dd4c2e571ac9865f3f81ea5d90083cecf8d62d873d20e43f16a968a975bba650646dff56cad0d60c4693ea8d7996180b34c38cfa8795475f08fadbe093f0ec49b768d325f3efb591e6cf12097bdb7bed64c6c99bc9c00c18cac8bd4a7f12559c3343be68c78ed0652e16685b65dea635f504b868ea470a81e42d6b68b8a8452a78c28124bac2cb50296bf585cd5615f2a32943824a7397fb944f90bf4db6017c5c6911a30f05efa27a178996494ef2acf61da8322ceef5e4b18816c52368e8fb1d7d0aed
+S = e555a1c5e2bd4f853e5a0049f964a5348b44c7a53a7d7def41bbf5f6c5a6cfa96d113d9454b039157c14cfb6959e849e7031a7c2d8654308fd74ccc575f680e5700423d31ddc4944e9df7322ccc4d4eaed83fd3b9d063a4dfa2f2c80d24f4b679522241595656aa4d14d071840cd40c0a35de29bee70b57baa0571a65e30b8b9669670ed83b5aa0d46397a28f6cedbde5ff410b11446498636ef3d04992f9d63501c71d264649fe4b18d0b043e621d2ea4a260a9684fb1f28aaa0a81a1956ab0fec712d9f82d0a3f2d63c3230432a8f1c78e7258b6c76ac100bef784705317a44613e87db726015f67fb62f26214d7ab28a7fb979c191d94765d04b4b4f007e5a56af5fceb2a68b13833869c244d08ec8a50bca2feb31dfc863ceca7d1545163200d0570bede3700e9412412f77286ede2fa46df0118ad67cc1e90405d7f4e9cdd93c164c3fe233a5a5c1495d880c2a479b71c61bf17a1c03df391a3afb5990d9b0179da15ff3d12b542c40dcc9f3b72bc99c8797c34eead804b26decc299e21ba8b80558f82dfc8a2face85c7d96a7cead7c59a5a7da25f5efe37fd15a3b5f1151639f8e37423f0f315def914d179163f4c0d495282ffa9fe8cb8b5df49040bcec8419157a347c30e2139a77055408fa22935121a61f066ab1fa8cd039096aadd700491b2bd52a7c7c349cf1e3bb7acc6257152e2b7cf2e3bd7d8b8e49a31e27d583571899a5df30707ad4f55b60075c5f8014c3ce4dd005fbf216328b4f8e4e0a4c907c661b0432122ba992eb4dcf4a85a2225cf12c40a97c2f7d2457d1fa77b3eb892361381e4da0eda63d8d575e77e251efb17ac3efbf81a85f7cf3c04144aca8ab9210195b82604023fe3273246d251ef8d0902b4914baf5fbea17996a13ab2ed74baff06f160c9401294afa6d366f169a2a97f1961b3fab0683dfff98c6701120641f33cd1c44c8e8379bb7441d2830fa1356dbb8b123079f0a30166e4bb2a7a9337c73baa16710ded48cb32e12d0d515e62ba2590045758536a0052980aef572d60d9bb0a1b1c05e97c0e165d906fcca128fc09dacc517305e17fe240
+
+Hash = BLAKE2b(224)
+v = 0xada75e89ff2618623b8ebccbf17420100282ef09131e845c28572fda027e0f3ffa0fc76a9033b5651ce3b552d8af4cf394519985e79f9c21675ac73449bdc196e529a74cd43feb963c53a57f82a47451fea67469ceda0edaee628c00ee7dcb17af04eea3d47a498fe1bb4e29826d02149cffe312cb6d6bcf2460b2d0bbdf17af41cc63087b995b2b5e5b6e4a89ed78ce74fc305943db78e49116236bfcf2e3fdb5979a0e6bd8b21c0c943fec810c5c19a85fb072823609b052ba1aad51ae95e1d1e2c3224322cf902653e42fd370c9f5e54a735f8066b3056ad964398e00d7a6c65f70aabcac802e3bd447bd513162424beffcc6418a168df03bf0a6e8ea661b928c56361259b4f877dcf6ae93116fb8c6d956dc92d321f7d4e8a9360db8c9dcbf2e6d0ffd615d4c8723a32bb9d33e312f58d24418242314ffdc4d81ed254ebfad4a67f40f8d5ceb9889c61ebf69103549330ec1fd19c2023e17ab8a0a6295092ef46ecf0c61e1ecacbc30350ae0dd12b39771d43e64a2469b5e4a97fe5b8b5f7aeb563bd40b99c1297388191e2343e8f0bdc6038d802b98e9d8d8a300be3093006cd415f850efa6764ae74e405d20c54374d9c0cfb9f2b9372c7bffed03d2f8005432d83f6df9633b407b83d911db52a572fdfc63231b9188fd47c54d938508496c4d0f1ec79bac2cbf24c8a3aa0bb721d277f2461d3c129062d0a6c0cae2cb3aeb491da42409a38c11d353228886b032607a701fc10164af6698f838e551f45b382861139ed9598081a794a84d4ece434a8640ee8f2ab71f4b172002c5c0c5c946c341831da69adef79269bf4374b5cc192d9c2584d1e20c61e01f28e266e4bcbaa00505b6eab6ce13c02b36fc513c006ed6b921fdc7338f445945e38f88cc16885f983c35bdf0151d3a8e0dee011f8b1cf530660983bd489f9461f75b2f936d47921db7b8188404ff63dd7c058876cf8c2cb486365ea255357943d526261ddd6fac59a5f1fd8d0d2f180ce623829e3d9cbcbd8b4e5a439a9052a9c268344bd35052dbd6939ed75d8dade1648993d11c017a52cb09cb02146371f1d265e788
+A = 0xa271447b3d484bf77c779286d345b06f96e2545a1ec207958c620e51f5dcd428537528cc1bb5dd68ad753775d53f0f0d92a4aa8b59b80a159e1b23e1f219dea0331d361c8061a316df5478fe0a05a8d1ad2017a126b32ec0286dfa77fb7c1be913fea0e1605cb4402307a8614c36e7adf6711b3e8e4ca136675b7b40721dcba3d710acd18490ec841bdb09be3aec8b6dae69027b8125bc42ae6f5564c7dbbc3d0e660d48bc30f0830b246b1532b3f9c5bcf4a272d9f8edb9570df85b67467078f210e7b0b4e37cf6b447d1e07a11bf51a1018076856ac2eaf11961d1f56a3dbc10acd8c79733297e16b984ce41ac274066964e2cdd43680aca1d6804dfe6cf68ec746445c74190fb1cb1c03763a62c51fb422d29b139d4ec4577b7241fd6eac5a62e2f77a414b8006e6931db51088b62c25856210b677484f88c5668326df01df2c82ed39a9158203c4461be7d9427b9ddca1a577b105e926bb7d252be7d408f716f8c6a6c642e902b3c9a59f70dd523a5025d3b89c4fa66e2edea4d4215c77ec9e4ae8877b570ca39dbe46efbce8915c3e8fb48448d67dcd86e1e17c35f89f29ede148a7e0fb8a085ab58735f08ffa30b29062dc341429cad715237a86c4693e8b5268c38e1245dd99143f5fc4651ddc0366616309a3d99fb81e2e740f9c67ef6cfee417a696bd8d04c2cedd8b8a3a05cbcd314d81fc773004d6da8bc33bbfb04ddb17a0968c7ee9933332e28aff249c7bb98a05fd7d28a7c607d5ba9b3f87b3ebeaaab66f6c430c872c9298b1cd20c1ef0cdd2f2a415517be79973e0fc07a19f30bf23422e6c0065776f216fd3364e18798f05ce4df6c02f13e4d56d2e2b658ab3515c650970c626bfe7e91224cfc7943a4fcfb2b492ee693dd249e9619aeb6fce9c2043740097b3fe2f90a2b89b3aad05687d742d8c1818921e23754b769be2f5b33be8c8e779667d1e491fb462ef24c8a285b17d99c68b6f3d106ad976bfaad0ad74aacda01216cb07edc91db3e5a0536a8c83c4c10fc324e2b4ac7626d029b9f0002051d9907c5bed60d5993c5dcd04349d087d2f7ced9598f3a7e134f5
+B = 0x01c94a9bc9e939f489605e0aacdcd8bcd7b10e00990b0330db49562aec6bab05cc7a71964fc894020e1f23937e10908003a99ec5b37e2b3e875cc0912f94c1b647c87651a6d42a8f0b17728a907c9d1633b6b6961fe192a4b95d8c40908d33006c4cf41269ecb0838d73603c410bf81b317d7863f898d06d180c83e5f5fd0cf172c2e51d9e412e5253be2aa782263411343cd2c3fadc16793cf32814abc686fa04a1021dd91c5b6f3d81d6ac82360bfdaf44631ce0b5841f17da15dd5b33e9603cf4ba8724e12936e141d2b1b9682b166929a4a3e01565070e36b7215a969b219dc25b1d14d7de1f250500efd746025654ddff6ad946ed5ecb8c9d2ff52b1c280c649b101bcf315cfd98a857f850c37e9f72d3dc8727ef33284bbb4460c3024afee07006954b02ba8e7fa024799b5437b531efa34599add990d7c781fadf8a305f803822033c095d723e3455fdc2968bbc1121cd443ac132ed5932fe5d9f8da33581c1475a6daa43bb7cc721bacdb50865f941349ce73984ee79407c257cde9b3edcb7598769fa5696cfc4a19099934bc9c587ea81e4944e74b43edfcc5d5c691a46bc94886990587972f84ed2865dad92878be8483bb4ab1e27c20f166115a677a013e971c1e8a8bc2b0d1dff00ff99b1a192bc8458701bd785dd1e73718205006344fdd057d9ffaf6935c22e4730a4006285ae2f39c184dc37ace04fe2363119821cbe781d25a2ea7a4bf71f4b9fecf430341690665665bd1637bc8c84a17728146e296306411148c431f9112ec9eff4c266213bf3bafb304808c8922aec2e0e19a934639054aa047d349b02b4b2e2a3f2c21d27699d19a9e45b47a0363f2a1f066ca2f414f5d0ffbca1e720ed8b80b85676eb657fe7a97dda80a1a969be8891d68955ee898fd2ab5e3cffb8612c1dcbd9f66756e8c4933673ccec888767864796e1082fd132f2c0020ea0e72734564e069859beacde3e585e7922c03afc748aa495ed2b5984a69d756c161102040bf6a5475a81f1d5ba1486a4f99396f4f68c5725907889f8768001b36789f0260e7faafdee8f797d6b37554868f49e710c
+S = fe6ffcd1626300627ca230b6cc60b81d65d6fadfaf4e68c9769e8be2a2543f9601d335d2d0182feedec39c4205700818b6027c54bba7f1ceec2003a219bf6ba9efbecbbc9884e3237ecda258997d18983a27eeee45fb277a0b5d3b3a2730e93ad6bd4e551ebeb70910ce5081bec4bf8fec450826f06a4858337f09809c9d7c32252b4f2992da63fb93fd59a0d52a51564bbc51d5461b272c4bd3bb7d7387522be665013069bde2311544aa97372ef7190c2eaccb5af5b98ed2b2c3663c2c8ff25c11929222fcfb21ada248a96438bc20c3434bfc1e7d2a141f9f514b97373b4907ba701b8b9a8718a9815e19917b3abfec97002383609c2ff97ad0a5a1cd46f05567108f804c7523bc1fbc73b9f61955436f4193d58c253c00346b7d11ae49d6223838eb4a2e04aacf025addc93c9d30964c61d7b76e7b1f78f028eadfdc962a35a100d44d7f3bf60df0df5c06c52d54311a9ef1d4a63a6ad16bb33b22ee09cc3bccacfe588f021f5f714112fbdc3426f4180ca781549e725224611c00de00d0632f021499873e889afb44e64c9fef499c7c3ea253063c653a8aa6359d884e45b64afb9c63c34c8453db15ff878dbbbf2ba37595cbc43b3c6f08ad0e8b018b7af1f3d4c0ea91005c9309bff350885c30380a58b5747560677b484a9f29ece70a42c175328b7c723a7c96cb87b986e0de009c57da6408199e0714bbe9cb98323ffa0593d5cca0c696128e79391867be79baa53b6d5ae0187cccb9b952e402277a49464e6ec404b9f4bfd6edec7556c4e817e6fd6a1fb66b0855c439a220e674282678a3ed79d709d95ff7210fbb7fa3806ee6b0c1c44446980799ce9479ec8f71555d1070235c1fcfbd3c174cb9637a1d599ecdee7370dd6ac651e3e0db19d83b3cc3e9b140eb1cb3e7ac1baf3e5828423e373204ad7c18edba21461e561dbe59034f725ef140c915896b68cb3e32e72f9be47cd458284257a06257599d07b3bccdf056a521cd5138380a75aa55ca02be5301e27a5349ca11f6833abe39525803a386ab107b1cab177b0d680405ba5231608bb7dc320e4c53ef37c5370a78efc6
+
+Hash = BLAKE2b(256)
+v = 0x64ba91a31f69db7b76e62fe54da53ef0f6ca049740cb2d9ecd2b9b22d2765abc2ab88fcb8f813654efdce95e7fb100bb6d049af6a0688506585f7420f372da358050f27e0e86f14d5092ee2f781b3e38dd6d5bb55450b8163d82f958bfa62b5fdffbee65034fa5f6641fbbbe8f23fd68ac555ae7e3224fcaab5c822154fd4aa444e0ca8b4550818926346489e527f0fcc42ddb31a466f2217bb3a03cf689c77b9ff5a6c2f60e8999f9029f7894680b007175201282433884ed0961ff8a7d9b27f4b08f1e5c2e4aef2ee40a101b4e1876dbed62fc973d44175a56170d15b963fba3e3282ccebd611e60347a145ce5d21c73bad03400256bcad7ff586839344dcf15a3f1f7fe179279a85e383adb789fd2b84eb076a260537996dd34cbb59339b04273eb1c1c1bbf9694daffee373bece63c5d59331fddf0ba68282aaa195b7e6c3626fa3e4f3a663992b59b8e546f194bc0244c9412020488d38d34feb4951201fb4bf2bc9e12080d9d61a8a0391d33b3c8d7db382984f899179a2ffc97e3664db126c100baac90b66b638abcc7c8e16d7da02d409f66e0416093f433f05d6eb0101c439c7d00c8c37c935e2f55a4dded176918f03455daf8e98bad6acbfe76065f7d9fd9667389aa0c24425bbab2241e8b809decdcf9ccb923001d0185207059058d2776145092a6ca1374dba93938b57f372772599ddfe95c06cc9e779d4b42c1e75bc7ff1a08c429b78ae140170e7b29027136ae12e336032265d3400995acd956503c4458ba97b1081b0ab5c58564da97372d2a2931c732d441d438db034805c7eab6002fa5c678d7e6423d8fccfce7d3f4fb36b18eccbcd6c699058b42d78182047a627d246087f19d1fda858b5ac3ad7a4160db15d60b215628134699c7fecf3178780f99c1a03984c2b3d5d99fb4fad2158a39c620e4b3f0d9dbfc1338de1646252c4e54de19b1d0b8e913282e50e409025453b8b0070e316b238ee1fb283564f4c0a47269023f324ddffab0dfeb09ed44375f73836fbfa8fec298eaafe4d1c3066ca8cd771737ee5a9107e1f0bfe3eedb7fcad803c6bc614fc89d3a37
+A = 0xa271447b3d484bf77c779286d345b06f96e2545a1ec207958c620e51f5dcd428537528cc1bb5dd68ad753775d53f0f0d92a4aa8b59b80a159e1b23e1f219dea0331d361c8061a316df5478fe0a05a8d1ad2017a126b32ec0286dfa77fb7c1be913fea0e1605cb4402307a8614c36e7adf6711b3e8e4ca136675b7b40721dcba3d710acd18490ec841bdb09be3aec8b6dae69027b8125bc42ae6f5564c7dbbc3d0e660d48bc30f0830b246b1532b3f9c5bcf4a272d9f8edb9570df85b67467078f210e7b0b4e37cf6b447d1e07a11bf51a1018076856ac2eaf11961d1f56a3dbc10acd8c79733297e16b984ce41ac274066964e2cdd43680aca1d6804dfe6cf68ec746445c74190fb1cb1c03763a62c51fb422d29b139d4ec4577b7241fd6eac5a62e2f77a414b8006e6931db51088b62c25856210b677484f88c5668326df01df2c82ed39a9158203c4461be7d9427b9ddca1a577b105e926bb7d252be7d408f716f8c6a6c642e902b3c9a59f70dd523a5025d3b89c4fa66e2edea4d4215c77ec9e4ae8877b570ca39dbe46efbce8915c3e8fb48448d67dcd86e1e17c35f89f29ede148a7e0fb8a085ab58735f08ffa30b29062dc341429cad715237a86c4693e8b5268c38e1245dd99143f5fc4651ddc0366616309a3d99fb81e2e740f9c67ef6cfee417a696bd8d04c2cedd8b8a3a05cbcd314d81fc773004d6da8bc33bbfb04ddb17a0968c7ee9933332e28aff249c7bb98a05fd7d28a7c607d5ba9b3f87b3ebeaaab66f6c430c872c9298b1cd20c1ef0cdd2f2a415517be79973e0fc07a19f30bf23422e6c0065776f216fd3364e18798f05ce4df6c02f13e4d56d2e2b658ab3515c650970c626bfe7e91224cfc7943a4fcfb2b492ee693dd249e9619aeb6fce9c2043740097b3fe2f90a2b89b3aad05687d742d8c1818921e23754b769be2f5b33be8c8e779667d1e491fb462ef24c8a285b17d99c68b6f3d106ad976bfaad0ad74aacda01216cb07edc91db3e5a0536a8c83c4c10fc324e2b4ac7626d029b9f0002051d9907c5bed60d5993c5dcd04349d087d2f7ced9598f3a7e134f5
+B = 0x238e2c7ca089136cb8dbc04f3c275f054b84bdd4f2deca143fae47fab60aac18ded948265a804d0397b5e39641ae31ec473b731086b73046c61bb32adeb008f4d10a5bf1412459e1900535dd0a598d19ba110e48b77dca104f490a1d259f4b684831c8759c497f095d47ede04352689f02f240337761999edb24536ac97d91150e25bcc340d5e1dfd3931609146b1c75dbc312f0e080ca940660bcea486755664f31d5e1ea1fa5494aca2e00e9ba09a402691cc81c2b40651fce88d0b6b35efe491bc1f880966e9ba7b906d93390233565fbe2c3929066f45ee4e4570ca362057fb1e050dfb08e061b3e973453fc72754d0c2f2ac2b408fbe3974571b45b85a6ab61eafa8e252fbf7716e32e4a9c1d1a403bd0995ce8397fbc49d2fa2765a252670b65d9ccc0184051edeaa46858fb1d925ac5414e5a939a58af859c6b18197a15a3d2458da34e2943c778367af5bad9a281ba4da56154d462b1639be1a7f9e76e97f5f63b2fd8dc30126a60186ccb964ef54875797d84b0bc0cc7fffe0ffa6fdbef4c8b617faeca65ebe2691854ec6e2d7069e8070afcbea333d55f2f484fc96924cf877c71384a3027e050d5930813f28ab4c1d76e881ccc86749c31fd7dda51791d4f7e4f1c38f377cc0eeb1e7fe19909db44658520ef1e9751e6964287f0f19b6a34abd8e7b483d5936c5ba74bc74d131390a0be7fa42d1cab6726d0b151496a9abe59b87016ed147d3c9db1beb277efea68026128965e7f2e5dc9644b1e6d2448ac393f96f88dc86a8bfd9d26c8a9e9bebe95303165bea520ca62e3dde04ea59337902bc378706abe0b3635babe0741d3540893f6a9d8236a16f708d167555cf13e7185f5d863f71a35ead887852d3196bb8d2fc1a32ab4e08e83fa359a263aa267b7d1b107e73cc08dd99141f168b1a0d55407e0253dfaf1b6967af27d5721c2e848ffa68935bc26d99813672fa817256e9caf84974e72d6d739d9228952f9b0563b8cd0e5aaa82d839f60cad039b1950bab5117f7d48551848a54a973bb583978757aad060c77a20b87cb8bebb9fab5abe605a09384d91efd19aa6cb7
+S = 840a8908db4b7bf092013b7cafde0e8c1af8b2caac454604c57683975502dc8b93a922dd1218ed25e26c0a122ea709019c8458a76e7ce57beb2872cdab188fa05f9e2420f07da49dee9c744b7101b66bd409d1b3315f30a66c1b2fdf26881275dc29c136bcc53601ed6049448ef8d240eebcbaa712f9d787f397b2692fe6283366077461d7e0981c0952c40758de9a1d2e49367c02e4b884cdcc74ee0afe8ee286889d41e82002e41792c80efa560160d2d156b3861b28c689fe332ade5d7badd045c75f56230075099989ab370cbeedb98a7ff87f881668934a396017cf92cc9b1c89879c4f0c436d8b3d943f8bd4672cc71124c93ed1ad859b23d122f05ed7012b8a5294a5ffa805a02da8d20644f32267735524b46767a834609ebd85de41d472bde0e33d0b2c202ed2a6faa9606e8ef24d455c032eae76475e267cefff63b3d9c3785dad81d4ecfb6ec6467d809d808dd332e10c1f968ad24ae45fda3326a8ff5c5e511e2e4a4c8e872485baee32f3b41bd9878cedcedf12e88c8299dc0cf3e849110ec306d511a76e17bacab588384d0d6858b9834537134995e723f5c0a87fe6700f1252f36114438d9f4bd32e94c2313937c5226cd4424a0daca039329f3229fd1697e6c1cfa89627c232ad110c92f9fb45fead4180765042c62a65d61e6ac5bf1dec1e7bfe29b5c2699d399fbadc108a9c75e6f9fcb05fd549c7f7e92f5727597fe09b3c033647bd4c7cc00d181601431e5f67cdf32ca646d864e8096371656afeff23716f0bf733fd8db4263e863401d11cb3d125450caa726ca36903e2e8ca4be55e132866374f0ac355275f294ec947452d8c2bae720ae75a3bc169cc826c25cc9280714bfe35e27cb35ddabb88e391e20ba66784a9d8cf60340fa097c7ca3155fe648eaa6b657b2334bba323b364af1a5a5dbc41f3da55c5c425506db9fb915e6c3219f26421f63f084f98c36876fdd3541bb94b288ab443bb0a8f555f3cf72c3e03a46c7a53749649e2cfd6a5305342152a5616b3b526c40c9286a73963210435a894db7f2f71c8515c5033cbaef11286f2d7683b2859973b66
+
+Hash = BLAKE2b(384)
+v = 0xc89c7b9a14f05f71390bc9f97f4fca02542b260f71f5c4a30576793101ca9e29ed49d1efb638e6dd0fe489a551c4143b2305aaffa06c7561937b09c3583cd97ee5ecc7f82fe75e79d717e91ee8759a325cea0a2ef916bb9bd80b0b74d046108f011e421efba02399f27daa4ffbc17ae39bb3d614ec63d7d655cdd5b76785bd33d93e1a3a9883401d45f829b3d030f3242285039f5e436f4b6dbe95c91c3c412b5da650bb815a5c150363956860f069b90a4c8a7970cb0ff09177c08647a73dddd72010c73dc12c1b899c04978b9d65e7a4c62b06549ddc44db7c20dc13e7b490c8fa93b5f8f13942704a0352e0338c442dbc734bde6cdf680933abe90ae3248060b814d3ef5fc0ca3b2ab359b5576ece718c8bd8a9fae81ccf43634b05d6636861ced7cc403d3f8585c80a74514ba185e6eeff14d27c2e413310500a756b37c36f1210a2cf67a12f73d9037d24f32f13f3a3909b3fb3e26581ca99a8579819fd427d34d809d4c3633201b9589895fe6178a976f601c2c28349296eb199f96b72025454dd67ac4dd96c9c88c63eeba1f9d3261978011adf2aab5294baa282b5c110fed12142dd52d0cddf853d5d11b641d79c723c79be0c1bb53f2daa315a719f6e01543f461f1601a2faf77475715877216cf93df4b435e30c81f334bb8331341cc55ec76b75ea62ffdc0602cebd1ca92b141a4c32f27e1f7e58bf4382dabd418ea04d09a7e79898e1a99fdcea2c39fb357d823a56aad76333f4c676d9e834a6d37d61b57d33a58a61331f2a74f96f829a63d12672bf39c32b94e3c93530210379dfa10f82782891a28b628b7b60927e4746143c505796e08bddd355fdc77fb4252077b54740ac04d147e81d214ee541743b0ae1612b103e9056fceadf13c18c4ad2c8ad1ac3572ceccc7965ed76ba3cfa8714acb92efea54ba94d2e83d5a9aae636abcd46c98f552f96a8430add68f1b8fac39cc55f79abc2a6e60d812ffd13693628d328bd4e46ddff64b516bd11b7e7a739833a6a53ced8fa13f744ff7bea05b6b86be4abc78018546578aed0450d5dab17d0c273a576fead3aa692477aa8
+A = 0xa271447b3d484bf77c779286d345b06f96e2545a1ec207958c620e51f5dcd428537528cc1bb5dd68ad753775d53f0f0d92a4aa8b59b80a159e1b23e1f219dea0331d361c8061a316df5478fe0a05a8d1ad2017a126b32ec0286dfa77fb7c1be913fea0e1605cb4402307a8614c36e7adf6711b3e8e4ca136675b7b40721dcba3d710acd18490ec841bdb09be3aec8b6dae69027b8125bc42ae6f5564c7dbbc3d0e660d48bc30f0830b246b1532b3f9c5bcf4a272d9f8edb9570df85b67467078f210e7b0b4e37cf6b447d1e07a11bf51a1018076856ac2eaf11961d1f56a3dbc10acd8c79733297e16b984ce41ac274066964e2cdd43680aca1d6804dfe6cf68ec746445c74190fb1cb1c03763a62c51fb422d29b139d4ec4577b7241fd6eac5a62e2f77a414b8006e6931db51088b62c25856210b677484f88c5668326df01df2c82ed39a9158203c4461be7d9427b9ddca1a577b105e926bb7d252be7d408f716f8c6a6c642e902b3c9a59f70dd523a5025d3b89c4fa66e2edea4d4215c77ec9e4ae8877b570ca39dbe46efbce8915c3e8fb48448d67dcd86e1e17c35f89f29ede148a7e0fb8a085ab58735f08ffa30b29062dc341429cad715237a86c4693e8b5268c38e1245dd99143f5fc4651ddc0366616309a3d99fb81e2e740f9c67ef6cfee417a696bd8d04c2cedd8b8a3a05cbcd314d81fc773004d6da8bc33bbfb04ddb17a0968c7ee9933332e28aff249c7bb98a05fd7d28a7c607d5ba9b3f87b3ebeaaab66f6c430c872c9298b1cd20c1ef0cdd2f2a415517be79973e0fc07a19f30bf23422e6c0065776f216fd3364e18798f05ce4df6c02f13e4d56d2e2b658ab3515c650970c626bfe7e91224cfc7943a4fcfb2b492ee693dd249e9619aeb6fce9c2043740097b3fe2f90a2b89b3aad05687d742d8c1818921e23754b769be2f5b33be8c8e779667d1e491fb462ef24c8a285b17d99c68b6f3d106ad976bfaad0ad74aacda01216cb07edc91db3e5a0536a8c83c4c10fc324e2b4ac7626d029b9f0002051d9907c5bed60d5993c5dcd04349d087d2f7ced9598f3a7e134f5
+B = 0x75e5fcdd929bccdfec36eb96f05d8be0a40674cc7ad41895f748b1f5651c445b5cbfd830202ef45cd85d7b4b8096c8d808ec1cfa03703243852b47c48bd4a7ffeeca6994ff7f1907d09de29d296b90fcc1c90c7357bac85956ab62b42a5d28b6fa1f0fada51373f819d142229823f1ef34d2a5f3f40af6255b9e92ff8beddc915a9f9bcd66a6291aa0511906d90a62a879e51b9b0503fe9fd728cfd04864b92aaa95b3811f92e0c4d1afb0c03608be9fab62cb83ee9780430d68a4e6828e739fbc2e196c91878b54107d9b20f47601496dbf113b1d06c61f12e2078d0b83eb0193928720a7620b2cb4f0e4be938c3f79fd70f94a358fd8d84449e12decf710308fafe902181629b669eb89522bfa46213e0667766d3d0f39cf3eafd3fd2f6336dfe995db8084b30f2e91f8b8b998c9e47f191c82d703dff8489bfd091ae075c7e738e351c13654d0101c3aa7dbce9952aa58ade6d26312e2843f9848bc8cf2dd8d519957be0aa3e78448dc9b3f4d8d8dab33d3c9cb87930b64b3412f7ecd5d789d739d8e88a849d54905e8571f56b7b705c5a0c58c385ed7776d75403703c02f1d8d1cc10856aa62b4ebd9d8940f5a3d8215e65d8d05e35d5c5b1fde54d8c3f999847ee2bbca81c7db0307bf897d1ddfaafb1f62f24d69f1470f97ac8a98492e4e0545118219110052377360907d28bd462f6744d50798dd0f9f124b3423980eb72ba11571044162e1216b5971acc88a05da2d80c3d321e22bc6bd01268591b95db2caf58ca9df04dec8b85060d085d79470ee485b1019ce03ac882778e76fc8b2f0d3290a98770eb56af30404235416a6b5a7c352bed655826e5827b93bed2a1176e1c5b6f83d35e8854c2f5fecd6db9a3d0430da37f465f6214a0315a3516b335e8e231fbbad31de6a216ff57cd18a4c782ccf773adb4d461159c821ad6753cfb15a1958f7a8b0ae829dd144dd42cba140ca81321eecc5ab333b1dbcf02a4e72413f7b52a16802a799fa346b686ccd83281f7e97c32689ddda13fac2a751ea6be874f6704ed51de1b029f02214665999fe58ed837065173d3235999f6eea9c
+S = 232f0d50e89e3c5d5af641f854c11cdc7481e45664f231301f7f8de712ef7389ca17bc1503313a3a1bffb4aacbdc142e421d285707d27edce3be9810e7a53f9d8f305fa7522d4d61145175dfa3e837da1886094297052d35135b7bb7ffc13be8067828f59072f1145c9cde83a0d6211335cdc47f23a14a4d042c4d3fcd09dfc59fb80dc16f875f6b71e0cc8b6774bf86cd89707fb7d555c58c7926b33ef803594a0bdb4cd5fddd667d9f53fc331541756677e7b27592eb6c9ab981955f2ec74e11be8292da32371f94edba64132a2599ef2a064f28ad05b9c98a0e5f02ee93be9f62ea47f62d4cbb0c7739148cdf7bfa49c1a1284bab58af58731272266c0328dd576847ccd2ee51208761a7ba3a5ed2f03008a189c0036ba2b0fd04cc3bb04b0f62679c0b80bd0c52bd327448cb2c83925021c753c4c352b1ffd0f212f99574374a52eb214e34678b6c00ebfbc799fc69980c3c792c296a88d2dc510678352fde9edaae2d1039408dcd3347f81e2d59ff95b375646baf63dcb09eecb4d265e1fe2bad020ed8ee6e97166808b34dd8d84ebbe0b8bd49f6d8d4e32375bcaf59fedbaa1dad732991da76b76fb3fa3c6431ffb2293f2a8a97d90b8d70a78057cf374413a002604ad25194a0dbeda1b801e67c0d9799c4cd44ae8606722735fed0b93c8e4a6cb89de62cc469640ca5442dc56ac5aa2a4569cdedc80a0efe48645ffef5af1c6d5b05f9e49225f765e41e201f693d2660bfc3421cde875b9740e09f1ae4fcc71ff609a419a254f3d4dda3a826b0ebbee1f1f7a71dfcde0ac715b945974054ae8ac53efd4aad2c6b3665d257f577d08aacd5909354caf91bc36c6814fa551d5a72dd888e774f62bdb9c665c75e11ef4ae5b61eb8e63c23e5a67cba82fc3ab3693f25fdd7ab31723c4bf7774431be7cac16da81796021bec71a2af6c9098a41d39a1216572fadc2408f5cd4dfb9bc0306e2536674b896096b4c67f62f56cb8c998a2be9f94c6d1f3c0e46d4c4dda89501c5240acb502cdec4d49a32898bf9cfe3759beefa9b5236fe31b1ba6dd993541bdaebb2d5417a091a22c933655e
+
+Hash = BLAKE2b(512)
+v = 0x5216a437348d21ab6ac9eda3c8cf5fc34d84c62a88b8a1b4960de653d050bde8d54ac8f2fc9e13e2b84ca38687762dc0dfcefaaababf6f561ad412f1338afbb23acd53ab8e13cb9accf46aa1edf01efde16926d8d9f83b266a940cc7a639ffcff68f1317debd2c705f7d4f775785f53b9581c5ca5e1669c6f9c8d677b18ed95a1f1a2b07f72d8f90cf950b7d78c83802c3707b959cee46b9f239f0d7f43e276017593466e98488db420bed117f620dd79b8cb96202746391d419f3d41fbfd5b00b0a63b7ad6dbbecdee91c0cf7bfaa2cf25b2982dd1ba1f8b311e83eaaffbcd96501e27e801e28a7ca1e8f61b46d3914ece505ee68c7cabacd06ac8345466de5f5d022424790af641a0106daa0fb34388320e22897853752f2c91c605e4715c777f343da4be8d0e24412f03354eb756a61fe1c7d71096fd7aacbbce026a504b639c7540e9b9af6358d4f5a30137e08c693d73f9a56ff9acada6a6133c1d34e84b18dd7f86a72fcc2cd64965287e6bd05e97852d3735bcacd6009fb56592223f1288bd2797a7dae036561006deba0921be8abc6de849cf227753c305438572b964867c53b6d3ba3ede6807e244445e3c192a4952456e53b1d181c4874a27e54ed96c879c1584811ec535e0db170cd71d3fc857310b43f96c86c4b4ed35882277de479b3ac0f36b1161fff4403d3362315b75f317620666b8b09f6799f29dcc5cd7fbf5adbca24311b812c22bc2cd822ed941ab4352f931803a1e9713b0e963767f46ad1361bc8321f8e2e88ab889860689a43fa224ff2dcd0972db117e4bb3474b0c08d6c3ca0d88d447d3c223fa19371b4c4e4819812ed9a937f37f3ac7fdacc16abd30728a632fff31f75680a6237d00fe3044a7d135a2caf81489808552d03855630da82cb42a067c0cc25618d7919e399e35aa6e1cb1355f5c2de42b91cbfaf7698e2fa8c2b33c1d032ffda9fcee0b74e892eb35b67e0650c0dade1962f655a6a8d634402f169f7cb21e678d38fa4dc3ece6c5152db9671ccecfee78c59bf740561ae0e912760a18c27009ba108f6bebf93028cd60d4b33ec7f8db6dbc1fc
+A = 0xa271447b3d484bf77c779286d345b06f96e2545a1ec207958c620e51f5dcd428537528cc1bb5dd68ad753775d53f0f0d92a4aa8b59b80a159e1b23e1f219dea0331d361c8061a316df5478fe0a05a8d1ad2017a126b32ec0286dfa77fb7c1be913fea0e1605cb4402307a8614c36e7adf6711b3e8e4ca136675b7b40721dcba3d710acd18490ec841bdb09be3aec8b6dae69027b8125bc42ae6f5564c7dbbc3d0e660d48bc30f0830b246b1532b3f9c5bcf4a272d9f8edb9570df85b67467078f210e7b0b4e37cf6b447d1e07a11bf51a1018076856ac2eaf11961d1f56a3dbc10acd8c79733297e16b984ce41ac274066964e2cdd43680aca1d6804dfe6cf68ec746445c74190fb1cb1c03763a62c51fb422d29b139d4ec4577b7241fd6eac5a62e2f77a414b8006e6931db51088b62c25856210b677484f88c5668326df01df2c82ed39a9158203c4461be7d9427b9ddca1a577b105e926bb7d252be7d408f716f8c6a6c642e902b3c9a59f70dd523a5025d3b89c4fa66e2edea4d4215c77ec9e4ae8877b570ca39dbe46efbce8915c3e8fb48448d67dcd86e1e17c35f89f29ede148a7e0fb8a085ab58735f08ffa30b29062dc341429cad715237a86c4693e8b5268c38e1245dd99143f5fc4651ddc0366616309a3d99fb81e2e740f9c67ef6cfee417a696bd8d04c2cedd8b8a3a05cbcd314d81fc773004d6da8bc33bbfb04ddb17a0968c7ee9933332e28aff249c7bb98a05fd7d28a7c607d5ba9b3f87b3ebeaaab66f6c430c872c9298b1cd20c1ef0cdd2f2a415517be79973e0fc07a19f30bf23422e6c0065776f216fd3364e18798f05ce4df6c02f13e4d56d2e2b658ab3515c650970c626bfe7e91224cfc7943a4fcfb2b492ee693dd249e9619aeb6fce9c2043740097b3fe2f90a2b89b3aad05687d742d8c1818921e23754b769be2f5b33be8c8e779667d1e491fb462ef24c8a285b17d99c68b6f3d106ad976bfaad0ad74aacda01216cb07edc91db3e5a0536a8c83c4c10fc324e2b4ac7626d029b9f0002051d9907c5bed60d5993c5dcd04349d087d2f7ced9598f3a7e134f5
+B = 0x895fee1b0a1f9c0cd4d2edf05146157f4253e32b02bfbb9c7e38cfe7c4e535beeabc8d682048a7b0ff7758b964fd6bc06ee0bb3023850936034849a7c61a6b9cbae6085f9ee6b8d671398cdac35cf03d9d31b429c1052dfff474e56cc43ea1747a94899a74eb336e6707623fa3a59c843ae6d0cc1823c70812969eb2284690fc6eb42a61f8d43da4aba6e0ae4c540675bfe52f69e898f69641b027006b808a4fbc87731cef39e6c36f898bed5c8d6128be0e6e177a63f63e425740fda9af989fb2c23c2b118dac0322a6a458b087acd92a1297d7501c629312382cb975fe2fa1541f815dfda85bc7f5284012fbd622f556b49d6316bafbbf184286565244d6667f054514fad50fc081662e02d9b44291b9d8ea1c0191a5acff578668880186095aeb5a5baec4597e194bc6340fe1ca88c107a43e445543465f48e319a1024a10f57a6b9eebfcf2364fdfaa9288e498ef4685cf1706480066e4da6732655f15519eb36bf0c2813140bf56fd8de78d18561217a3a3e1509edf690ec786288b9a3876d26a177c2fba4e727bd2705f5a0656869a1f90941a983f7d8631a6b69fb96fe95fdd03641647c2e07081695b2d83c29fc17f468678468508df39cb932c8c7f0146707638e0f38f309975196e9f4c88ab215cdd4b962525c8e3a7c13526f82e88795c7691ab6921564f9a2053b751ac24a7665f92c926fa737aef0dbd5025fd6730d9b3b28ca5d3c7226492406e10475c647c58528dbb88815ebe3a36b4481f1a331b00d542653f78be501256a6050484cb26fd57db873cc6a545944a867fe653d1a6502aef6c0454247c90c534f9645bb01de99455a76419bc581f477784ba3155461b783f457c214dc4b76584ee9bdbd96462897f7aee2a8867b58cec9e003e2ecbd6e89c7c05d79089efc26fb230a71d8e8f465986ceb0f105372119168ccf41ebf38d3f22e9ec8818d97c07c6a5816006619ab515626c00e3efdf8d4bc66a72c6739968a99dec3e63c263b543213f54224d3db8be4ab07f4b0c4a742f5deb6a0af850724d4e73b7d2cdbdad5fcdafba73b1c2dd885896bbc0a282379ccf
+S = c24dd3b3660430ee0a9c47ce679c6926b8e9bd20913dfd6338077b007a0be1339c69f6c2a295c0c19a1d95d735badcc603e0c61a0ee552e405d3973a1f3f61cd109fde686359b87a2812eb1442805c148ddff5a4f1062ab1e7d427174d454bf4c20f458435e6054177a5a282cf8fa93a43ccb44e72e8c1b204dda60defa49200f106da7836feba2cfc1214c3f3b78ec3ee156beb8fef2ed68710c6d378a2a04d50faec54aa627527e52b6a960dd29ccf749f5823d23cb3c690b4f08be33a553d4b7c1ca916329caf91f221ab92ae2e4fb4a350b55ba06bc8838f0b190725c9586f85feddda4e304a8e522902a05ba23854183d46e52ef904f6ff70d9e2862acb8a13da89ccff0951e714c81ef3126f2fbe21ed6bb032208e2dd915f602a3d3f7283d1f4b06334a37ddf07d3f72424faaf4cba11a71633adeb45c98afe39b794d74d39f00fb7b1fa95c4a285306335698eba84fbb4489808ab3b788a7abd2c26d500a1bf2373e176fe4f525aa2f47b75ab64c834bab7bbc14d1a2d8f33e3bbb7d29c584b531b00745818f41749141524e2d1b9df145d697eee688c2abbd22f7ad99a4940f200996ebe12f2ddbe153c8e54902e3bf12a49b6abaab60e2377dabae326bfcefd8a4bce58d256cb6e935250e8339abc52bb949896bf7c29898c7cb583e1ed92d5d3eb021b088406365aa1041422d2e9309a24b9dcf12d3bf9f6ad2048f60c0b9b1106452b045537490735211d429ce36b8f9e6d88421fcf7f2a99b5cf989e5d22a27241048a8af5675426dfaae45de33b77a7b4a72fd631a3a77e81c56521c5290f0ca44a4bde903ac1c672d34300e593e654acc380bc64eaa7d1a55fcca43eac9d011812defa8e581b0e50545e41f571b895d80437461cc0c5c7db97221a636f3a9125f8536ee5f45e53dcd2f387d0da836ed8c31d66861bb171a7c8f6f48a46a8a4100705e6bbf07141255df714f782df7a762e04d59dced3395dfec548329fc1d6d7e659ee024b5ad224ca8cd04782393e80a45b1ccf7e7b72c405ebf9061bf7727622fa9005099465c83eee50c56604f165a7c387acf48d10a30
+
diff --git a/src/tests/test_srp6.cpp b/src/tests/test_srp6.cpp
index 831df1b82..a25d857a2 100644
--- a/src/tests/test_srp6.cpp
+++ b/src/tests/test_srp6.cpp
@@ -1,5 +1,5 @@
/*
-* (C) 2015 Jack Lloyd
+* (C) 2015,2019 Jack Lloyd
*
* Botan is released under the Simplified BSD License (see license.txt)
*/
@@ -8,15 +8,89 @@
#if defined(BOTAN_HAS_SRP6)
#include <botan/srp6.h>
+ #include <botan/hash.h>
+ #include <botan/dl_group.h>
+ #include "test_rng.h"
#endif
namespace Botan_Tests {
namespace {
-#if defined(BOTAN_HAS_SRP6) && defined(BOTAN_HAS_SHA2_32)
+#if defined(BOTAN_HAS_SRP6)
+
+class SRP6_KAT_Tests final : public Text_Based_Test
+ {
+ public:
+ SRP6_KAT_Tests() : Text_Based_Test("srp6a.vec", "Hash,N,g,I,P,s,v,a,b,A,B,S") {}
+
+ bool clear_between_callbacks() const override { return false; }
+
+ Test::Result run_one_test(const std::string&, const VarMap& vars) override
+ {
+ Test::Result result("SRP6a");
+
+ const std::string hash = vars.get_req_str("Hash");
+ const std::string username = vars.get_req_str("I");
+ const std::string password = vars.get_req_str("P");
+ const std::vector<uint8_t> salt = vars.get_req_bin("s");
+ const BigInt N = vars.get_req_bn("N");
+ const BigInt g = vars.get_req_bn("g");
+ const BigInt exp_v = vars.get_req_bn("v");
+ const std::vector<uint8_t> a = vars.get_req_bin("a");
+ const std::vector<uint8_t> b = vars.get_req_bin("b");
+ const BigInt exp_A = vars.get_req_bn("A");
+ const BigInt exp_B = vars.get_req_bn("B");
+ const std::vector<uint8_t> exp_S = vars.get_req_bin("S");
+
+ if(Botan::HashFunction::create(hash) == nullptr)
+ {
+ result.test_note("Skipping test as hash function not available");
+ return result;
+ }
+
+ if(Test::run_long_tests() == false && N.bits() >= 4096)
+ {
+ result.test_note("Skipping test with long SRP modulus");
+ return result;
+ }
+
+ const std::string group_id = Botan::srp6_group_identifier(N, g);
+
+ result.test_ne("Known SRP group", group_id, "");
+
+ Botan::DL_Group group(group_id);
+
+ const Botan::BigInt v = Botan::generate_srp6_verifier(username, password, salt, group_id, hash);
+ result.test_eq("SRP verifier", v, exp_v);
+
+ Botan::SRP6_Server_Session server;
+
+ const size_t b_bits = Botan::BigInt(b).bits();
+ Fixed_Output_RNG b_rng(b);
+ const Botan::BigInt B = server.step1(v, group, hash, b_bits, b_rng);
+ result.test_eq("SRP B", B, exp_B);
+
+ const size_t a_bits = Botan::BigInt(a).bits();
+ Fixed_Output_RNG a_rng(a);
+ const auto srp_resp = Botan::srp6_client_agree(username, password, group, hash, salt, B, a_bits, a_rng);
+ result.test_eq("SRP A", srp_resp.first, exp_A);
-class SRP6_Unit_Tests final : public Test
+ const auto S = server.step2(srp_resp.first);
+
+ result.test_eq("SRP client and server agree", srp_resp.second, S);
+
+ result.test_eq("SRP S", srp_resp.second.bits_of(), exp_S);
+
+ return result;
+ }
+ };
+
+BOTAN_REGISTER_TEST("srp6_kat", SRP6_KAT_Tests);
+
+#if defined(BOTAN_HAS_SHA2_32)
+
+class SRP6_RT_Tests final : public Test
{
public:
std::vector<Test::Result> run() override
@@ -48,7 +122,10 @@ class SRP6_Unit_Tests final : public Test
}
};
-BOTAN_REGISTER_TEST("srp6", SRP6_Unit_Tests);
+BOTAN_REGISTER_TEST("srp6", SRP6_RT_Tests);
+
+#endif
+
#endif
}
diff --git a/src/tests/tests.h b/src/tests/tests.h
index f496c3cfb..17a3f8610 100644
--- a/src/tests/tests.h
+++ b/src/tests/tests.h
@@ -253,7 +253,7 @@ class Test
if(produced == expected)
{
- out << " produced expected result " << produced;
+ out << " produced expected result";
return test_success(out.str());
}
else