From d9879f9072ecbcbe1e37e14eb088047a895c2644 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Sat, 23 Apr 2016 00:59:46 +0200 Subject: [PATCH] SHA3 and SHAKE support for Python --- Doc/library/hashlib.rst | 28 + Lib/hashlib.py | 24 +- Lib/test/test_hashlib.py | 179 +- Lib/test/vectors/sha3_224.txt | 258 +++ Lib/test/vectors/sha3_256.txt | 258 +++ Lib/test/vectors/sha3_384.txt | 258 +++ Lib/test/vectors/sha3_512.txt | 258 +++ Lib/test/vectors/shake_128.txt | 258 +++ Lib/test/vectors/shake_256.txt | 258 +++ Modules/_sha3/cleanup.py | 50 + Modules/_sha3/clinic/sha3module.c.h | 148 ++ Modules/_sha3/kcp/KeccakHash.c | 82 + Modules/_sha3/kcp/KeccakHash.h | 114 ++ Modules/_sha3/kcp/KeccakP-1600-64.macros | 2208 +++++++++++++++++++++++ Modules/_sha3/kcp/KeccakP-1600-SnP-opt32.h | 37 + Modules/_sha3/kcp/KeccakP-1600-SnP-opt64.h | 49 + Modules/_sha3/kcp/KeccakP-1600-SnP.h | 7 + Modules/_sha3/kcp/KeccakP-1600-inplace32BI.c | 1160 ++++++++++++ Modules/_sha3/kcp/KeccakP-1600-opt64-config.h | 3 + Modules/_sha3/kcp/KeccakP-1600-opt64.c | 474 +++++ Modules/_sha3/kcp/KeccakP-1600-unrolling.macros | 185 ++ Modules/_sha3/kcp/KeccakSponge.c | 92 + Modules/_sha3/kcp/KeccakSponge.h | 172 ++ Modules/_sha3/kcp/KeccakSponge.inc | 332 ++++ Modules/_sha3/kcp/PlSnP-Fallback.inc | 257 +++ Modules/_sha3/kcp/SnP-Relaned.h | 134 ++ Modules/_sha3/kcp/align.h | 35 + Modules/_sha3/sha3module.c | 749 ++++++++ Modules/hashlib.h | 15 +- setup.py | 6 + 30 files changed, 8063 insertions(+), 25 deletions(-) create mode 100644 Lib/test/vectors/sha3_224.txt create mode 100644 Lib/test/vectors/sha3_256.txt create mode 100644 Lib/test/vectors/sha3_384.txt create mode 100644 Lib/test/vectors/sha3_512.txt create mode 100644 Lib/test/vectors/shake_128.txt create mode 100644 Lib/test/vectors/shake_256.txt create mode 100755 Modules/_sha3/cleanup.py create mode 100644 Modules/_sha3/clinic/sha3module.c.h create mode 100644 Modules/_sha3/kcp/KeccakHash.c create mode 100644 Modules/_sha3/kcp/KeccakHash.h create mode 100644 Modules/_sha3/kcp/KeccakP-1600-64.macros create mode 100644 Modules/_sha3/kcp/KeccakP-1600-SnP-opt32.h create mode 100644 Modules/_sha3/kcp/KeccakP-1600-SnP-opt64.h create mode 100644 Modules/_sha3/kcp/KeccakP-1600-SnP.h create mode 100644 Modules/_sha3/kcp/KeccakP-1600-inplace32BI.c create mode 100644 Modules/_sha3/kcp/KeccakP-1600-opt64-config.h create mode 100644 Modules/_sha3/kcp/KeccakP-1600-opt64.c create mode 100644 Modules/_sha3/kcp/KeccakP-1600-unrolling.macros create mode 100644 Modules/_sha3/kcp/KeccakSponge.c create mode 100644 Modules/_sha3/kcp/KeccakSponge.h create mode 100644 Modules/_sha3/kcp/KeccakSponge.inc create mode 100644 Modules/_sha3/kcp/PlSnP-Fallback.inc create mode 100644 Modules/_sha3/kcp/SnP-Relaned.h create mode 100644 Modules/_sha3/kcp/align.h create mode 100644 Modules/_sha3/sha3module.c diff --git a/Doc/library/hashlib.rst b/Doc/library/hashlib.rst index 73a7555e457332fb270090a58372eac2e5ffcdb4..07de77ae28950d4fc5665d2fcc3de4fac5b622e9 100644 --- a/Doc/library/hashlib.rst +++ b/Doc/library/hashlib.rst @@ -63,6 +63,15 @@ Constructors for hash algorithms that are always present in this module are and :func:`sha512`. Additional algorithms may also be available depending upon the OpenSSL library that Python uses on your platform. +Python provides additional hash algorithms on all common and modern platforms. +Some historic platforms or compilers don't have the necessary features to +compile the implementations. The algorithms are available on all recent Unix +and Windows systems with X86, X86_64 and ARMv6+ CPUs. + +.. versionadded:: 3.6 + SHA3 (Keccak) and SHAKE constructors :func:`sha3_224`, :func:`sha3_256`, + :func:`sha3_384`, :func:`sha3_512`, :func:`shake_128`, :func:`shake_256`. + For example, to obtain the digest of the byte string ``b'Nobody inspects the spammish repetition'``:: @@ -176,6 +185,25 @@ A hash object has the following methods: compute the digests of data sharing a common initial substring. +SHAKE variable length digest +---------------------------- + +SHA3's SHAKE algorithm provides variable length digest. + +.. method:: shake.digest(length) + + Return the digest of the data passed to the :meth:`update` method so far. + This is a bytes object of size ``length`` which may contain bytes in + the whole range from 0 to 255. + + +.. method:: skahe.hexdigest(length) + + Like :meth:`digest` except the digest is returned as a string object of + double length, containing only hexadecimal digits. This may be used to + exchange the value safely in email or other non-binary environments. + + Key derivation -------------- diff --git a/Lib/hashlib.py b/Lib/hashlib.py index 316cecedc209d861db8a46768594b08804348cf7..758d9db8176e684ccf2824d5dc6fb613594258e4 100644 --- a/Lib/hashlib.py +++ b/Lib/hashlib.py @@ -56,6 +56,10 @@ More condensed: # always available algorithm is added. __always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512') +# Supported on most platforms +__often_supported = ('sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', + 'shake_128', 'shake_256') + algorithms_guaranteed = set(__always_supported) algorithms_available = set(__always_supported) @@ -85,6 +89,15 @@ def __get_builtin_constructor(name): import _sha512 cache['SHA384'] = cache['sha384'] = _sha512.sha384 cache['SHA512'] = cache['sha512'] = _sha512.sha512 + elif name in {'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', + 'shake_128', 'shake_256'}: + import _sha3 + cache['sha3_224'] = _sha3.sha3_224 + cache['sha3_256'] = _sha3.sha3_256 + cache['sha3_384'] = _sha3.sha3_384 + cache['sha3_512'] = _sha3.sha3_512 + cache['shake_128'] = _sha3.shake_128 + cache['shake_256'] = _sha3.shake_256 except ImportError: pass # no extension module, this hash is unsupported. @@ -212,6 +225,15 @@ for __func_name in __always_supported: import logging logging.exception('code for hash %s was not found.', __func_name) +for __func_name in __often_supported: + try: + globals()[__func_name] = __get_hash(__func_name) + except ValueError: + pass + else: + algorithms_available.add(__func_name) + + # Cleanup locals() -del __always_supported, __func_name, __get_hash +del __always_supported, __often_supported, __func_name, __get_hash del __py_new, __hash_new, __get_openssl_constructor diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py index 8a297dd45eaee2f1f7cfc1f492d5055c9aeb0553..e4d64382dadd6c87994d0280f4f6ab31a04e89f4 100644 --- a/Lib/test/test_hashlib.py +++ b/Lib/test/test_hashlib.py @@ -26,6 +26,14 @@ COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount') c_hashlib = import_fresh_module('hashlib', fresh=['_hashlib']) py_hashlib = import_fresh_module('hashlib', blocked=['_hashlib']) +try: + import _sha3 +except ImportError: + _sha3 = None + +requires_sha3 = unittest.skipUnless(_sha3, 'requires _sha3') + + def hexstr(s): assert isinstance(s, bytes), repr(s) h = "0123456789abcdef" @@ -35,10 +43,27 @@ def hexstr(s): return r +def read_vectors(hash_name): + vector = os.path.join(support.TEST_HOME_DIR, 'vectors', + hash_name + '.txt') + with open(vector) as f: + for line in f: + line = line.strip() + if line.startswith('#') or not line: + continue + msg, md = line.split(',') + yield bytes.fromhex(msg), md + + class HashLibTestCase(unittest.TestCase): - supported_hash_names = ( 'md5', 'MD5', 'sha1', 'SHA1', - 'sha224', 'SHA224', 'sha256', 'SHA256', - 'sha384', 'SHA384', 'sha512', 'SHA512') + supported_hash_names = {'md5', 'MD5', 'sha1', 'SHA1', + 'sha224', 'SHA224', 'sha256', 'SHA256', + 'sha384', 'SHA384', 'sha512', 'SHA512'} + + sha3_hash_names = {'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', + 'shake_128', 'shake_256'} + + shakes = {'shake_128', 'shake_256'} # Issue #14693: fallback modules are always compiled under POSIX _warn_on_extension_import = os.name == 'posix' or COMPILED_WITH_PYDEBUG @@ -56,6 +81,12 @@ class HashLibTestCase(unittest.TestCase): algorithms = set() for algorithm in self.supported_hash_names: algorithms.add(algorithm.lower()) + + _sha3 = self._conditional_import_module('_sha3') + if _sha3: + for algorithm in self.sha3_hash_names: + algorithms.add(algorithm.lower()) + self.constructors_to_test = {} for algorithm in algorithms: self.constructors_to_test[algorithm] = set() @@ -100,6 +131,15 @@ class HashLibTestCase(unittest.TestCase): add_builtin_constructor('sha384') add_builtin_constructor('sha512') + _sha3 = self._conditional_import_module('_sha3') + if _sha3: + add_builtin_constructor('sha3_224') + add_builtin_constructor('sha3_256') + add_builtin_constructor('sha3_384') + add_builtin_constructor('sha3_512') + add_builtin_constructor('shake_128') + add_builtin_constructor('shake_256') + super(HashLibTestCase, self).__init__(*args, **kwargs) @property @@ -111,7 +151,10 @@ class HashLibTestCase(unittest.TestCase): a = array.array("b", range(10)) for cons in self.hash_constructors: c = cons(a) - c.hexdigest() + if c.name in self.shakes: + c.hexdigest(16) + else: + c.hexdigest() def test_algorithms_guaranteed(self): self.assertEqual(hashlib.algorithms_guaranteed, @@ -155,14 +198,21 @@ class HashLibTestCase(unittest.TestCase): def test_hexdigest(self): for cons in self.hash_constructors: h = cons() - self.assertIsInstance(h.digest(), bytes) - self.assertEqual(hexstr(h.digest()), h.hexdigest()) + if h.name in self.shakes: + self.assertIsInstance(h.digest(16), bytes) + self.assertEqual(hexstr(h.digest(16)), h.hexdigest(16)) + else: + self.assertIsInstance(h.digest(), bytes) + self.assertEqual(hexstr(h.digest()), h.hexdigest()) def test_name_attribute(self): for cons in self.hash_constructors: h = cons() self.assertIsInstance(h.name, str) - self.assertIn(h.name, self.supported_hash_names) + if h.name in self.supported_hash_names: + self.assertIn(h.name, self.supported_hash_names) + else: + self.assertNotIn(h.name, self.supported_hash_names) self.assertEqual(h.name, hashlib.new(h.name).name) def test_large_update(self): @@ -177,40 +227,46 @@ class HashLibTestCase(unittest.TestCase): m1.update(bees) m1.update(cees) m1.update(dees) + if m1.name in self.shakes: + args = (16,) + else: + args = () m2 = cons() m2.update(aas + bees + cees + dees) - self.assertEqual(m1.digest(), m2.digest()) + self.assertEqual(m1.digest(*args), m2.digest(*args)) m3 = cons(aas + bees + cees + dees) - self.assertEqual(m1.digest(), m3.digest()) + self.assertEqual(m1.digest(*args), m3.digest(*args)) # verify copy() doesn't touch original m4 = cons(aas + bees + cees) - m4_digest = m4.digest() + m4_digest = m4.digest(*args) m4_copy = m4.copy() m4_copy.update(dees) - self.assertEqual(m1.digest(), m4_copy.digest()) - self.assertEqual(m4.digest(), m4_digest) + self.assertEqual(m1.digest(*args), m4_copy.digest(*args)) + self.assertEqual(m4.digest(*args), m4_digest) - def check(self, name, data, hexdigest): + def check(self, name, data, hexdigest, shake=False): + length = len(hexdigest)//2 hexdigest = hexdigest.lower() constructors = self.constructors_to_test[name] # 2 is for hashlib.name(...) and hashlib.new(name, ...) self.assertGreaterEqual(len(constructors), 2) for hash_object_constructor in constructors: m = hash_object_constructor(data) - computed = m.hexdigest() + computed = m.hexdigest() if not shake else m.hexdigest(length) self.assertEqual( computed, hexdigest, "Hash algorithm %s constructed using %s returned hexdigest" " %r for %d byte input data that should have hashed to %r." % (name, hash_object_constructor, computed, len(data), hexdigest)) - computed = m.digest() + computed = m.digest() if not shake else m.digest(length) digest = bytes.fromhex(hexdigest) self.assertEqual(computed, digest) - self.assertEqual(len(digest), m.digest_size) + if not shake: + self.assertEqual(len(digest), m.digest_size) def check_no_unicode(self, algorithm_name): # Unicode objects are not allowed as input. @@ -226,13 +282,30 @@ class HashLibTestCase(unittest.TestCase): self.check_no_unicode('sha384') self.check_no_unicode('sha512') - def check_blocksize_name(self, name, block_size=0, digest_size=0): + @requires_sha3 + def test_no_unicode_sha3(self): + self.check_no_unicode('sha3_224') + self.check_no_unicode('sha3_256') + self.check_no_unicode('sha3_384') + self.check_no_unicode('sha3_512') + self.check_no_unicode('shake_128') + self.check_no_unicode('shake_256') + + def check_blocksize_name(self, name, block_size=0, digest_size=0, + digest_length=None): constructors = self.constructors_to_test[name] for hash_object_constructor in constructors: m = hash_object_constructor() self.assertEqual(m.block_size, block_size) self.assertEqual(m.digest_size, digest_size) - self.assertEqual(len(m.digest()), digest_size) + if digest_length: + self.assertEqual(len(m.digest(digest_length)), + digest_size) + self.assertEqual(len(m.hexdigest(digest_length)), + 2*digest_size) + else: + self.assertEqual(len(m.digest()), digest_size) + self.assertEqual(len(m.hexdigest()), 2*digest_size) self.assertEqual(m.name, name) # split for sha3_512 / _sha3.sha3 object self.assertIn(name.split("_")[0], repr(m)) @@ -244,6 +317,10 @@ class HashLibTestCase(unittest.TestCase): self.check_blocksize_name('sha256', 64, 32) self.check_blocksize_name('sha384', 128, 48) self.check_blocksize_name('sha512', 128, 64) + #self.check_blocksize_name('sha3_224', 128, 64) + #self.check_blocksize_name('sha3_256', 128, 64) + #self.check_blocksize_name('sha3_384', 128, 64) + #self.check_blocksize_name('sha3_512', 128, 64) def test_case_md5_0(self): self.check('md5', b'', 'd41d8cd98f00b204e9800998ecf8427e') @@ -373,6 +450,72 @@ class HashLibTestCase(unittest.TestCase): "e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973eb"+ "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b") + @requires_sha3 + def test_case_sha3_224_0(self): + self.check('sha3_224', b"", + "6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7") + + @requires_sha3 + def test_case_sha3_224_vector(self): + for msg, md in read_vectors('sha3_224'): + self.check('sha3_224', msg, md) + + @requires_sha3 + def test_case_sha3_256_0(self): + self.check('sha3_256', b"", + "a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a") + + @requires_sha3 + def test_case_sha3_256_vector(self): + for msg, md in read_vectors('sha3_256'): + self.check('sha3_256', msg, md) + + @requires_sha3 + def test_case_sha3_384_0(self): + self.check('sha3_384', b"", + "0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2a"+ + "c3713831264adb47fb6bd1e058d5f004") + + @requires_sha3 + def test_case_sha3_384_vector(self): + for msg, md in read_vectors('sha3_384'): + self.check('sha3_384', msg, md) + + @requires_sha3 + def test_case_sha3_512_0(self): + self.check('sha3_512', b"", + "a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a6"+ + "15b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26") + + @requires_sha3 + def test_case_sha3_512_vector(self): + for msg, md in read_vectors('sha3_512'): + self.check('sha3_512', msg, md) + + @requires_sha3 + def test_case_shake_128_0(self): + self.check('shake_128', b"", + "7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef26", + True) + self.check('shake_128', b"", "7f9c", True) + + @requires_sha3 + def test_case_shake128_vector(self): + for msg, md in read_vectors('shake_128'): + self.check('shake_128', msg, md, True) + + @requires_sha3 + def test_case_shake_256_0(self): + self.check('shake_256', b"", + "46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762f", + True) + self.check('shake_256', b"", "46b9", True) + + @requires_sha3 + def test_case_shake128_vector(self): + for msg, md in read_vectors('shake_256'): + self.check('shake_256', msg, md, True) + def test_gil(self): # Check things work fine with an input larger than the size required # for multithreaded operation (which is hardwired to 2048). diff --git a/Lib/test/vectors/sha3_224.txt b/Lib/test/vectors/sha3_224.txt new file mode 100644 index 0000000000000000000000000000000000000000..de3c0c4a10656e833c2c56b4b103614cea9150fe --- /dev/null +++ b/Lib/test/vectors/sha3_224.txt @@ -0,0 +1,258 @@ +# ShortMsgKAT_SHA3-224.txt +,6b4e03423667dbb73b6e15454f0eb1abd4597f9a1b078e3f5b5a6bc7 +cc,df70adc49b2e76eee3a6931b93fa41841c3af2cdf5b32a18b5478c39 +41fb,bff295861daedf33e70519b1e2bcb4c2e9fe3364d789bc3b17301c15 +1f877c,14889df49c076a9af2f4bcb16339bcc45a24ebf9ce4dcdce7ec17217 +c1ecfdfc,a33c58df8a8026f0f9591966bd6d00eed3b1e829580ab9be268caf39 +21f134ac57,10e580a32199596169331ad43cfcf10264f81565037040028a06b458 +c6f50bb74e29,fe52c30c95c1e5193207e97d355fde09453482708c0876aa961508f0 +119713cc83eeef,8b449849cb7c4776c593de58fd5c2e322cb5316be08a75057a01ed6a +4a4f202484512526,01386cdd70589b3b34941efe16b85071e9ba948179922044f640868e +1f66ab4185ed9b6375,86953d0864019c81fd3a805357a162fd76a13a7cbf6ff0d635015d0e +eed7422227613b6f53c9,e56fc2a5a58709031df02a2e46ad95f93583e2745630540d8d97f703 +eaeed5cdffd89dece455f1,1d783c37c32a2b71b504bcaa05fc00b639f1fae7e8d8e3f3bc49f041 +5be43c90f22902e4fe8ed2d3,54c7e4bf3c73e192ade223dfea86f2d04acf953612731958f854c7bd +a746273228122f381c3b46e4f1,77e51ceada2aa1cbbf95acd821008b57e946f7940223b19f0c53e62e +3c5871cd619c69a63b540eb5a625,9ed59ed155e97154e067fa0f5a130839b57bdbda6feb82dabe006f00 +fa22874bcc068879e8ef11a69f0722,81b3e56cfeee8e9138d3bfe24bb7ccdfd4b50d0b8ca11ae7d4b0c960 +52a608ab21ccdd8a4457a57ede782176,b1571bed52e54eef377d99df7be4bc6682c43387f2bf9acc92df608f +82e192e4043ddcd12ecf52969d0f807eed,08045cf78d238d56972f1c850414bc404fc6dcb11f8d8210d034c610 +75683dcb556140c522543bb6e9098b21a21e,9ffd840c550ad23971eb5ce89ae2fd6222abfb7f0aafd7eb0005716b +06e4efe45035e61faaf4287b4d8d1f12ca97e5,72decb5ea1b25a2daaeb234a8d96e0f57211426666a2ee76b2385c62 +e26193989d06568fe688e75540aea06747d9f851,a589936370a3d20039c469d44a1c26e62823ab28cc50175a9897f98e +d8dc8fdefbdce9d44e4cbafe78447bae3b5436102a,96f43401ad49c58d887020f395bdd01f6dad04128a85b17780408c37 +57085fd7e14216ab102d8317b0cb338a786d5fc32d8f,a3a0f0c552e7cd2723fe22e1d5719e213d9a3da1db99e32efffd0f46 +a05404df5dbb57697e2c16fa29defac8ab3560d6126fa0,e991f4a14b56dc6b224ef352ae8bc8cae8b1af1c25c6733dfb7ffe1f +aecbb02759f7433d6fcb06963c74061cd83b5b3ffa6f13c6,718866c21cbe3f291364c07b36078a6bf0b8258b0ec155e2e2b1af23 +aafdc9243d3d4a096558a360cc27c8d862f0be73db5e88aa55,23606d06fd8f87c2205abb5fd04c33eba30509955200566a0f772b49 +7bc84867f6f9e9fdc3e1046cae3a52c77ed485860ee260e30b15,05935f0ad2264475df34fa96f6a9118c32b217e86169eb7ade4e2fdb +fac523575a99ec48279a7a459e98ff901918a475034327efb55843,fbec83cbdb6d08c7bfddc2e37f73b16dc92926a5c23dab41deebfb1b +0f8b2d8fcfd9d68cffc17ccfb117709b53d26462a3f346fb7c79b85e,1e693b0bce2372550daef35b14f13ab43441ed6742dee3e86fd1d8ef +a963c3e895ff5a0be4824400518d81412f875fa50521e26e85eac90c04,1781f1344dc17f678571f4e5df3998b1d38b1d83602b53b9b6f283d6 +03a18688b10cc0edf83adf0a84808a9718383c4070c6c4f295098699ac2c,03b74b7d8fc1f23f76bab2b6c35f292c15506de64978fcf6d9973fce +84fb51b517df6c5accb5d022f8f28da09b10232d42320ffc32dbecc3835b29,6a6857fba903b9da2753690c39c548be008e22ebb372eeaa16c85918 +9f2fcc7c90de090d6b87cd7e9718c1ea6cb21118fc2d5de9f97e5db6ac1e9c10,887921848ad98458f3db3e0ecd5ad5db1f0bf9f2d0ca08601074d597 +de8f1b3faa4b7040ed4563c3b8e598253178e87e4d0df75e4ff2f2dedd5a0be046,e0573ad706b44d8c4d204f884b95ab18913e76f41cf29a16dbe34794 +62f154ec394d0bc757d045c798c8b87a00e0655d0481a7d2d9fb58d93aedc676b5a0,ba31233099055483c99f7ad82d0d24af487ed4b53fff1a892a55ddb3 +b2dcfe9ff19e2b23ce7da2a4207d3e5ec7c6112a8a22aec9675a886378e14e5bfbad4e,befaa1cb47cf78ddd4e096b861bc340b776f52e351ebe378ade305ba +47f5697ac8c31409c0868827347a613a3562041c633cf1f1f86865a576e02835ed2c2492,f1e7a1b28ea4d6fb86570f66911e3258c3f49f891654fbce9bc79b8b +512a6d292e67ecb2fe486bfe92660953a75484ff4c4f2eca2b0af0edcdd4339c6b2ee4e542,c2b31746446934fe29e84cfb5c25b03be33e9004f74e91c1af0db789 +973cf2b4dcf0bfa872b41194cb05bb4e16760a1840d8343301802576197ec19e2a1493d8f4fb,3a80645fe4271346aaedc3ae5011b75df163fad3ee6128d87f3d9da3 +80beebcd2e3f8a9451d4499961c9731ae667cdc24ea020ce3b9aa4bbc0a7f79e30a934467da4b0,3c5ebe43a2571bcef25e4ea67a4ca9838770d23599059955af93ff83 +7abaa12ec2a7347674e444140ae0fb659d08e1c66decd8d6eae925fa451d65f3c0308e29446b8ed3,af71dab0f33d3b48733ad6335ca609398d894e6fa96f5510ae73e5d2 +c88dee9927679b8af422abcbacf283b904ff31e1cac58c7819809f65d5807d46723b20f67ba610c2b7,dd7512daa0c634cc1588870b84691d7de2c182e5570d57868e7dda5d +01e43fe350fcec450ec9b102053e6b5d56e09896e0ddd9074fe138e6038210270c834ce6eadc2bb86bf6,6cb4f9292ba33ca8d293b7a7ef76619e77309ba2178cd4a130bf9218 +337023370a48b62ee43546f17c4ef2bf8d7ecd1d49f90bab604b839c2e6e5bd21540d29ba27ab8e309a4b7,a9b8435e55fc50fe935ec96798a629c13e856c3c5cfd248126976e0d +6892540f964c8c74bd2db02c0ad884510cb38afd4438af31fc912756f3efec6b32b58ebc38fc2a6b913596a8,93e79850622b91f729ab056ea402e27f01b5323158111b29362a96d5 +f5961dfd2b1ffffda4ffbf30560c165bfedab8ce0be525845deb8dc61004b7db38467205f5dcfb34a2acfe96c0,7e51d5531382490670115de13137cb3adb6e7621b7d9eca8170faa96 +ca061a2eb6ceed8881ce2057172d869d73a1951e63d57261384b80ceb5451e77b06cf0f5a0ea15ca907ee1c27eba,95c35037a8076926fc5c421c35160ac5fe533a2782f20f2d3f4b1b7d +1743a77251d69242750c4f1140532cd3c33f9b5ccdf7514e8584d4a5f9fbd730bcf84d0d4726364b9bf95ab251d9bb,bf024a4fe480636118fcc85b807704d59b64d16a150aa53cde41f030 +d8faba1f5194c4db5f176fabfff856924ef627a37cd08cf55608bba8f1e324d7c7f157298eabc4dce7d89ce5162499f9,b7a51fbb084deeb55136efd7260e5b112e3c40d1a2d14b142df930df +be9684be70340860373c9c482ba517e899fc81baaa12e5c6d7727975d1d41ba8bef788cdb5cf4606c9c1c7f61aed59f97d,61cf830a2c4f8f48bc643f97a25f822c013f73bdf4cb4194bc8d55df +7e15d2b9ea74ca60f66c8dfab377d9198b7b16deb6a1ba0ea3c7ee2042f89d3786e779cf053c77785aa9e692f821f14a7f51,d87f62ea811a2f6bf3c5fde13475b9c676620c0184f87149dc8686c8 +9a219be43713bd578015e9fda66c0f2d83cac563b776ab9f38f3e4f7ef229cb443304fba401efb2bdbd7ece939102298651c86,028a639c7ec0ba1dcec0b689aa26e2c0167622462669a5c52031602b +c8f2b693bd0d75ef99caebdc22adf4088a95a3542f637203e283bbc3268780e787d68d28cc3897452f6a22aa8573ccebf245972a,908ef28ab2b6cbb449b9af7fa78b3d90e019c3916562eb4819a0c87f +ec0f99711016c6a2a07ad80d16427506ce6f441059fd269442baaa28c6ca037b22eeac49d5d894c0bf66219f2c08e9d0e8ab21de52,6ac84149f890e1352c6d7397dac3b3773947b3757e8ed4ec059ef899 +0dc45181337ca32a8222fe7a3bf42fc9f89744259cff653504d6051fe84b1a7ffd20cb47d4696ce212a686bb9be9a8ab1c697b6d6a33,45da27715cd75f5875beb7d914cf7488240d1b1f975d430d2f49e9bf +de286ba4206e8b005714f80fb1cdfaebde91d29f84603e4a3ebc04686f99a46c9e880b96c574825582e8812a26e5a857ffc6579f63742f,63afbabbec072140dfcefe64cf7bc9534dca10956042e31dbe58d0a5 +eebcc18057252cbf3f9c070f1a73213356d5d4bc19ac2a411ec8cdeee7a571e2e20eaf61fd0c33a0ffeb297ddb77a97f0a415347db66bcaf,6487193d9cbe593b3daa50d4dfdf7dd2612300bb93cb39e3eefa1afa +416b5cdc9fe951bd361bd7abfc120a5054758eba88fdd68fd84e39d3b09ac25497d36b43cbe7b85a6a3cebda8db4e5549c3ee51bb6fcb6ac1e,0dec25be3277e27d4f784ad5ff8f79d61d9a309bd693513acbeed12f +5c5faf66f32e0f8311c32e8da8284a4ed60891a5a7e50fb2956b3cbaa79fc66ca376460e100415401fc2b8518c64502f187ea14bfc9503759705,130b67c6d1a5616227abd73abf6feb70fce1d5a4bf3338c6dccb39d5 +7167e1e02be1a7ca69d788666f823ae4eef39271f3c26a5cf7cee05bca83161066dc2e217b330df821103799df6d74810eed363adc4ab99f36046a,3abb5acb8485e20bb620d4a030b9c25d3156a9b26893ae007c79f305 +2fda311dbba27321c5329510fae6948f03210b76d43e7448d1689a063877b6d14c4f6d0eaa96c150051371f7dd8a4119f7da5c483cc3e6723c01fb7d,922e216529a95305307e908c69367ebb9ad931eca314563ac36aab80 +95d1474a5aab5d2422aca6e481187833a6212bd2d0f91451a67dd786dfc91dfed51b35f47e1deb8a8ab4b9cb67b70179cc26f553ae7b569969ce151b8d,c72e93a2c39abcd90ab11cd3f15d59da3c23c0f17c4e26c9c5890887 +c71bd7941f41df044a2927a8ff55b4b467c33d089f0988aa253d294addbdb32530c0d4208b10d9959823f0c0f0734684006df79f7099870f6bf53211a88d,cccc3b59f28c3fc462dc0a696150f5aea62da0aba97c476bd0d866c1 +f57c64006d9ea761892e145c99df1b24640883da79d9ed5262859dcda8c3c32e05b03d984f1ab4a230242ab6b78d368dc5aaa1e6d3498d53371e84b0c1d4ba,28cfd0c6f0208d24aaa69e6c39f5257c13303e91c2d683a9af29b973 +e926ae8b0af6e53176dbffcc2a6b88c6bd765f939d3d178a9bde9ef3aa131c61e31c1e42cdfaf4b4dcde579a37e150efbef5555b4c1cb40439d835a724e2fae7,c154607f986f9bf902d831293c8386d36b201eaba6f6fb0b678b4b81 +16e8b3d8f988e9bb04de9c96f2627811c973ce4a5296b4772ca3eefeb80a652bdf21f50df79f32db23f9f73d393b2d57d9a0297f7a2f2e79cfda39fa393df1ac00,95e87ac90f541ab90cbcf7fd7e0e0c152cef78d5ee1830e9ed8a1ed7 +fc424eeb27c18a11c01f39c555d8b78a805b88dba1dc2a42ed5e2c0ec737ff68b2456d80eb85e11714fa3f8eabfb906d3c17964cb4f5e76b29c1765db03d91be37fc,35bd7d02541d6d4b10ace6029a24c07a38fd563aba227f0f776ea5e2 +abe3472b54e72734bdba7d9158736464251c4f21b33fbbc92d7fac9a35c4e3322ff01d2380cbaa4ef8fb07d21a2128b7b9f5b6d9f34e13f39c7ffc2e72e47888599ba5,99decb8cf1d474970b3cfa87fa462b75e3287b98b4be4093429e22d6 +36f9f0a65f2ca498d739b944d6eff3da5ebba57e7d9c41598a2b0e4380f3cf4b479ec2348d015ffe6256273511154afcf3b4b4bf09d6c4744fdd0f62d75079d440706b05,8c20fd3d8e08235b01727a4df44d86e71e824f14b0c2fe4e8da7f1bb +abc87763cae1ca98bd8c5b82caba54ac83286f87e9610128ae4de68ac95df5e329c360717bd349f26b872528492ca7c94c2c1e1ef56b74dbb65c2ac351981fdb31d06c77a4,e29e68439aecde56f5297fb935dc7dbe63d61ce360a19629195bd8aa +94f7ca8e1a54234c6d53cc734bb3d3150c8ba8c5f880eab8d25fed13793a9701ebe320509286fd8e422e931d99c98da4df7e70ae447bab8cffd92382d8a77760a259fc4fbd72,5d2164da84e7707cd1e789711a664ab2ebcf66eba899a909a1d0cbec +13bd2811f6ed2b6f04ff3895aceed7bef8dcd45eb121791bc194a0f806206bffc3b9281c2b308b1a729ce008119dd3066e9378acdcc50a98a82e20738800b6cddbe5fe9694ad6d,fa263b093ea3f96b52db6251ea25a5254ada5b54d476cb0794d38889 +1eed9cba179a009ec2ec5508773dd305477ca117e6d569e66b5f64c6bc64801ce25a8424ce4a26d575b8a6fb10ead3fd1992edddeec2ebe7150dc98f63adc3237ef57b91397aa8a7,d803e320a9865ebf3555e8a3e3134768a2ee1b3e59fa15f35c2ec550 +ba5b67b5ec3a3ffae2c19dd8176a2ef75c0cd903725d45c9cb7009a900c0b0ca7a2967a95ae68269a6dbf8466c7b6844a1d608ac661f7eff00538e323db5f2c644b78b2d48de1a08aa,102925b63b3e9395f88124c3bfa777f29a5b41c13b62add7c271cd6e +0efa26ac5673167dcacab860932ed612f65ff49b80fa9ae65465e5542cb62075df1c5ae54fba4db807be25b070033efa223bdd5b1d3c94c6e1909c02b620d4b1b3a6c9fed24d70749604,6c4e83cd9258205f3c2bcf64149f4acdcee7742cb2d36038537171bd +bbfd933d1fd7bf594ac7f435277dc17d8d5a5b8e4d13d96d2f64e771abbd51a5a8aea741beccbddb177bcea05243ebd003cfdeae877cca4da94605b67691919d8b033f77d384ca01593c1b,c74c9ebb2ef9a9822a6228bd1186dcc4411bc59ec938df27e54b0815 +90078999fd3c35b8afbf4066cbde335891365f0fc75c1286cdd88fa51fab94f9b8def7c9ac582a5dbcd95817afb7d1b48f63704e19c2baa4df347f48d4a6d603013c23f1e9611d595ebac37c,d23420f9985d66f097d43a0fb2434149d2b33f21b5bad6cfc250e072 +64105eca863515c20e7cfbaa0a0b8809046164f374d691cdbd6508aaabc1819f9ac84b52bafc1b0fe7cddbc554b608c01c8904c669d8db316a0953a4c68ece324ec5a49ffdb59a1bd6a292aa0e,102edd2e946f33dd7aa553ea4ce4e659c7b240e1e28bc66200845d87 +d4654be288b9f3b711c2d02015978a8cc57471d5680a092aa534f7372c71ceaab725a383c4fcf4d8deaa57fca3ce056f312961eccf9b86f14981ba5bed6ab5b4498e1f6c82c6cae6fc14845b3c8a,7c8eb98b7338403c013d65c0b5bb4b5d2cbf539cb1109cf447fa6650 +12d9394888305ac96e65f2bf0e1b18c29c90fe9d714dd59f651f52b88b3008c588435548066ea2fc4c101118c91f32556224a540de6efddbca296ef1fb00341f5b01fecfc146bdb251b3bdad556cd2,c7b07de91efce42dab78199ee2eb3014a494994236a12b3de2330c25 +871a0d7a5f36c3da1dfce57acd8ab8487c274fad336bc137ebd6ff4658b547c1dcfab65f037aa58f35ef16aff4abe77ba61f65826f7be681b5b6d5a1ea8085e2ae9cd5cf0991878a311b549a6d6af230,2fcef2594ae855de4fc66dccc517a659118b3a9f2e5fe638980adbfb +e90b4ffef4d457bc7711ff4aa72231ca25af6b2e206f8bf859d8758b89a7cd36105db2538d06da83bad5f663ba11a5f6f61f236fd5f8d53c5e89f183a3cec615b50c7c681e773d109ff7491b5cc22296c5,d45873f0453cbf38156a1384e33e5c76588b7bfb48a709b3943d9186 +e728de62d75856500c4c77a428612cd804f30c3f10d36fb219c5ca0aa30726ab190e5f3f279e0733d77e7267c17be27d21650a9a4d1e32f649627638dbada9702c7ca303269ed14014b2f3cf8b894eac8554,3543add5b7edfc83afe7c1f2d55140aedb858304628109fd077b3860 +6348f229e7b1df3b770c77544e5166e081850fa1c6c88169db74c76e42eb983facb276ad6a0d1fa7b50d3e3b6fcd799ec97470920a7abed47d288ff883e24ca21c7f8016b93bb9b9e078bdb9703d2b781b616e,36784f114958d8b5b625dd89a4e3973a113e5d1610dfa55b4fb45aec +4b127fde5de733a1680c2790363627e63ac8a3f1b4707d982caea258655d9bf18f89afe54127482ba01e08845594b671306a025c9a5c5b6f93b0a39522dc877437be5c2436cbf300ce7ab6747934fcfc30aeaaf6,4187feaed4fbd3d505a96a8d60668a88172e4f7c8451a4a6802c5747 +08461f006cff4cc64b752c957287e5a0faabc05c9bff89d23fd902d324c79903b48fcb8f8f4b01f3e4ddb483593d25f000386698f5ade7faade9615fdc50d32785ea51d49894e45baa3dc707e224688c6408b68b11,6e4766db4e9d1102cee6dfe0ae2221321b9c0fe707f0a7825d7557ec +68c8f8849b120e6e0c9969a5866af591a829b92f33cd9a4a3196957a148c49138e1e2f5c7619a6d5edebe995acd81ec8bb9c7b9cfca678d081ea9e25a75d39db04e18d475920ce828b94e72241f24db72546b352a0e4,e1fc972bfb294185f1980ca2938655fb583e812ad3d64fa5a4cf703e +b8d56472954e31fb54e28fca743f84d8dc34891cb564c64b08f7b71636debd64ca1edbdba7fc5c3e40049ce982bba8c7e0703034e331384695e9de76b5104f2fbc4535ecbeebc33bc27f29f18f6f27e8023b0fbb6f563c,f6f28e3b65b684c9d9506061980046061390ccde2458a20f9b086be5 +0d58ac665fa84342e60cefee31b1a4eacdb092f122dfc68309077aed1f3e528f578859ee9e4cefb4a728e946324927b675cd4f4ac84f64db3dacfe850c1dd18744c74ceccd9fe4dc214085108f404eab6d8f452b5442a47d,f686d2b1386b02b08f6b02bd5d50206d5e138440cb0d93ebcc3b32a7 +1755e2d2e5d1c1b0156456b539753ff416651d44698e87002dcf61dcfa2b4e72f264d9ad591df1fdee7b41b2eb00283c5aebb3411323b672eaa145c5125185104f20f335804b02325b6dea65603f349f4d5d8b782dd3469ccd,46483375d112fc2be7f611be4b98dfada38892c43cefa586726b48bb +b180de1a611111ee7584ba2c4b020598cd574ac77e404e853d15a101c6f5a2e5c801d7d85dc95286a1804c870bb9f00fd4dcb03aa8328275158819dcad7253f3e3d237aeaa7979268a5db1c6ce08a9ec7c2579783c8afc1f91a7,e1e9ad568ae5b0d9731400ba4fc7df0321a04ea41393ba6979c7179c +cf3583cbdfd4cbc17063b1e7d90b02f0e6e2ee05f99d77e24e560392535e47e05077157f96813544a17046914f9efb64762a23cf7a49fe52a0a4c01c630cfe8727b81fb99a89ff7cc11dca5173057e0417b8fe7a9efba6d95c555f,133f31d9fbc1b2a33f1c98bfe21e129e0716a69ee27408743fff17ac +072fc02340ef99115bad72f92c01e4c093b9599f6cfc45cb380ee686cb5eb019e806ab9bd55e634ab10aa62a9510cc0672cd3eddb589c7df2b67fcd3329f61b1a4441eca87a33c8f55da4fbbad5cf2b2527b8e983bb31a2fadec7523,31328f04ca64e8521a36a8943c33ceb95be1b9080f4533d6da07606d +76eecf956a52649f877528146de33df249cd800e21830f65e90f0f25ca9d6540fde40603230eca6760f1139c7f268deba2060631eea92b1fff05f93fd5572fbe29579ecd48bc3a8d6c2eb4a6b26e38d6c5fbf2c08044aeea470a8f2f26,add374b1d279469c08e7b27ae3ff1b04c3d0fb3ef6e59aa3af86660b +7adc0b6693e61c269f278e6944a5a2d8300981e40022f839ac644387bfac9086650085c2cdc585fea47b9d2e52d65a2b29a7dc370401ef5d60dd0d21f9e2b90fae919319b14b8c5565b0423cefb827d5f1203302a9d01523498a4db10374,fed7fde894d92cc3bb68fcc396b5eb00c4156f04fc9ced99d12cfa5b +e1fffa9826cce8b86bccefb8794e48c46cdf372013f782eced1e378269b7be2b7bf51374092261ae120e822be685f2e7a83664bcfbe38fe8633f24e633ffe1988e1bc5acf59a587079a57a910bda60060e85b5f5b6f776f0529639d9cce4bd,17fc0327de474c78f538b4f3981674ff470aa42ef3b82c0cc34de6da +69f9abba65592ee01db4dce52dbab90b08fc04193602792ee4daa263033d59081587b09bbe49d0b49c9825d22840b2ff5d9c5155f975f8f2c2e7a90c75d2e4a8040fe39f63bbafb403d9e28cc3b86e04e394a9c9e8065bd3c85fa9f0c7891600,88fefbe8995e296a9dee4da2b414d5a7e134045639a6b176c2d736ed +38a10a352ca5aedfa8e19c64787d8e9c3a75dbf3b8674bfab29b5dbfc15a63d10fae66cd1a6e6d2452d557967eaad89a4c98449787b0b3164ca5b717a93f24eb0b506ceb70cbbcb8d72b2a72993f909aad92f044e0b5a2c9ac9cb16a0ca2f81f49,c002732f6f38ab83828921f5fcb4a8ce1fc561b0e9fa214c5ff02192 +6d8c6e449bc13634f115749c248c17cd148b72157a2c37bf8969ea83b4d6ba8c0ee2711c28ee11495f43049596520ce436004b026b6c1f7292b9c436b055cbb72d530d860d1276a1502a5140e3c3f54a93663e4d20edec32d284e25564f624955b52,44e9002f9d97d98bb439afc361f93bb959523e73136a2c65b2e2b066 +6efcbcaf451c129dbe00b9cef0c3749d3ee9d41c7bd500ade40cdc65dedbbbadb885a5b14b32a0c0d087825201e303288a733842fa7e599c0c514e078f05c821c7a4498b01c40032e9f1872a1c925fa17ce253e8935e4c3c71282242cb716b2089ccc1,2bff16cba9e50762d2288eb780078462c086f4cbf59479f5387a0b27 +433c5303131624c0021d868a30825475e8d0bd3052a022180398f4ca4423b98214b6beaac21c8807a2c33f8c93bd42b092cc1b06cedf3224d5ed1ec29784444f22e08a55aa58542b524b02cd3d5d5f6907afe71c5d7462224a3f9d9e53e7e0846dcbb4ce,5efdc3caa22ee2c2eb632d4c6645ce3ec63960dfd69a04bbe01156c5 +a873e0c67ca639026b6683008f7aa6324d4979550e9bce064ca1e1fb97a30b147a24f3f666c0a72d71348ede701cf2d17e2253c34d1ec3b647dbcef2f879f4eb881c4830b791378c901eb725ea5c172316c6d606e0af7df4df7f76e490cd30b2badf45685f,e8fb64a74387c9a3e1ac4abc82d3591b6b349f2e5cde6584d8d7c371 +006917b64f9dcdf1d2d87c8a6173b64f6587168e80faa80f82d84f60301e561e312d9fbce62f39a6fb476e01e925f26bcc91de621449be6504c504830aae394096c8fc7694651051365d4ee9070101ec9b68086f2ea8f8ab7b811ea8ad934d5c9b62c60a4771,db224bccf5ca86dfba3ea372e2269750b532409ea004e82d4b5835e8 +f13c972c52cb3cc4a4df28c97f2df11ce089b815466be88863243eb318c2adb1a417cb1041308598541720197b9b1cb5ba2318bd5574d1df2174af14884149ba9b2f446d609df240ce335599957b8ec80876d9a085ae084907bc5961b20bf5f6ca58d5dab38adb,4e28867dcef3a7b759ca24d8107beb0cbf9db0f10a3c410a9b4ba8c8 +e35780eb9799ad4c77535d4ddb683cf33ef367715327cf4c4a58ed9cbdcdd486f669f80189d549a9364fa82a51a52654ec721bb3aab95dceb4a86a6afa93826db923517e928f33e3fba850d45660ef83b9876accafa2a9987a254b137c6e140a21691e1069413848,5c0c2df13a1fd6762b6e50fb3e080e649c3a7a8dda415c42fb637136 +64ec021c9585e01ffe6d31bb50d44c79b6993d72678163db474947a053674619d158016adb243f5c8d50aa92f50ab36e579ff2dabb780a2b529370daa299207cfbcdd3a9a25006d19c4f1fe33e4b1eaec315d8c6ee1e730623fd1941875b924eb57d6d0c2edc4e78d6,36f5630ec2829b0fbad84f150932e46647edcc454e06b23166661d60 +5954bab512cf327d66b5d9f296180080402624ad7628506b555eea8382562324cf452fba4a2130de3e165d11831a270d9cb97ce8c2d32a96f50d71600bb4ca268cf98e90d6496b0a6619a5a8c63db6d8a0634dfc6c7ec8ea9c006b6c456f1b20cd19e781af20454ac880,dac2594bcd357e63928a21e98348f27d0fa2c70eb07c7e8e93d6d84e +03d9f92b2c565709a568724a0aff90f8f347f43b02338f94a03ed32e6f33666ff5802da4c81bdce0d0e86c04afd4edc2fc8b4141c2975b6f07639b1994c973d9a9afce3d9d365862003498513bfa166d2629e314d97441667b007414e739d7febf0fe3c32c17aa188a8683,24970df3cf8c9e30dcbe661817ff74538ad43bc90b149ed7cab7811b +f31e8b4f9e0621d531d22a380be5d9abd56faec53cbd39b1fab230ea67184440e5b1d15457bd25f56204fa917fa48e669016cb48c1ffc1e1e45274b3b47379e00a43843cf8601a5551411ec12503e5aac43d8676a1b2297ec7a0800dbfee04292e937f21c005f17411473041,ad9bf420d2b570ebe7923a76b253f156f3513712955bcbb9a87394db +758ea3fea738973db0b8be7e599bbef4519373d6e6dcd7195ea885fc991d896762992759c2a09002912fb08e0cb5b76f49162aeb8cf87b172cf3ad190253df612f77b1f0c532e3b5fc99c2d31f8f65011695a087a35ee4eee5e334c369d8ee5d29f695815d866da99df3f79403,2f60928263fe1d5fa5136da8de1d2c3b60bd4b700a3e2c256e9536ef +47c6e0c2b74948465921868804f0f7bd50dd323583dc784f998a93cd1ca4c6ef84d41dc81c2c40f34b5bee6a93867b3bdba0052c5f59e6f3657918c382e771d33109122cc8bb0e1e53c4e3d13b43ce44970f5e0c079d2ad7d7a3549cd75760c21bb15b447589e86e8d76b1e9ced2,bfb40f7e7f81f2fec7644e08fbc99c768adc6314b8ccd833332f1bf8 +f690a132ab46b28edfa6479283d6444e371c6459108afd9c35dbd235e0b6b6ff4c4ea58e7554bd002460433b2164ca51e868f7947d7d7a0d792e4abf0be5f450853cc40d85485b2b8857ea31b5ea6e4ccfa2f3a7ef3380066d7d8979fdac618aad3d7e886dea4f005ae4ad05e5065f,190e9fda8a7d78343ff24ade9fee69650c7631ad6329d17d4bd575db +58d6a99bc6458824b256916770a8417040721cccfd4b79eacd8b65a3767ce5ba7e74104c985ac56b8cc9aebd16febd4cda5adb130b0ff2329cc8d611eb14dac268a2f9e633c99de33997fea41c52a7c5e1317d5b5daed35eba7d5a60e45d1fa7eaabc35f5c2b0a0f2379231953322c4e,e26cd20b87083cb9f246d216e3da51ef7c5519b483db439d37256dbe +befab574396d7f8b6705e2d5b58b2c1c820bb24e3f4bae3e8fbcd36dbf734ee14e5d6ab972aedd3540235466e825850ee4c512ea9795abfd33f330d9fd7f79e62bbb63a6ea85de15beaeea6f8d204a28956059e2632d11861dfb0e65bc07ac8a159388d5c3277e227286f65ff5e5b5aec1,6caf807f6abc1a7721a5f209fc09fd00474b9e2a77ef7b57e1320271 +8e58144fa9179d686478622ce450c748260c95d1ba43b8f9b59abeca8d93488da73463ef40198b4d16fb0b0707201347e0506ff19d01bea0f42b8af9e71a1f1bd168781069d4d338fdef00bf419fbb003031df671f4a37979564f69282de9c65407847dd0da505ab1641c02dea4f0d834986,64cd5291a1a0807ba7c14103a0f46c636795f8f8d3a12e59e88d9c51 +b55c10eae0ec684c16d13463f29291bf26c82e2fa0422a99c71db4af14dd9c7f33eda52fd73d017cc0f2dbe734d831f0d820d06d5f89dacc485739144f8cfd4799223b1aff9031a105cb6a029ba71e6e5867d85a554991c38df3c9ef8c1e1e9a7630be61caabca69280c399c1fb7a12d12aefc,29491256a80bf1a9325348b5841edc726fa8a53117268c47f74b5e49 +2eeea693f585f4ed6f6f8865bbae47a6908aecd7c429e4bec4f0de1d0ca0183fa201a0cb14a529b7d7ac0e6ff6607a3243ee9fb11bcf3e2304fe75ffcddd6c5c2e2a4cd45f63c962d010645058d36571404a6d2b4f44755434d76998e83409c3205aa1615db44057db991231d2cb42624574f545,a523449b770a8de3b39cd446046149feaee327d6d5b39929b9aac915 +dab11dc0b047db0420a585f56c42d93175562852428499f66a0db811fcdddab2f7cdffed1543e5fb72110b64686bc7b6887a538ad44c050f1e42631bc4ec8a9f2a047163d822a38989ee4aab01b4c1f161b062d873b1cfa388fd301514f62224157b9bef423c7783b7aac8d30d65cd1bba8d689c2d,abb2fce213ce164c94ab7a763c21f638a3bb8d72f802deadacc023ae +42e99a2f80aee0e001279a2434f731e01d34a44b1a8101726921c0590c30f3120eb83059f325e894a5ac959dca71ce2214799916424e859d27d789437b9d27240bf8c35adbafcecc322b48aa205b293962d858652abacbd588bcf6cbc388d0993bd622f96ed54614c25b6a9aa527589eaaffcf17ddf7,c40d969f7218d71b904c4e4eaceb0473ba0a2e7339649da5dfeb8938 +3c9b46450c0f2cae8e3823f8bdb4277f31b744ce2eb17054bddc6dff36af7f49fb8a2320cc3bdf8e0a2ea29ad3a55de1165d219adeddb5175253e2d1489e9b6fdd02e2c3d3a4b54d60e3a47334c37913c5695378a669e9b72dec32af5434f93f46176ebf044c4784467c700470d0c0b40c8a088c815816,2eb28fdf458d4fecb5b441d910b576f630e666bbf30aac90ab64425b +d1e654b77cb155f5c77971a64df9e5d34c26a3cad6c7f6b300d39deb1910094691adaa095be4ba5d86690a976428635d5526f3e946f7dc3bd4dbc78999e653441187a81f9adcd5a3c5f254bc8256b0158f54673dcc1232f6e918ebfc6c51ce67eaeb042d9f57eec4bfe910e169af78b3de48d137df4f2840,a3387b2fa23a13bfae77895f1f93935a0710ee3a027ff0d6399d8ecc +626f68c18a69a6590159a9c46be03d5965698f2dac3de779b878b3d9c421e0f21b955a16c715c1ec1e22ce3eb645b8b4f263f60660ea3028981eebd6c8c3a367285b691c8ee56944a7cd1217997e1d9c21620b536bdbd5de8925ff71dec6fbc06624ab6b21e329813de90d1e572dfb89a18120c3f606355d25,75755f46c2fc86bd4aae75919c6ca5b1a7375e466ca3170f70eee490 +651a6fb3c4b80c7c68c6011675e6094eb56abf5fc3057324ebc6477825061f9f27e7a94633abd1fa598a746e4a577caf524c52ec1788471f92b8c37f23795ca19d559d446cab16cbcdce90b79fa1026cee77bf4ab1b503c5b94c2256ad75b3eac6fd5dcb96aca4b03a834bfb4e9af988cecbf2ae597cb9097940,7184c69ee1c43fd564102cd68ef898d5d0d8264b9b0d044691bc18af +8aaf072fce8a2d96bc10b3c91c809ee93072fb205ca7f10abd82ecd82cf040b1bc49ea13d1857815c0e99781de3adbb5443ce1c897e55188ceaf221aa9681638de05ae1b322938f46bce51543b57ecdb4c266272259d1798de13be90e10efec2d07484d9b21a3870e2aa9e06c21aa2d0c9cf420080a80a91dee16f,f50cf78ff46513c905399cc2510681a90ce089fced40fbc9cf218ca4 +53f918fd00b1701bd504f8cdea803acca21ac18c564ab90c2a17da592c7d69688f6580575395551e8cd33e0fef08ca6ed4588d4d140b3e44c032355df1c531564d7f4835753344345a6781e11cd5e095b73df5f82c8ae3ad00877936896671e947cc52e2b29dcd463d90a0c9929128da222b5a211450bbc0e02448e2,f2aabe18d7b4dd8e4dc0ac8dcf4e9019c7c9af33d4b952da41219fe5 +a64599b8a61b5ccec9e67aed69447459c8da3d1ec6c7c7c82a7428b9b584fa67e90f68e2c00fbbed4613666e5168da4a16f395f7a3c3832b3b134bfc9cbaa95d2a0fe252f44ac6681eb6d40ab91c1d0282fed6701c57463d3c5f2bb8c6a7301fb4576aa3b5f15510db8956ff77478c26a7c09bea7b398cfc83503f538e,ac5d00d177e71d7b9a97270e6200e4d3d07851eb2e58b12be0beed95 +0e3ab0e054739b00cdb6a87bd12cae024b54cb5e550e6c425360c2e87e59401f5ec24ef0314855f0f56c47695d56a7fb1417693af2a1ed5291f2fee95f75eed54a1b1c2e81226fbff6f63ade584911c71967a8eb70933bc3f5d15bc91b5c2644d9516d3c3a8c154ee48e118bd1442c043c7a0dba5ac5b1d5360aae5b9065,cb7979b4c6c2826cdef7e1aada85f8c4546dd59d29fc0aea444f8077 +a62fc595b4096e6336e53fcdfc8d1cc175d71dac9d750a6133d23199eaac288207944cea6b16d27631915b4619f743da2e30a0c00bbdb1bbb35ab852ef3b9aec6b0a8dcc6e9e1abaa3ad62ac0a6c5de765de2c3711b769e3fde44a74016fff82ac46fa8f1797d3b2a726b696e3dea5530439acee3a45c2a51bc32dd055650b,f9d8ccf6684693c40c81ebbd006c49984fbaf3a2b2e905abe60765dd +2b6db7ced8665ebe9deb080295218426bdaa7c6da9add2088932cdffbaa1c14129bccdd70f369efb149285858d2b1d155d14de2fdb680a8b027284055182a0cae275234cc9c92863c1b4ab66f304cf0621cd54565f5bff461d3b461bd40df28198e3732501b4860eadd503d26d6e69338f4e0456e9e9baf3d827ae685fb1d817,ed1f6387a7be090277b65a5fcd7040c7be0eeaf0fd7f14968097873b +10db509b2cdcaba6c062ae33be48116a29eb18e390e1bbada5ca0a2718afbcd23431440106594893043cc7f2625281bf7de2655880966a23705f0c5155c2f5cca9f2c2142e96d0a2e763b70686cd421b5db812daced0c6d65035fde558e94f26b3e6dde5bd13980cc80292b723013bd033284584bff27657871b0cf07a849f4ae2,0a27ce6973cb22a8b10057a8e7a654058b71e6d8c69c653415ff0c81 +9334de60c997bda6086101a6314f64e4458f5ff9450c509df006e8c547983c651ca97879175aaba0c539e82d05c1e02c480975cbb30118121061b1ebac4f8d9a3781e2db6b18042e01ecf9017a64a0e57447ec7fcbe6a7f82585f7403ee2223d52d37b4bf426428613d6b4257980972a0acab508a7620c1cb28eb4e9d30fc41361ec,be3be49980f43fb6598be921d7d8fda1f397f605d9708c5d125c4e9f +e88ab086891693aa535ceb20e64c7ab97c7dd3548f3786339897a5f0c39031549ca870166e477743ccfbe016b4428d89738e426f5ffe81626137f17aecff61b72dbee2dc20961880cfe281dfab5ee38b1921881450e16032de5e4d55ad8d4fca609721b0692bac79be5a06e177fe8c80c0c83519fb3347de9f43d5561cb8107b9b5edc,932137bf2cd32ddfd3ba80c525268730b6f7458601b5296aeb325183 +fd19e01a83eb6ec810b94582cb8fbfa2fcb992b53684fb748d2264f020d3b960cb1d6b8c348c2b54a9fcea72330c2aaa9a24ecdb00c436abc702361a82bb8828b85369b8c72ece0082fe06557163899c2a0efa466c33c04343a839417057399a63a3929be1ee4805d6ce3e5d0d0967fe9004696a5663f4cac9179006a2ceb75542d75d68,796698ce24efcda8214d161138f3c7da6d7615e4cf1dac63b69941f9 +59ae20b6f7e0b3c7a989afb28324a40fca25d8651cf1f46ae383ef6d8441587aa1c04c3e3bf88e8131ce6145cfb8973d961e8432b202fa5af3e09d625faad825bc19da9b5c6c20d02abda2fcc58b5bd3fe507bf201263f30543819510c12bc23e2ddb4f711d087a86edb1b355313363a2de996b891025e147036087401ccf3ca7815bf3c49,b216930e158d65fb1ff424f9eab6cd28996231ef5ee1d65dbe29d370 +77ee804b9f3295ab2362798b72b0a1b2d3291dceb8139896355830f34b3b328561531f8079b79a6e9980705150866402fdc176c05897e359a6cb1a7ab067383eb497182a7e5aef7038e4c96d133b2782917417e391535b5e1b51f47d8ed7e4d4025fe98dc87b9c1622614bff3d1029e68e372de719803857ca52067cddaad958951cb2068cc6,af6c676a62288b2d25a862f8866b262a74e3d2a0d414b966ce601e14 +b771d5cef5d1a41a93d15643d7181d2a2ef0a8e84d91812f20ed21f147bef732bf3a60ef4067c3734b85bc8cd471780f10dc9e8291b58339a677b960218f71e793f2797aea349406512829065d37bb55ea796fa4f56fd8896b49b2cd19b43215ad967c712b24e5032d065232e02c127409d2ed4146b9d75d763d52db98d949d3b0fed6a8052fbb,418c83eb01881b4f38544665201dd05c939ca047d31834f637342342 +b32d95b0b9aad2a8816de6d06d1f86008505bd8c14124f6e9a163b5a2ade55f835d0ec3880ef50700d3b25e42cc0af050ccd1be5e555b23087e04d7bf9813622780c7313a1954f8740b6ee2d3f71f768dd417f520482bd3a08d4f222b4ee9dbd015447b33507dd50f3ab4247c5de9a8abd62a8decea01e3b87c8b927f5b08beb37674c6f8e380c04,64d78817714fe05272d3805e6e19056b1649036cdcd5094fd1cc890a +04410e31082a47584b406f051398a6abe74e4da59bb6f85e6b49e8a1f7f2ca00dfba5462c2cd2bfde8b64fb21d70c083f11318b56a52d03b81cac5eec29eb31bd0078b6156786da3d6d8c33098c5c47bb67ac64db14165af65b44544d806dde5f487d5373c7f9792c299e9686b7e5821e7c8e2458315b996b5677d926dac57b3f22da873c601016a0d,2c4e7c537d0e2af2261a669bc24bd0df16d2c72a7f98d7a5ef6a8150 +8b81e9badde026f14d95c019977024c9e13db7a5cd21f9e9fc491d716164bbacdc7060d882615d411438aea056c340cdf977788f6e17d118de55026855f93270472d1fd18b9e7e812bae107e0dfde7063301b71f6cfe4e225cab3b232905a56e994f08ee2891ba922d49c3dafeb75f7c69750cb67d822c96176c46bd8a29f1701373fb09a1a6e3c7158f,df1fcb80ab380ca33bdb61f96adab334937e190f03c1b78b219e50f8 +fa6eed24da6666a22208146b19a532c2ec9ba94f09f1def1e7fc13c399a48e41acc2a589d099276296348f396253b57cb0e40291bd282773656b6e0d8bea1cda084a3738816a840485fcf3fb307f777fa5feac48695c2af4769720258c77943fb4556c362d9cba8bf103aeb9034baa8ea8bfb9c4f8e6742ce0d52c49ea8e974f339612e830e9e7a9c29065,0dd77ada384cab6a7aced19cfc8048c2566d4303e2010c98d16a0516 +9bb4af1b4f09c071ce3cafa92e4eb73ce8a6f5d82a85733440368dee4eb1cbc7b55ac150773b6fe47dbe036c45582ed67e23f4c74585dab509df1b83610564545642b2b1ec463e18048fc23477c6b2aa035594ecd33791af6af4cbc2a1166aba8d628c57e707f0b0e8707caf91cd44bdb915e0296e0190d56d33d8dde10b5b60377838973c1d943c22ed335e,b256d0d6b6d6a72e113d105ad9601c91933d53b20a30d8e2cf33f96d +2167f02118cc62043e9091a647cadbed95611a521fe0d64e8518f16c808ab297725598ae296880a773607a798f7c3cfce80d251ebec6885015f9abf7eaabae46798f82cb5926de5c23f44a3f9f9534b3c6f405b5364c2f8a8bdc5ca49c749bed8ce4ba48897062ae8424ca6dde5f55c0e42a95d1e292ca54fb46a84fbc9cd87f2d0c9e7448de3043ae22fdd229,b95f72512546e4af685931246717bc482bfe922789a26eef01bde82d +94b7fa0bc1c44e949b1d7617d31b4720cbe7ca57c6fa4f4094d4761567e389ecc64f6968e4064df70df836a47d0c713336b5028b35930d29eb7a7f9a5af9ad5cf441745baec9bb014ceeff5a41ba5c1ce085feb980bab9cf79f2158e03ef7e63e29c38d7816a84d4f71e0f548b7fc316085ae38a060ff9b8dec36f91ad9ebc0a5b6c338cbb8f6659d342a24368cf,628238a9532727cc83f8fdced11d138a17eee4822c5d3549157d6d5e +ea40e83cb18b3a242c1ecc6ccd0b7853a439dab2c569cfc6dc38a19f5c90acbf76aef9ea3742ff3b54ef7d36eb7ce4ff1c9ab3bc119cff6be93c03e208783335c0ab8137be5b10cdc66ff3f89a1bddc6a1eed74f504cbe7290690bb295a872b9e3fe2cee9e6c67c41db8efd7d863cf10f840fe618e7936da3dca5ca6df933f24f6954ba0801a1294cd8d7e66dfafec,ab0fd308590574d6f6130232d9fafa9ffcfea78579a6a8f67c590420 +157d5b7e4507f66d9a267476d33831e7bb768d4d04cc3438da12f9010263ea5fcafbde2579db2f6b58f911d593d5f79fb05fe3596e3fa80ff2f761d1b0e57080055c118c53e53cdb63055261d7c9b2b39bd90acc32520cbbdbda2c4fd8856dbcee173132a2679198daf83007a9b5c51511ae49766c792a29520388444ebefe28256fb33d4260439cba73a9479ee00c63,d5134200dc98f4ca480cd24d24497737252b55977ae5a869ba27089d +836b34b515476f613fe447a4e0c3f3b8f20910ac89a3977055c960d2d5d2b72bd8acc715a9035321b86703a411dde0466d58a59769672aa60ad587b8481de4bba552a1645779789501ec53d540b904821f32b0bd1855b04e4848f9f8cfe9ebd8911be95781a759d7ad9724a7102dbe576776b7c632bc39b9b5e19057e226552a5994c1dbb3b5c7871a11f5537011044c53,494cbc9b649e48ec5ad7364aeb9c8edf4a4f400789ef203f7b818a44 +cc7784a4912a7ab5ad3620aab29ba87077cd3cb83636adc9f3dc94f51edf521b2161ef108f21a0a298557981c0e53ce6ced45bdf782c1ef200d29bab81dd6460586964edab7cebdbbec75fd7925060f7da2b853b2b089588fa0f8c16ec6498b14c55dcee335cb3a91d698e4d393ab8e8eac0825f8adebeee196df41205c011674e53426caa453f8de1cbb57932b0b741d4c6,7ff8a28ab12074102aef3efb8904284b617237322a2bf701c9fcfefc +7639b461fff270b2455ac1d1afce782944aea5e9087eb4a39eb96bb5c3baaf0e868c8526d3404f9405e79e77bfac5ffb89bf1957b523e17d341d7323c302ea7083872dd5e8705694acdda36d5a1b895aaa16eca6104c82688532c8bfe1790b5dc9f4ec5fe95baed37e1d287be710431f1e5e8ee105bc42ed37d74b1e55984bf1c09fe6a1fa13ef3b96faeaed6a2a1950a12153,50cdbeab4bbaa0861f3e364af520f9d8b54e79e3871abca7bbb2bae5 +eb6513fc61b30cfba58d4d7e80f94d14589090cf1d80b1df2e68088dc6104959ba0d583d585e9578ab0aec0cf36c48435eb52ed9ab4bbce7a5abe679c97ae2dbe35e8cc1d45b06dda3cf418665c57cbee4bbb47fa4caf78f4ee656fec237fe4eebbafa206e1ef2bd0ee4ae71bd0e9b2f54f91daadf1febfd7032381d636b733dcb3bf76fb14e23aff1f68ed3dbcf75c9b99c6f26,29b6b523c82f499078c73630ba38227bbd08ef1a2d67b425c058def5 +1594d74bf5dde444265d4c04dad9721ff3e34cbf622daf341fe16b96431f6c4df1f760d34f296eb97d98d560ad5286fec4dce1724f20b54fd7df51d4bf137add656c80546fb1bf516d62ee82baa992910ef4cc18b70f3f8698276fcfb44e0ec546c2c39cfd8ee91034ff9303058b4252462f86c823eb15bf481e6b79cc3a02218595b3658e8b37382bd5048eaed5fd02c37944e73b,93ce0c8d4355300d4e63d6599129dea7420e5b609dbb35be432b12b5 +4cfa1278903026f66fedd41374558be1b585d03c5c55dac94361df286d4bd39c7cb8037ed3b267b07c346626449d0cc5b0dd2cf221f7e4c3449a4be99985d2d5e67bff2923357ddeab5abcb4619f3a3a57b2cf928a022eb27676c6cf805689004fca4d41ea6c2d0a4789c7605f7bb838dd883b3ad3e6027e775bcf262881428099c7fff95b14c095ea130e0b9938a5e22fc52650f591,d02896d957b599869f2b2a4992a49eef7ab1308f456c78c809bdac88 +d3e65cb92cfa79662f6af493d696a07ccf32aaadcceff06e73e8d9f6f909209e66715d6e978788c49efb9087b170ecf3aa86d2d4d1a065ae0efc8924f365d676b3cb9e2bec918fd96d0b43dee83727c9a93bf56ca2b2e59adba85696546a815067fc7a78039629d4948d157e7b0d826d1bf8e81237bab7321312fdaa4d521744f988db6fdf04549d0fdca393d639c729af716e9c8bba48,181e2301f629a569271bb740d32b1d3bd25acb179e9aebef98009ed4 +842cc583504539622d7f71e7e31863a2b885c56a0ba62db4c2a3f2fd12e79660dc7205ca29a0dc0a87db4dc62ee47a41db36b9ddb3293b9ac4baae7df5c6e7201e17f717ab56e12cad476be49608ad2d50309e7d48d2d8de4fa58ac3cfeafeee48c0a9eec88498e3efc51f54d300d828dddccb9d0b06dd021a29cf5cb5b2506915beb8a11998b8b886e0f9b7a80e97d91a7d01270f9a7717,5cd017b269a6366c789d9cecaef3ee9c3575181a084266d78a028db7 +6c4b0a0719573e57248661e98febe326571f9a1ca813d3638531ae28b4860f23c3a3a8ac1c250034a660e2d71e16d3acc4bf9ce215c6f15b1c0fc7e77d3d27157e66da9ceec9258f8f2bf9e02b4ac93793dd6e29e307ede3695a0df63cbdc0fc66fb770813eb149ca2a916911bee4902c47c7802e69e405fe3c04ceb5522792a5503fa829f707272226621f7c488a7698c0d69aa561be9f378,ac280a211c98a07f6fcbb719f250e3e5a6ba2c93a833976c9f3147eb +51b7dbb7ce2ffeb427a91ccfe5218fd40f9e0b7e24756d4c47cd55606008bdc27d16400933906fd9f30effdd4880022d081155342af3fb6cd53672ab7fb5b3a3bcbe47be1fd3a2278cae8a5fd61c1433f7d350675dd21803746cadca574130f01200024c6340ab0cc2cf74f2234669f34e9009ef2eb94823d62b31407f4ba46f1a1eec41641e84d77727b59e746b8a671bef936f05be820759fa,c284c9308a28b6d29ccaa7853f8c41badcddbc1aa4e99481a6ee2f4d +83599d93f5561e821bd01a472386bc2ff4efbd4aed60d5821e84aae74d8071029810f5e286f8f17651cd27da07b1eb4382f754cd1c95268783ad09220f5502840370d494beb17124220f6afce91ec8a0f55231f9652433e5ce3489b727716cf4aeba7dcda20cd29aa9a859201253f948dd94395aba9e3852bd1d60dda7ae5dc045b283da006e1cbad83cc13292a315db5553305c628dd091146597,3d9a979b34d45569e1c98d09dc62d03616c0251c41a8b90138750f1e +2be9bf526c9d5a75d565dd11ef63b979d068659c7f026c08bea4af161d85a462d80e45040e91f4165c074c43ac661380311a8cbed59cc8e4c4518e80cd2c78ab1cabf66bff83eab3a80148550307310950d034a6286c93a1ece8929e6385c5e3bb6ea8a7c0fb6d6332e320e71cc4eb462a2a62e2bfe08f0ccad93e61bedb5dd0b786a728ab666f07e0576d189c92bf9fb20dca49ac2d3956d47385e2,8ddc9f1e0f94c1247a67d6119a9169762c6c7f1ec7f611d61353ab30 +ca76d3a12595a817682617006848675547d3e8f50c2210f9af906c0e7ce50b4460186fe70457a9e879e79fd4d1a688c70a347361c847ba0dd6aa52936eaf8e58a1be2f5c1c704e20146d366aeb3853bed9de9befe9569ac8aaea37a9fb7139a1a1a7d5c748605a8defb297869ebedd71d615a5da23496d11e11abbb126b206fa0a7797ee7de117986012d0362dcef775c2fe145ada6bda1ccb326bf644,46eda2622d49b9148b40b6014c75a4086eb9dd4740f0dd591aca53b2 +f76b85dc67421025d64e93096d1d712b7baf7fb001716f02d33b2160c2c882c310ef13a576b1c2d30ef8f78ef8d2f465007109aad93f74cb9e7d7bef7c9590e8af3b267c89c15db238138c45833c98cc4a471a7802723ef4c744a853cf80a0c2568dd4ed58a2c9644806f42104cee53628e5bdf7b63b0b338e931e31b87c24b146c6d040605567ceef5960df9e022cb469d4c787f4cba3c544a1ac91f95f,57cfa137968c39eaa12533044b8265bb903ec16c8d17b6cf1f106c57 +25b8c9c032ea6bcd733ffc8718fbb2a503a4ea8f71dea1176189f694304f0ff68e862a8197b839957549ef243a5279fc2646bd4c009b6d1edebf24738197abb4c992f6b1dc9ba891f570879accd5a6b18691a93c7d0a8d38f95b639c1daeb48c4c2f15ccf5b9d508f8333c32de78781b41850f261b855c4bebcc125a380c54d501c5d3bd07e6b52102116088e53d76583b0161e2a58d0778f091206aabd5a1,8730c219e19d9d37cb7a63a4ddd55e84dcb0236ef7c8828b2a23c9b9 +21cfdc2a7ccb7f331b3d2eefff37e48ad9fa9c788c3f3c200e0173d99963e1cbca93623b264e920394ae48bb4c3a5bb96ffbc8f0e53f30e22956adabc2765f57fb761e147ecbf8567533db6e50c8a1f894310a94edf806dd8ca6a0e141c0fa7c9fae6c6ae65f18c93a8529e6e5b553bf55f25be2e80a9882bd37f145fecbeb3d447a3c4e46c21524cc55cdd62f521ab92a8ba72b897996c49bb273198b7b1c9e,61c01fb4a010f319d193cb6d36063751950a1a8f93539bea32f84ea1 +4e452ba42127dcc956ef4f8f35dd68cb225fb73b5bc7e1ec5a898bba2931563e74faff3b67314f241ec49f4a7061e3bd0213ae826bab380f1f14faab8b0efddd5fd1bb49373853a08f30553d5a55ccbbb8153de4704f29ca2bdeef0419468e05dd51557ccc80c0a96190bbcc4d77ecff21c66bdf486459d427f986410f883a80a5bcc32c20f0478bb9a97a126fc5f95451e40f292a4614930d054c851acd019ccf,1459044df9c26f5e240f6a6b9380734cad84b6592fc9693ddd9f974e +fa85671df7dadf99a6ffee97a3ab9991671f5629195049880497487867a6c446b60087fac9a0f2fcc8e3b24e97e42345b93b5f7d3691829d3f8ccd4bb36411b85fc2328eb0c51cb3151f70860ad3246ce0623a8dc8b3c49f958f8690f8e3860e71eb2b1479a5cea0b3f8befd87acaf5362435eaeccb52f38617bc6c5c2c6e269ead1fbd69e941d4ad2012da2c5b21bcfbf98e4a77ab2af1f3fda3233f046d38f1dc8,eb5cc00173239851f3960edac336005109189dfc04b29ca4cdde5bc1 +e90847ae6797fbc0b6b36d6e588c0a743d725788ca50b6d792352ea8294f5ba654a15366b8e1b288d84f5178240827975a763bc45c7b0430e8a559df4488505e009c63da994f1403f407958203cebb6e37d89c94a5eacf6039a327f6c4dbbc7a2a307d976aa39e41af6537243fc218dfa6ab4dd817b6a397df5ca69107a9198799ed248641b63b42cb4c29bfdd7975ac96edfc274ac562d0474c60347a078ce4c25e88,a640d4841390f47dc47d4bfcf130fcf51c5f2d491f91c13374ce5965 +f6d5c2b6c93954fc627602c00c4ca9a7d3ed12b27173f0b2c9b0e4a5939398a665e67e69d0b12fb7e4ceb253e8083d1ceb724ac07f009f094e42f2d6f2129489e846eaff0700a8d4453ef453a3eddc18f408c77a83275617fabc4ea3a2833aa73406c0e966276079d38e8e38539a70e194cc5513aaa457c699383fd1900b1e72bdfb835d1fd321b37ba80549b078a49ea08152869a918ca57f5b54ed71e4fd3ac5c06729,85bb3ed98c4808d8f67c722c9119c54e6543b29e57bd4fb5cbc878c7 +cf8562b1bed89892d67ddaaf3deeb28246456e972326dbcdb5cf3fb289aca01e68da5d59896e3a6165358b071b304d6ab3d018944be5049d5e0e2bb819acf67a6006111089e6767132d72dd85beddcbb2d64496db0cc92955ab4c6234f1eea24f2d51483f2e209e4589bf9519fac51b4d061e801125e605f8093bb6997bc163d551596fe4ab7cfae8fb9a90f6980480ce0c229fd1675409bd788354daf316240cfe0af93eb,50b7d0acb93211e0fc935f970bc43a00be829d6b3c137d4a7e3b2bc1 +2ace31abb0a2e3267944d2f75e1559985db7354c6e605f18dc8470423fca30b7331d9b33c4a4326783d1caae1b4f07060eff978e4746bf0c7e30cd61040bd5ec2746b29863eb7f103ebda614c4291a805b6a4c8214230564a0557bc7102e0bd3ed23719252f7435d64d210ee2aafc585be903fa41e1968c50fd5d5367926df7a05e3a42cf07e656ff92de73b036cf8b19898c0cb34557c0c12c2d8b84e91181af467bc75a9d1,7cdc1782b39fc0eeb1f874d97c88051cf10508e0875fa173ac41cc8e +0d8d09aed19f1013969ce5e7eb92f83a209ae76be31c754844ea9116ceb39a22ebb6003017bbcf26555fa6624185187db8f0cb3564b8b1c06bf685d47f3286eda20b83358f599d2044bbf0583fab8d78f854fe0a596183230c5ef8e54426750eaf2cc4e29d3bdd037e734d863c2bd9789b4c243096138f7672c232314effdfc6513427e2da76916b5248933be312eb5dde4cf70804fb258ac5fb82d58d08177ac6f4756017fff5,ee5d508a4e75900193e99a04b8d838a18dedfcc431e7af3182a47dd6 +c3236b73deb7662bf3f3daa58f137b358ba610560ef7455785a9befdb035a066e90704f929bd9689cef0ce3bda5acf4480bceb8d09d10b098ad8500d9b6071dfc3a14af6c77511d81e3aa8844986c3bea6f469f9e02194c92868cd5f51646256798ff0424954c1434bdfed9facb390b07d342e992936e0f88bfd0e884a0ddb679d0547ccdec6384285a45429d115ac7d235a717242021d1dc35641f5f0a48e8445dba58e6cb2c8ea,5942ba8b58a355f2aef07e29f8f9971301e877fa32d7025df552b1eb +b39feb8283eadc63e8184b51df5ae3fd41aac8a963bb0be1cd08aa5867d8d910c669221e73243360646f6553d1ca05a84e8dc0de05b6419ec349ca994480193d01c92525f3fb3dcefb08afc6d26947bdbbfd85193f53b50609c6140905c53a6686b58e53a319a57b962331ede98149af3de3118a819da4d76706a0424b4e1d2910b0ed26af61d150ebcb46595d4266a0bd7f651ba47d0c7f179ca28545007d92e8419d48fdfbd744ce,29240a9e973888b98a3a836933855d41d8abb6c3806a626c3df18f6c +a983d54f503803e8c7999f4edbbe82e9084f422143a932ddddc47a17b0b7564a7f37a99d0786e99476428d29e29d3c197a72bfab1342c12a0fc4787fd7017d7a6174049ea43b5779169ef7472bdbbd941dcb82fc73aac45a8a94c9f2bd3477f61fd3b796f02a1b8264a214c6fea74b7051b226c722099ec7883a462b83b6afdd4009248b8a237f605fe5a08fe7d8b45321421ebba67bd70a0b00ddbf94baab7f359d5d1eea105f28dcfb,9af178b1dd3cefc96227a289175bb61d9f6b0b352d7804f5e07ea45d +e4d1c1897a0a866ce564635b74222f9696bf2c7f640dd78d7e2aca66e1b61c642bb03ea7536aae597811e9bf4a7b453ede31f97b46a5f0ef51a071a2b3918df16b152519ae3776f9f1edab4c2a377c3292e96408359d3613844d5eb393000283d5ad3401a318b12fd1474b8612f2bb50fb6a8b9e023a54d7dde28c43d6d8854c8d9d1155935c199811dbfc87e9e0072e90eb88681cc7529714f8fb8a2c9d88567adfb974ee205a9bf7b848,f543b4d423eaac86338bb6d8c6181ad6dc0a25733953ced7eb8377f3 +b10c59723e3dcadd6d75df87d0a1580e73133a9b7d00cb95ec19f5547027323be75158b11f80b6e142c6a78531886d9047b08e551e75e6261e79785366d7024bd7cd9cf322d9be7d57fb661069f2481c7bb759cd71b4b36ca2bc2df6d3a328faebdb995a9794a8d72155ed551a1f87c80bf6059b43fc764900b18a1c2441f7487743cf84e565f61f8dd2ece6b6ccc9444049197aaaf53e926fbee3bfca8be588ec77f29d211be89de18b15f6,77b4079eee9d9e3fda051ee0ca430b4df011d056612c1af446a187c2 +db11f609baba7b0ca634926b1dd539c8cbada24967d7add4d9876f77c2d80c0f4dcefbd7121548373582705cca2495bd2a43716fe64ed26d059cfb566b3364bd49ee0717bdd9810dd14d8fad80dbbdc4cafb37cc60fb0fe2a80fb4541b8ca9d59dce457738a9d3d8f641af8c3fd6da162dc16fc01aac527a4a0255b4d231c0be50f44f0db0b713af03d968fe7f0f61ed0824c55c4b5265548febd6aad5c5eedf63efe793489c39b8fd29d104ce,987d30120c9aa4964650a6a730e99c86f7fbddb4ea8d6b4815ee4ebf +bebd4f1a84fc8b15e4452a54bd02d69e304b7f32616aadd90537937106ae4e28de9d8aab02d19bc3e2fde1d651559e296453e4dba94370a14dbbb2d1d4e2022302ee90e208321efcd8528ad89e46dc839ea9df618ea8394a6bff308e7726bae0c19bcd4be52da6258e2ef4e96aa21244429f49ef5cb486d7ff35cac1bacb7e95711944bccb2ab34700d42d1eb38b5d536b947348a458ede3dc6bd6ec547b1b0cae5b257be36a7124e1060c170ffa,46193359397bc3eacd69bff410203583382de93ecc4d80dcfb4fc51d +5aca56a03a13784bdc3289d9364f79e2a85c12276b49b92db0adaa4f206d5028f213f678c3510e111f9dc4c1c1f8b6acb17a6413aa227607c515c62a733817ba5e762cc6748e7e0d6872c984d723c9bb3b117eb8963185300a80bfa65cde495d70a46c44858605fccbed086c2b45cef963d33294dbe9706b13af22f1b7c4cd5a001cfec251fba18e722c6e1c4b1166918b4f6f48a98b64b3c07fc86a6b17a6d0480ab79d4e6415b520f1c484d675b1,0bc29107c7e25d44f8ce83a415b1de5df38a6719769606762b7192c2 +a5aad0e4646a32c85cfcac73f02fc5300f1982fabb2f2179e28303e447854094cdfc854310e5c0f60993ceff54d84d6b46323d930adb07c17599b35b505f09e784bca5985e0172257797fb53649e2e9723efd16865c31b5c3d5113b58bb0bfc8920fabdda086d7537e66d709d050bd14d0c960873f156fad5b3d3840cdfcdc9be6af519db262a27f40896ab25cc39f96984d650611c0d5a3080d5b3a1bf186abd42956588b3b58cd948970d298776060,b485644c32283b280179f7c9714350f0b3acfd7c45a247bf3b6cdb07 +06cbbe67e94a978203ead6c057a1a5b098478b4b4cbef5a97e93c8e42f5572713575fc2a884531d7622f8f879387a859a80f10ef02708cd8f7413ab385afc357678b9578c0ebf641ef076a1a30f1f75379e9dcb2a885bdd295905ee80c0168a62a9597d10cf12dd2d8cee46645c7e5a141f6e0e23aa482abe5661c16e69ef1e28371e2e236c359ba4e92c25626a7b7ff13f6ea4ae906e1cfe163e91719b1f750a96cbde5fbc953d9e576cd216afc90323a,f384542499efd23381debcd9124c539c40bfa70e517280f56a0920e1 +f1c528cf7739874707d4d8ad5b98f7c77169de0b57188df233b2dc8a5b31eda5db4291dd9f68e6bad37b8d7f6c9c0044b3bf74bbc3d7d1798e138709b0d75e7c593d3cccdc1b20c7174b4e692add820ace262d45ccfae2077e878796347168060a162ecca8c38c1a88350bd63bb539134f700fd4addd5959e255337daa06bc86358fabcbefdfb5bc889783d843c08aadc6c4f6c36f65f156e851c9a0f917e4a367b5ad93d874812a1de6a7b93cd53ad97232,d12e3884bc8cf9175d1778e8a3aaa119e4a897738f8d81b1278bc448 +9d9f3a7ecd51b41f6572fd0d0881e30390dfb780991dae7db3b47619134718e6f987810e542619dfaa7b505c76b7350c6432d8bf1cfebdf1069b90a35f0d04cbdf130b0dfc7875f4a4e62cdb8e525aadd7ce842520a482ac18f09442d78305fe85a74e39e760a4837482ed2f437dd13b2ec1042afcf9decdc3e877e50ff4106ad10a525230d11920324a81094da31deab6476aa42f20c84843cfc1c58545ee80352bdd3740dd6a16792ae2d86f11641bb717c2,d8a348264d48045d4482f3fe002c1a1f36d4df0d5e47fac5125c7947 +5179888724819fbad3afa927d3577796660e6a81c52d98e9303261d5a4a83232f6f758934d50aa83ff9e20a5926dfebaac49529d006eb923c5ae5048ed544ec471ed7191edf46363383824f915769b3e688094c682b02151e5ee01e510b431c8865aff8b6b6f2f59cb6d129da79e97c6d2b8fa6c6da3f603199d2d1bcab547682a81cd6cf65f6551121391d78bcc23b5bd0e922ec6d8bf97c952e84dd28aef909aba31edb903b28fbfc33b7703cd996215a11238,6865464c6a230b4bf64ba33bf97459d1d22dafb19e08f4b7dace02ff +576ef3520d30b7a4899b8c0d5e359e45c5189add100e43be429a02fb3de5ff4f8fd0e79d9663acca72cd29c94582b19292a557c5b1315297d168fbb54e9e2ecd13809c2b5fce998edc6570545e1499dbe7fb74d47cd7f35823b212b05bf3f5a79caa34224fdd670d335fcb106f5d92c3946f44d3afcbae2e41ac554d8e6759f332b76be89a0324aa12c5482d1ea3ee89ded4936f3e3c080436f539fa137e74c6d3389bdf5a45074c47bc7b20b0948407a66d855e2f,19d33cd354a13ab2a44044154bd865f117ef8a887fbd0570a8a4ca80 +0df2152fa4f4357c8741529dd77e783925d3d76e95bafa2b542a2c33f3d1d117d159cf473f82310356fee4c90a9e505e70f8f24859656368ba09381fa245eb6c3d763f3093f0c89b972e66b53d59406d9f01aea07f8b3b615cac4ee4d05f542e7d0dab45d67ccccd3a606ccbeb31ea1fa7005ba07176e60dab7d78f6810ef086f42f08e595f0ec217372b98970cc6321576d92ce38f7c397a403bada1548d205c343ac09deca86325373c3b76d9f32028fea8eb32515,e438ae4153463b333ae4fe57bf131505c8c04a534a39a20574155e49 +3e15350d87d6ebb5c8ad99d42515cfe17980933c7a8f6b8bbbf0a63728cefaad2052623c0bd5931839112a48633fb3c2004e0749c87a41b26a8b48945539d1ff41a4b269462fd199bfecd45374756f55a9116e92093ac99451aefb2af9fd32d6d7f5fbc7f7a540d5097c096ebc3b3a721541de073a1cc02f7fb0fb1b9327fb0b1218ca49c9487ab5396622a13ae546c97abdef6b56380dda7012a8384091b6656d0ab272d363cea78163ff765cdd13ab1738b940d16cae,454796c7219c6f7e88508dfc13668b81748211bd016d84b59293b445 +c38d6b0b757cb552be40940ece0009ef3b0b59307c1451686f1a22702922800d58bce7a636c1727ee547c01b214779e898fc0e560f8ae7f61bef4d75eaa696b921fd6b735d171535e9edd267c192b99880c87997711002009095d8a7a437e258104a41a505e5ef71e5613ddd2008195f0c574e6ba3fe40099cfa116e5f1a2fa8a6da04badcb4e2d5d0de31fdc4800891c45781a0aac7c907b56d631fca5ce8b2cde620d11d1777ed9fa603541de794ddc5758fcd5fad78c0,ce158aed6ed3c9d4432e2422af8d255ab1f3898f6f5b5c5a1478552c +8d2de3f0b37a6385c90739805b170057f091cd0c7a0bc951540f26a5a75b3e694631bb64c7635eed316f51318e9d8de13c70a2aba04a14836855f35e480528b776d0a1e8a23b547c8b8d6a0d09b241d3be9377160cca4e6793d00a515dc2992cb7fc741daca171431da99cce6f7789f129e2ac5cf65b40d703035cd2185bb936c82002daf8cbc27a7a9e554b06196630446a6f0a14ba155ed26d95bd627b7205c072d02b60db0fd7e49ea058c2e0ba202daff0de91e845cf79,a0a21d95e640f13b25652484e244be1b373e9b0609b685efce48107a +c464bbdad275c50dcd983b65ad1019b9ff85a1e71c807f3204bb2c921dc31fbcd8c5fc45868ae9ef85b6c9b83bba2a5a822201ed68586ec5ec27fb2857a5d1a2d09d09115f22dcc39fe61f5e1ba0ff6e8b4acb4c6da748be7f3f0839739394ff7fa8e39f7f7e84a33c3866875c01bcb1263c9405d91908e9e0b50e7459fabb63d8c6bbb73d8e3483c099b55bc30ff092ff68b6adedfd477d63570c9f5515847f36e24ba0b705557130cec57ebad1d0b31a378e91894ee26e3a04,ca8cb1359f0b05e2ff9414cce0de6d2cb4d05b08354c2119a87342ca +8b8d68bb8a75732fe272815a68a1c9c5aa31b41dedc8493e76525d1d013d33cebd9e21a5bb95db2616976a8c07fcf411f5f6bc6f7e0b57aca78cc2790a6f9b898858ac9c79b165ff24e66677531e39f572be5d81eb3264524181115f32780257bfb9aeec6af12af28e587cac068a1a2953b59ad680f4c245b2e3ec36f59940d37e1d3db38e13edb29b5c0f404f6ff87f80fc8be7a225ff22fbb9c8b6b1d7330c57840d24bc75b06b80d30dad6806544d510af6c4785e823ac3e0b8,0dddd152cf063f0f505b518eb8db755704f45c9735780ec3a898a923 +6b018710446f368e7421f1bc0ccf562d9c1843846bc8d98d1c9bf7d9d6fcb48bfc3bf83b36d44c4fa93430af75cd190bde36a7f92f867f58a803900df8018150384d85d82132f123006ac2aeba58e02a037fe6afbd65eca7c44977dd3dc74f48b6e7a1bfd5cc4dcf24e4d52e92bd4455848e4928b0eac8b7476fe3cc03e862aa4dff4470dbfed6de48e410f25096487ecfc32a27277f3f5023b2725ade461b1355889554a8836c9cf53bd767f5737d55184eea1ab3f53edd0976c485,57397bb1f84711641e94f413f5d73556b96ba5cfe15f709528626d07 +c9534a24714bd4be37c88a3da1082eda7cabd154c309d7bd670dccd95aa535594463058a29f79031d6ecaa9f675d1211e9359be82669a79c855ea8d89dd38c2c761ddd0ec0ce9e97597432e9a1beae062cdd71edfdfd464119be9e69d18a7a7fd7ce0e2106f0c8b0abf4715e2ca48ef9f454dc203c96656653b727083513f8efb86e49c513bb758b3b052fe21f1c05bb33c37129d6cc81f1aef6adc45b0e8827a830fe545cf57d0955802c117d23ccb55ea28f95c0d8c2f9c5a242b33f,68f6ac4289fd5214263130830fda4da601b88b1f8533eac07a0338d9 +07906c87297b867abf4576e9f3cc7f82f22b154afcbf293b9319f1b0584da6a40c27b32e0b1b7f412c4f1b82480e70a9235b12ec27090a5a33175a2bb28d8adc475cefe33f7803f8ce27967217381f02e67a3b4f84a71f1c5228e0c2ad971373f6f672624fcea8d1a9f85170fad30fa0bbd25035c3b41a6175d467998bd1215f6f3866f53847f9cf68ef3e2fbb54bc994de2302b829c5eea68ec441fcbafd7d16ae4fe9fff98bf00e5bc2ad54dd91ff9fda4dd77b6c754a91955d1fbaad0,f145c45212392894e7f1c4e52728470f8a2d961514869990efbe8232 +588e94b9054abc2189df69b8ba34341b77cdd528e7860e5defcaa79b0c9a452ad4b82aa306be84536eb7cedcbe058d7b84a6aef826b028b8a0271b69ac3605a9635ea9f5ea0aa700f3eb7835bc54611b922964300c953efe7491e3677c2cebe0822e956cd16433b02c68c4a23252c3f9e151a416b4963257b783e038f6b4d5c9f110f871652c7a649a7bcedcbccc6f2d0725bb903cc196ba76c76aa9f10a190b1d1168993baa9ffc96a1655216773458bec72b0e39c9f2c121378feab4e76a,38ce7100e92ee4b65cc831915a06cfc2101990cb68e1004f7e9017d4 +08959a7e4baae874928813364071194e2939772f20db7c3157078987c557c2a6d5abe68d520eef3dc491692e1e21bcd880adebf63bb4213b50897fa005256ed41b5690f78f52855c8d9168a4b666fce2da2b456d7a7e7c17ab5f2fb1ee90b79e698712e963715983fd07641ae4b4e9dc73203fac1ae11fa1f8c7941fcc82eab247addb56e2638447e9d609e610b60ce086656aaebf1da3c8a231d7d94e2fd0afe46b391ff14a72eaeb3f44ad4df85866def43d4781a0b3578bc996c87970b132,bd63ca84dac8bc586d0f0be352dbbba1f4cb430deaa8119b8da13c06 +cb2a234f45e2ecd5863895a451d389a369aab99cfef0d5c9ffca1e6e63f763b5c14fb9b478313c8e8c0efeb3ac9500cf5fd93791b789e67eac12fd038e2547cc8e0fc9db591f33a1e4907c64a922dda23ec9827310b306098554a4a78f050262db5b545b159e1ff1dca6eb734b872343b842c57eafcfda8405eedbb48ef32e99696d135979235c3a05364e371c2d76f1902f1d83146df9495c0a6c57d7bf9ee77e80f9787aee27be1fe126cdc9ef893a4a7dcbbc367e40fe4e1ee90b42ea25af01,7ee4eaea6127c68efce66991b8f0851fe072df3b1e0b5d07e3a4be06 +d16beadf02ab1d4dc6f88b8c4554c51e866df830b89c06e786a5f8757e8909310af51c840efe8d20b35331f4355d80f73295974653ddd620cdde4730fb6c8d0d2dcb2b45d92d4fbdb567c0a3e86bd1a8a795af26fbf29fc6c65941cddb090ff7cd230ac5268ab4606fccba9eded0a2b5d014ee0c34f0b2881ac036e24e151be89eeb6cd9a7a790afccff234d7cb11b99ebf58cd0c589f20bdac4f9f0e28f75e3e04e5b3debce607a496d848d67fa7b49132c71b878fd5557e082a18eca1fbda94d4b,7f3ee578b0410687eaf536f9ec7d654b75f504c104b78793c4cf90d5 +8f65f6bc59a85705016e2bae7fe57980de3127e5ab275f573d334f73f8603106ec3553016608ef2dd6e69b24be0b7113bf6a760ba6e9ce1c48f9e186012cf96a1d4849d75df5bb8315387fd78e9e153e76f8ba7ec6c8849810f59fb4bb9b004318210b37f1299526866f44059e017e22e96cbe418699d014c6ea01c9f0038b10299884dbec3199bb05adc94e955a1533219c1115fed0e5f21228b071f40dd57c4240d98d37b73e412fe0fa4703120d7c0c67972ed233e5deb300a22605472fa3a3ba86,c9c26396e560cd1e6824d9e56e179fcc8aac4c0d932f7632ba594d4c +84891e52e0d451813210c3fd635b39a03a6b7a7317b221a7abc270dfa946c42669aacbbbdf801e1584f330e28c729847ea14152bd637b3d0f2b38b4bd5bf9c791c58806281103a3eabbaede5e711e539e6a8b2cf297cf351c078b4fa8f7f35cf61bebf8814bf248a01d41e86c5715ea40c63f7375379a7eb1d78f27622fb468ab784aaaba4e534a6dfd1df6fa15511341e725ed2e87f98737ccb7b6a6dfae416477472b046bf1811187d151bfa9f7b2bf9acdb23a3be507cdf14cfdf517d2cb5fb9e4ab6,ef30652e3c6ea4ec214472bf96e5f30dca1d31a78eb422734615eaf1 +fdd7a9433a3b4afabd7a3a5e3457e56debf78e84b7a0b0ca0e8c6d53bd0c2dae31b2700c6128334f43981be3b213b1d7a118d59c7e6b6493a86f866a1635c12859cfb9ad17460a77b4522a5c1883c3d6acc86e6162667ec414e9a104aa892053a2b1d72165a855bacd8faf8034a5dd9b716f47a0818c09bb6baf22aa503c06b4ca261f557761989d2afbd88b6a678ad128af68672107d0f1fc73c5ca740459297b3292b281e93bceb761bde7221c3a55708e5ec84472cddcaa84ecf23723cc0991355c6280,5a964bf38eb347684220a3e83eb1efcb641c8f911cb068a774b25b8c +70a40bfbef92277a1aad72f6b79d0177197c4ebd432668cfec05d099accb651062b5dff156c0b27336687a94b26679cfdd9daf7ad204338dd9c4d14114033a5c225bd11f217b5f4732da167ee3f939262d4043fc9cba92303b7b5e96aea12adda64859df4b86e9ee0b58e39091e6b188b408ac94e1294a8911245ee361e60e601eff58d1d37639f3753bec80ebb4efde25817436076623fc65415fe51d1b0280366d12c554d86743f3c3b6572e400361a60726131441ba493a83fbe9afda90f7af1ae717238d,07413665edcb8a35021874984910b498cf74823050640243ae7c84cd +74356e449f4bf8644f77b14f4d67cb6bd9c1f5ae357621d5b8147e562b65c66585caf2e491b48529a01a34d226d436959153815380d5689e30b35357cdac6e08d3f2b0e88e200600d62bd9f5eaf488df86a4470ea227006182e44809009868c4c280c43d7d64a5268fa719074960087b3a6abc837882f882c837834535929389a12b2c78187e2ea07ef8b8eef27dc85002c3ae35f1a50bee6a1c48ba7e175f3316670b27983472aa6a61eed0a683a39ee323080620ea44a9f74411ae5ce99030528f9ab49c79f2,fcc9ead160832f5f0fafed6381afd57fe1335fbfb05b7fb1f0075d37 +8c3798e51bc68482d7337d3abb75dc9ffe860714a9ad73551e120059860dde24ab87327222b64cf774415a70f724cdf270de3fe47dda07b61c9ef2a3551f45a5584860248fabde676e1cd75f6355aa3eaeabe3b51dc813d9fb2eaa4f0f1d9f834d7cad9c7c695ae84b329385bc0bef895b9f1edf44a03d4b410cc23a79a6b62e4f346a5e8dd851c2857995ddbf5b2d717aeb847310e1f6a46ac3d26a7f9b44985af656d2b7c9406e8a9e8f47dcb4ef6b83caacf9aefb6118bfcff7e44bef6937ebddc89186839b77,ec5c6db60b0834fb2e0e7106aeeafb9e614be093c847018214d8a5db +fa56bf730c4f8395875189c10c4fb251605757a8fecc31f9737e3c2503b02608e6731e85d7a38393c67de516b85304824bfb135e33bf22b3a23b913bf6acd2b7ab85198b8187b2bcd454d5e3318cacb32fd6261c31ae7f6c54ef6a7a2a4c9f3ecb81ce3555d4f0ad466dd4c108a90399d70041997c3b25345a9653f3c9a6711ab1b91d6a9d2216442da2c973cbd685ee7643bfd77327a2f7ae9cb283620a08716dfb462e5c1d65432ca9d56a90e811443cd1ecb8f0de179c9cb48ba4f6fec360c66f252f6e64edc96b,0d5f6de16b7cbba49c28654f2ae98163257e7b6b500a3801eef0733f +b6134f9c3e91dd8000740d009dd806240811d51ab1546a974bcb18d344642baa5cd5903af84d58ec5ba17301d5ec0f10ccd0509cbb3fd3fff9172d193af0f782252fd1338c7244d40e0e42362275b22d01c4c3389f19dd69bdf958ebe28e31a4ffe2b5f18a87831cfb7095f58a87c9fa21db72ba269379b2dc2384b3da953c7925761fed324620acea435e52b424a7723f6a2357374157a34cd8252351c25a1b232826cefe1bd3e70ffc15a31e7c0598219d7f00436294d11891b82497bc78aa5363892a2495df8c1eef,7b7e1fc4d3833ed87fd166f909f5c2566dc0e95b17ac834f1e9e3dad +c941cdb9c28ab0a791f2e5c8e8bb52850626aa89205bec3a7e22682313d198b1fa33fc7295381354858758ae6c8ec6fac3245c6e454d16fa2f51c4166fab51df272858f2d603770c40987f64442d487af49cd5c3991ce858ea2a60dab6a65a34414965933973ac2457089e359160b7cdedc42f29e10a91921785f6b7224ee0b349393cdcff6151b50b377d609559923d0984cda6000829b916ab6896693ef6a2199b3c22f7dc5500a15b8258420e314c222bc000bc4e5413e6dd82c993f8330f5c6d1be4bc79f08a1a0a46,c6ac9d5464855e5c2f83f2a56f9a992137da47ec05c541295f8c43e7 +4499efffac4bcea52747efd1e4f20b73e48758be915c88a1ffe5299b0b005837a46b2f20a9cb3c6e64a9e3c564a27c0f1c6ad1960373036ec5bfe1a8fc6a435c2185ed0f114c50e8b3e4c7ed96b06a036819c9463e864a58d6286f785e32a804443a56af0b4df6abc57ed5c2b185ddee8489ea080deeee66aa33c2e6dab36251c402682b6824821f998c32163164298e1fafd31babbcffb594c91888c6219079d907fdb438ed89529d6d96212fd55abe20399dbefd342248507436931cdead496eb6e4a80358acc78647d043,4ee2f93c18974d978dd3a1cbf8b1dac473807067b8807d026182b901 +eecbb8fdfa4da62170fd06727f697d81f83f601ff61e478105d3cb7502f2c89bf3e8f56edd469d049807a38882a7eefbc85fc9a950952e9fa84b8afebd3ce782d4da598002827b1eb98882ea1f0a8f7aa9ce013a6e9bc462fb66c8d4a18da21401e1b93356eb12f3725b6db1684f2300a98b9a119e5d27ff704affb618e12708e77e6e5f34139a5a41131fd1d6336c272a8fc37080f041c71341bee6ab550cb4a20a6ddb6a8e0299f2b14bc730c54b8b1c1c487b494bdccfd3a53535ab2f231590bf2c4062fd2ad58f906a2d0d,d64aee17ed8e2b85e6b097db49554d356f032a34a15b7e844ec8d889 +e64f3e4ace5c8418d65fec2bc5d2a303dd458034736e3b0df719098be7a206deaf52d6ba82316caf330ef852375188cde2b39cc94aa449578a7e2a8e3f5a9d68e816b8d16889fbc0ebf0939d04f63033ae9ae2bdab73b88c26d6bd25ee460ee1ef58fb0afa92cc539f8c76d3d097e7a6a63ebb9b5887edf3cf076028c5bbd5b9db3211371ad3fe121d4e9bf44229f4e1ecf5a0f9f0eba4d5ceb72878ab22c3f0eb5a625323ac66f7061f4a81fac834471e0c59553f108475fe290d43e6a055ae3ee46fb67422f814a68c4be3e8c9,1bddc92be89a672c1bd956b450b9d7b47b4bb0bc58ac51f15f7e054d +d2cb2d733033f9e91395312808383cc4f0ca974e87ec68400d52e96b3fa6984ac58d9ad0938dde5a973008d818c49607d9de2284e7618f1b8aed8372fbd52ed54557af4220fac09dfa8443011699b97d743f8f2b1aef3537ebb45dcc9e13dfb438428ee190a4efdb3caeb7f3933117bf63abdc7e57beb4171c7e1ad260ab0587806c4d137b6316b50abc9cce0dff3acada47bbb86be777e617bbe578ff4519844db360e0a96c6701290e76bb95d26f0f804c8a4f2717eac4e7de9f2cff3bbc55a17e776c0d02856032a6cd10ad2838,0c8ac240170c6546debf4bfb5b38f8f30ea5dc6ef86c166e8e136d6b +f2998955613dd414cc111df5ce30a995bb792e260b0e37a5b1d942fe90171a4ac2f66d4928d7ad377f4d0554cbf4c523d21f6e5f379d6f4b028cdcb9b1758d3b39663242ff3cb6ede6a36a6f05db3bc41e0d861b384b6dec58bb096d0a422fd542df175e1be1571fb52ae66f2d86a2f6824a8cfaacbac4a7492ad0433eeb15454af8f312b3b2a577750e3efbd370e8a8cac1582581971fba3ba4bd0d76e718dacf8433d33a59d287f8cc92234e7a271041b526e389efb0e40b6a18b3aaf658e82ed1c78631fd23b4c3eb27c3faec8685,2fd9fdfd244b0a7342f886b87b3dddce54c8870fb26a71a8f6520231 +447797e2899b72a356ba55bf4df3acca6cdb1041eb477bd1834a9f9acbc340a294d729f2f97df3a610be0ff15edb9c6d5db41644b9874360140fc64f52aa03f0286c8a640670067a84e017926a70438db1bb361defee7317021425f8821def26d1efd77fc853b818545d055adc9284796e583c76e6fe74c9ac2587aa46aa8f8804f2feb5836cc4b3ababab8429a5783e17d5999f32242eb59ef30cd7adabc16d72dbdb097623047c98989f88d14eaf02a7212be16ec2d07981aaa99949ddf89ecd90333a77bc4e1988a82abf7c7caf3291,1b6be19d72199bf75fd4075e54975afa0433b9bf515bd300ce543d41 +9f2c18ade9b380c784e170fb763e9aa205f64303067eb1bcea93df5dac4bf5a2e00b78195f808df24fc76e26cb7be31dc35f0844cded1567bba29858cffc97fb29010331b01d6a3fb3159cc1b973d255da9843e34a0a4061cabdb9ed37f241bfabb3c20d32743f4026b59a4ccc385a2301f83c0b0a190b0f2d01acb8f0d41111e10f2f4e149379275599a52dc089b35fdd5234b0cfb7b6d8aebd563ca1fa653c5c021dfd6f5920e6f18bfafdbecbf0ab00281333ed50b9a999549c1c8f8c63d7626c48322e9791d5ff72294049bde91e73f8,a46b89b64b0c7930dd45f5b2582fd79c7ad90a58c94c52f9bfa55cfc +ae159f3fa33619002ae6bcce8cbbdd7d28e5ed9d61534595c4c9f43c402a9bb31f3b301cbfd4a43ce4c24cd5c9849cc6259eca90e2a79e01ffbac07ba0e147fa42676a1d668570e0396387b5bcd599e8e66aaed1b8a191c5a47547f61373021fa6deadcb55363d233c24440f2c73dbb519f7c9fa5a8962efd5f6252c0407f190dfefad707f3c7007d69ff36b8489a5b6b7c557e79dd4f50c06511f599f56c896b35c917b63ba35c6ff8092baf7d1658e77fc95d8a6a43eeb4c01f33f03877f92774be89c1114dd531c011e53a34dc248a2f0e6,21f0d8855387241d71a712e5f5682c156b9fd2aa6284294718853f0a +3b8e97c5ffc2d6a40fa7de7fcefc90f3b12c940e7ab415321e29ee692dfac799b009c99dcddb708fce5a178c5c35ee2b8617143edc4c40b4d313661f49abdd93cea79d117518805496fe6acf292c4c2a1f76b403a97d7c399daf85b46ad84e16246c67d6836757bde336c290d5d401e6c1386ab32797af6bb251e9b2d8fe754c47482b72e0b394eab76916126fd68ea7d65eb93d59f5b4c5ac40f7c3b37e7f3694f29424c24af8c8f0ef59cd9dbf1d28e0e10f799a6f78cad1d45b9db3d7dee4a7059abe99182714983b9c9d44d7f5643596d4f3,82ee85541d7a5b2a2b290003c3ee46574d58a7ddd54fbc210f8fea57 +3434ec31b10fafdbfeec0dd6bd94e80f7ba9dca19ef075f7eb017512af66d6a4bcf7d16ba0819a1892a6372f9b35bcc7ca8155ee19e8428bc22d214856ed5fa9374c3c09bde169602cc219679f65a1566fc7316f4cc3b631a18fb4449fa6afa16a3db2bc4212eff539c67cf184680826535589c7111d73bffce431b4c40492e763d9279560aaa38eb2dc14a212d723f994a1fe656ff4dd14551ce4e7c621b2aa5604a10001b2878a897a28a08095c325e10a26d2fb1a75bfd64c250309bb55a44f23bbac0d5516a1c687d3b41ef2fbbf9cc56d4739,278dd8a3f3208191cff658b8d6db35e133a16e47aa375edb92c6a737 +7c7953d81c8d208fd1c97681d48f49dd003456de60475b84070ef4847c333b74575b1fc8d2a186964485a3b8634feaa3595aaa1a2f4595a7d6b6153563dee31bbac443c8a33eed6d5d956a980a68366c2527b550ee950250dfb691eacbd5d56ae14b970668be174c89df2fea43ae52f13142639c884fd62a3683c0c3792f0f24ab1318bcb27e21f4737fab62c77ea38bc8fd1cf41f7dab64c13febe7152bf5bb7ab5a78f5346d43cc741cb6f72b7b8980f268b68bf62abdfb1577a52438fe14b591498cc95f071228460c7c5d5ceb4a7bde588e7f21c,b50527711c047def70b17cf20f970bed79c1c1b95275c2784c3903de +7a6a4f4fdc59a1d223381ae5af498d74b7252ecf59e389e49130c7eaee626e7bd9897effd92017f4ccde66b0440462cdedfd352d8153e6a4c8d7a0812f701cc737b5178c2556f07111200eb627dbc299caa792dfa58f35935299fa3a3519e9b03166dffa159103ffa35e8577f7c0a86c6b46fe13db8e2cdd9dcfba85bdddcce0a7a8e155f81f712d8e9fe646153d3d22c811bd39f830433b2213dd46301941b59293fd0a33e2b63adbd95239bc01315c46fdb678875b3c81e053a40f581cfbec24a1404b1671a1b88a6d06120229518fb13a74ca0ac5ae,f77cb5275212c92fa0dad921b65f50814822e3d6d584c89528990f02 +d9faa14cebe9b7de551b6c0765409a33938562013b5e8e0e1e0a6418df7399d0a6a771fb81c3ca9bd3bb8e2951b0bc792525a294ebd1083688806fe5e7f1e17fd4e3a41d00c89e8fcf4a363caedb1acb558e3d562f1302b3d83bb886ed27b76033798131dab05b4217381eaaa7ba15ec820bb5c13b516dd640eaec5a27d05fdfca0f35b3a5312146806b4c0275bcd0aaa3b2017f346975db566f9b4d137f4ee10644c2a2da66deeca5342e236495c3c6280528bfd32e90af4cd9bb908f34012b52b4bc56d48cc8a6b59bab014988eabd12e1a0a1c2e170e7,76ca9e685dfadc67576d44e8c1a82e8cf7e92fb0a81fe49e21108e09 +2d8427433d0c61f2d96cfe80cf1e932265a191365c3b61aaa3d6dcc039f6ba2ad52a6a8cc30fc10f705e6b7705105977fa496c1c708a277a124304f1fc40911e7441d1b5e77b951aad7b01fd5db1b377d165b05bbf898042e39660caf8b279fe5229d1a8db86c0999ed65e53d01ccbc4b43173ccf992b3a14586f6ba42f5fe30afa8ae40c5df29966f9346da5f8b35f16a1de3ab6de0f477d8d8660918060e88b9b9e9ca6a4207033b87a812dbf5544d39e4882010f82b6ce005f8e8ff6fe3c3806bc2b73c2b83afb704345629304f9f86358712e9fae3ca3e,abd313bc70b7fab0ebc167d739b54c97389e752ee1a313b12673f51c +5e19d97887fcaac0387e22c6f803c34a3dacd2604172433f7a8a7a526ca4a2a1271ecfc5d5d7be5ac0d85d921095350dfc65997d443c21c8094e0a3fefd2961bcb94aed03291ae310ccda75d8ace4bc7d89e7d3e5d1650bda5d668b8b50bfc8e608e184f4d3a9a2badc4ff5f07e0c0bc8a9f2e0b2a26fd6d8c550008faaab75fd71af2a424bec9a7cd9d83fad4c8e9319115656a8717d3b523a68ff8004258b9990ed362308461804ba3e3a7e92d8f2ffae5c2fba55ba5a3c27c0a2f71bd711d2fe1799c2adb31b200035481e9ee5c4adf2ab9c0fa50b23975cf,f79f6356328c580b811fea81c5ed90a303caf34a09beb143be450d42 +c8e976ab4638909387ce3b8d4e510c3230e5690e02c45093b1d297910abc481e56eea0f296f98379dfc9080af69e73b2399d1c143bee80ae1328162ce1ba7f6a8374679b20aacd380eb4e61382c99998704d62701afa914f9a2705cdb065885f50d086c3eb5753700c387118bb142f3e6da1e988dfb31ac75d7368931e45d1391a274b22f83ceb072f9bcabc0b216685bfd789f5023971024b1878a205442522f9ea7d8797a4102a3df41703768251fd5e017c85d1200a464118aa35654e7ca39f3c375b8ef8cbe7534dbc64bc20befb417cf60ec92f63d9ee7397,299d62f8df5eade6871883b033b830a9952a74b12f3d55af798c6997 +7145fa124b7429a1fc2231237a949ba7201bcc1822d3272de005b682398196c25f7e5cc2f289fbf44415f699cb7fe6757791b1443410234ae061edf623359e2b4e32c19bf88450432dd01caa5eb16a1dc378f391ca5e3c4e5f356728bddd4975db7c890da8bbc84cc73ff244394d0d48954978765e4a00b593f70f2ca082673a261ed88dbcef1127728d8cd89bc2c597e9102ced6010f65fa75a14ebe467fa57ce3bd4948b6867d74a9df5c0ec6f530cbf2ee61ce6f06bc8f2864dff5583776b31df8c7ffcb61428a56bf7bd37188b4a5123bbf338393af46eda85e6,82ba2b8d65e14fdac51f609f888881db8070a0b70d7892c009a1ad28 +7fdfadcc9d29bad23ae038c6c65cda1aef757221b8872ed3d75ff8df7da0627d266e224e812c39f7983e4558bfd0a1f2bef3feb56ba09120ef762917b9c093867948547aee98600d10d87b20106878a8d22c64378bf634f7f75900c03986b077b0bf8b740a82447b61b99fee5376c5eb6680ec9e3088f0bdd0c56883413d60c1357d3c811950e5890e7600103c916341b80c743c6a852b7b4fb60c3ba21f3bc15b8382437a68454779cf3cd7f9f90ccc8ef28d0b706535b1e4108eb5627bb45d719cb046839aee311ca1abdc8319e050d67972cb35a6b1601b25dbf487,f8e5218db087d38b1c773247fc22704c1fbdb20b1500e26afa0b7572 +988638219fd3095421f826f56e4f09e356296b628c3ce6930c9f2e758fd1a80c8273f2f61e4daae65c4f110d3e7ca0965ac7d24e34c0dc4ba2d6ff0bf5bbe93b3585f354d7543cb542a1aa54674d375077f2d360a8f4d42f3db131c3b7ab7306267ba107659864a90c8c909460a73621d1f5d9d3fd95beb19b23db1cb6c0d0fba91d36891529b8bd8263caa1bab56a4affaed44962df096d8d5b1eb845ef31188b3e10f1af811a13f156beb7a288aae593ebd1471b624aa1a7c6adf01e2200b3d72d88a3aed3100c88231e41efc376906f0b580dc895f080fda5741db1cb,fa602f09b28f8679771e9c3966032b80fa2f0f33e84f3ed69be7ae9c +5aab62756d307a669d146aba988d9074c5a159b3de85151a819b117ca1ff6597f6156e80fdd28c9c3176835164d37da7da11d94e09add770b68a6e081cd22ca0c004bfe7cd283bf43a588da91f509b27a6584c474a4a2f3ee0f1f56447379240a5ab1fb77fdca49b305f07ba86b62756fb9efb4fc225c86845f026ea542076b91a0bc2cdd136e122c659be259d98e5841df4c2f60330d4d8cdee7bf1a0a244524eecc68ff2aef5bf0069c9e87a11c6e519de1a4062a10c83837388f7ef58598a3846f49d499682b683c4a062b421594fafbc1383c943ba83bdef515efcf10d,c8d7568889dd6fcbc3b8874ed79051875d3ce29102df0c5dac8aeb8a +47b8216aa0fbb5d67966f2e82c17c07aa2d6327e96fcd83e3de7333689f3ee79994a1bf45082c4d725ed8d41205cb5bcdf5c341f77facb1da46a5b9b2cbc49eadf786bcd881f371a95fa17df73f606519aea0ff79d5a11427b98ee7f13a5c00637e2854134691059839121fea9abe2cd1bcbbbf27c74caf3678e05bfb1c949897ea01f56ffa4dafbe8644611685c617a3206c7a7036e4ac816799f693dafe7f19f303ce4eba09d21e03610201bfc665b72400a547a1e00fa9b7ad8d84f84b34aef118515e74def11b9188bd1e1f97d9a12c30132ec2806339bdadacda2fd8b78,d83b06d509d332164087c0c3fa50b2264cb27f66d746b0470166cbc2 +8cff1f67fe53c098896d9136389bd8881816ccab34862bb67a656e3d98896f3ce6ffd4da73975809fcdf9666760d6e561c55238b205d8049c1cedeef374d1735daa533147bfa960b2cce4a4f254176bb4d1bd1e89654432b8dbe1a135c42115b394b024856a2a83dc85d6782be4b444239567ccec4b184d4548eae3ff6a192f343292ba2e32a0f267f31cc26719eb85245d415fb897ac2da433ee91a99424c9d7f1766a44171d1651001c38fc79294accc68ceb5665d36218454d3ba169ae058a831338c17743603f81ee173bfc0927464f9bd728dee94c6aeab7aae6ee3a627e8,386147b0cf2365346e9846d3f3a7dceeb6e3665ba7d1593c08b2b582 +eacd07971cff9b9939903f8c1d8cbb5d4db1b548a85d04e037514a583604e787f32992bf2111b97ac5e8a938233552731321522ab5e8583561260b7d13ebeef785b23a41fd8576a6da764a8ed6d822d4957a545d5244756c18aa80e1aad4d1f9c20d259dee1711e2cc8fd013169fb7cc4ce38b362f8e0936ae9198b7e838dcea4f7a5b9429bb3f6bbcf2dc92565e3676c1c5e6eb3dd2a0f86aa23edd3d0891f197447692794b3dfa269611ad97f72b795602b4fdb198f3fd3eb41b415064256e345e8d8c51c555dc8a21904a9b0f1ad0effab7786aac2da3b196507e9f33ca356427,a69c0c18a712408d8fa2389acabc3bf6f6412f69783e9f37960d0b56 +23ac4e9a42c6ef45c3336ce6dfc2ff7de8884cd23dc912fef0f7756c09d335c189f3ad3a23697abda851a81881a0c8ccafc980ab2c702564c2be15fe4c4b9f10dfb2248d0d0cb2e2887fd4598a1d4acda897944a2ffc580ff92719c95cf2aa42dc584674cb5a9bc5765b9d6ddf5789791d15f8dd925aa12bffafbce60827b490bb7df3dda6f2a143c8bf96abc903d83d59a791e2d62814a89b8080a28060568cf24a80ae61179fe84e0ffad00388178cb6a617d37efd54cc01970a4a41d1a8d3ddce46edbba4ab7c90ad565398d376f431189ce8c1c33e132feae6a8cd17a61c630012,0699fd35416d83791dc8e656f22718b09da9e3df6e7f37a250e22dcd +0172df732282c9d488669c358e3492260cbe91c95cfbc1e3fea6c4b0ec129b45f242ace09f152fc6234e1bee8aab8cd56e8b486e1dcba9c05407c2f95da8d8f1c0af78ee2ed82a3a79ec0cb0709396ee62aadb84f8a4ee8a7ccca3c1ee84e302a09ea802204afecf04097e67d0f8e8a9d2651126c0a598a37081e42d168b0ae8a71951c524259e4e2054e535b779679bdade566fe55700858618e626b4a0faf895bcce9011504a49e05fd56127eae3d1f8917afb548ecadabda1020111fec9314c413498a360b08640549a22cb23c731ace743252a8227a0d2689d4c6001606678dfb921,bf6a3598a15e28b776229f4d124d403fad9d0fbc2b7668c95d8b5046 +3875b9240cf3e0a8b59c658540f26a701cf188496e2c2174788b126fd29402d6a75453ba0635284d08835f40051a2a9683dc92afb9383719191231170379ba6f4adc816fecbb0f9c446b785bf520796841e58878b73c58d3ebb097ce4761fdeabe15de2f319dfbaf1742cdeb389559c788131a6793e193856661376c81ce9568da19aa6925b47ffd77a43c7a0e758c37d69254909ff0fbd415ef8eb937bcd49f91468b49974c07dc819abd67395db0e05874ff83dddab895344abd0e7111b2df9e58d76d85ad98106b36295826be04d435615595605e4b4bb824b33c4afeb5e7bb0d19f909,56f8e9f69a399e528996c463d65f20db41406533c7df2ba1afa2494a +747cc1a59fefba94a9c75ba866c30dc5c1cb0c0f8e9361d98484956dd5d1a40f6184afbe3dac9f76028d1caeccfbf69199c6ce2b4c092a3f4d2a56fe5a33a00757f4d7dee5dfb0524311a97ae0668a47971b95766e2f6dd48c3f57841f91f04a00ad5ea70f2d479a2620dc5cd78eaab3a3b011719b7e78d19ddf70d9423798af77517ebc55392fcd01fc600d8d466b9e7a7a85bf33f9cc5419e9bd874ddfd60981150ddaf8d7febaa4374f0872a5628d318000311e2f5655365ad4d407c20e5c04df17a222e7deec79c5ab1116d8572f91cd06e1ccc7ced53736fc867fd49ecebe6bf8082e8a,9904d57dedb935427f235a0009612235f14e9426b218e028f87b3c0c +57af971fccaec97435dc2ec9ef0429bcedc6b647729ea168858a6e49ac1071e706f4a5a645ca14e8c7746d65511620682c906c8b86ec901f3dded4167b3f00b06cbfac6aee3728051b3e5ff10b4f9ed8bd0b8da94303c833755b3ca3aeddf0b54bc8d6632138b5d25bab03d17b3458a9d782108006f5bb7de75b5c0ba854b423d8bb801e701e99dc4feaad59bc1c7112453b04d33ea3635639fb802c73c2b71d58a56bbd671b18fe34ed2e3dca38827d63fdb1d4fb3285405004b2b3e26081a8ff08cd6d2b08f8e7b7e90a2ab1ed7a41b1d0128522c2f8bff56a7fe67969422ce839a9d4608f03,ff7013679ab2be65aedd09739f56f8dd0072738b86e71a2470476c8c +04e16dedc1227902baaf332d3d08923601bdd64f573faa1bb7201918cfe16b1e10151dae875da0c0d63c59c3dd050c4c6a874011b018421afc4623ab0381831b2da2a8ba42c96e4f70864ac44e106f94311051e74c77c1291bf5db9539e69567bf6a11cf6932bbbad33f8946bf5814c066d851633d1a513510039b349939bfd42b858c21827c8ff05f1d09b1b0765dc78a135b5ca4dfba0801bcaddfa175623c8b647eacfb4444b85a44f73890607d06d507a4f8393658788669f6ef4deb58d08c50ca0756d5e2f49d1a7ad73e0f0b3d3b5f090acf622b1878c59133e4a848e05153592ea81c6fbf,9dfb6a854a33914eae1596dcd2be363a96e7e088be520f60e5a65c7f +7c815c384eee0f288ece27cced52a01603127b079c007378bc5d1e6c5e9e6d1c735723acbbd5801ac49854b2b569d4472d33f40bbb8882956245c366dc3582d71696a97a4e19557e41e54dee482a14229005f93afd2c4a7d8614d10a97a9dfa07f7cd946fa45263063ddd29db8f9e34db60daa32684f0072ea2a9426ecebfa5239fb67f29c18cbaa2af6ed4bf4283936823ac1790164fec5457a9cba7c767ca59392d94cab7448f50eb34e9a93a80027471ce59736f099c886dea1ab4cba4d89f5fc7ae2f21ccd27f611eca4626b2d08dc22382e92c1efb2f6afdc8fdc3d2172604f5035c46b8197d3,c27e80c373b216703d3d9e67223cfc5497c3e74455d49b049ae3f5f4 +e29d505158dbdd937d9e3d2145658ee6f5992a2fc790f4f608d9cdb44a091d5b94b88e81fac4fdf5c49442f13b911c55886469629551189eaff62488f1a479b7db11a1560e198ddccccf50159093425ff7f1cb8d1d1246d0978764087d6bac257026b090efae8cec5f22b6f21c59ace1ac7386f5b8837ca6a12b6fbf5534dd0560ef05ca78104d3b943ddb220feaec89aa5e692a00f822a2ab9a2fe60350d75e7be16ff2526dc643872502d01f42f188abed0a6e9a6f5fd0d1ce7d5755c9ffa66b0af0b20bd806f08e06156690d81ac811778ca3dac2c249b96002017fce93e507e3b953acf99964b847,3a189630f53c567b1c1825794d50def901a00e7f3728ecf2bbe00d90 +d85588696f576e65eca0155f395f0cfacd83f36a99111ed5768df2d116d2121e32357ba4f54ede927f189f297d3a97fad4e9a0f5b41d8d89dd7fe20156799c2b7b6bf9c957ba0d6763f5c3bc5129747bbb53652b49290cff1c87e2cdf2c4b95d8aaee09bc8fbfa6883e62d237885810491bfc101f1d8c636e3d0ede838ad05c207a3df4fad76452979eb99f29afaecedd1c63b8d36cf378454a1bb67a741c77ac6b6b3f95f4f02b64dabc15438613ea49750df42ee90101f115aa9abb9ff64324dde9dabbb01054e1bd6b4bcdc7930a44c2300d87ca78c06924d0323ad7887e46c90e8c4d100acd9eed21e,2585bd8d9158d6952bee95b004f5fed70faf061b68ab2d6a40469be7 +3a12f8508b40c32c74492b66323375dcfe49184c78f73179f3314b79e63376b8ac683f5a51f1534bd729b02b04d002f55cbd8e8fc9b5ec1ea6bbe6a0d0e7431518e6ba45d124035f9d3dce0a8bb7bf1430a9f657e0b4ea9f20eb20c786a58181a1e20a96f1628f8728a13bdf7a4b4b32fc8aa7054cc4881ae7fa19afa65c6c3ee1b3ade3192af42054a8a911b8ec1826865d46d93f1e7c5e2b7813c92a506e53886f3d4701bb93d2a681ad109c845904bb861af8af0646b6e399b38b614051d34f6842563a0f37ec00cb3d865fc5d746c4987de2a65071100883a2a9c7a2bfe1e2dd603d9ea24dc7c5fd06be,7e64f3c5895d0586cc5b543b27de1b66a935171e2e7f3ca48dd3718e +1861edce46fa5ad17e1ff1deae084dec580f97d0a67885dfe834b9dfac1ae076742ce9e267512ca51f6df5a455af0c5fd6abf94acea103a3370c354485a7846fb84f3ac7c2904b5b2fbf227002ce512133bb7e1c4e50057bfd1e44db33c7cdb969a99e284b184f50a14b068a1fc5009d9b298dbe92239572a7627aac02abe8f3e3b473417f36d4d2505d16b7577f4526c9d94a270a2dfe450d06da8f6fa956879a0a55cfe99e742ea555ea477ba3e9b44ccd508c375423611af92e55345dc215779b2d5119eba49c71d49b9fe3f1569fa24e5ca3e332d042422a8b8158d3ec66a80012976f31ffdf305f0c9c5e,0f837708e010375af87f75415ed69988fe60eb2f2669ad051fa99727 +08d0ffde3a6e4ef65608ea672e4830c12943d7187ccff08f4941cfc13e545f3b9c7ad5eebbe2b01642b486caf855c2c73f58c1e4e3391da8e2d63d96e15fd84953ae5c231911b00ad6050cd7aafdaac9b0f663ae6aab45519d0f5391a541707d479034e73a6ad805ae3598096af078f1393301493d663dd71f83869ca27ba508b7e91e81e128c1716dc3acfe3084b2201e04cf8006617eecf1b640474a5d45cfde9f4d3ef92d6d055b909892194d8a8218db6d8203a84261d200d71473d7488f3427416b6896c137d455f231071cacbc86e0415ab88aec841d96b7b8af41e05bb461a40645bf176601f1e760de5f,c79de39778593810c03583d5962b36e04f343653074766d157a15993 +d782abb72a5be3392757be02d3e45be6e2099d6f000d042c8a543f50ed6ebc055a7f133b0dd8e9bc348536edcaae2e12ec18e8837df7a1b3c87ec46d50c241dee820fd586197552dc20beea50f445a07a38f1768a39e2b2ff05dddedf751f1def612d2e4d810daa3a0cc904516f9a43af660315385178a529e51f8aae141808c8bc5d7b60cac26bb984ac1890d0436ef780426c547e94a7b08f01acbfc4a3825eae04f520a9016f2fb8bf5165ed12736fc71e36a49a73614739eaa3ec834069b1b40f1350c2b3ab885c02c640b9f7686ed5f99527e41cfcd796fe4c256c9173186c226169ff257954ebda81c0e5f99,95cc811cc56521a40e3ced8d9a230e2101e8061fb01e388b9964bf29 +5fce8109a358570e40983e1184e541833bb9091e280f258cfb144387b05d190e431cb19baa67273ba0c58abe91308e1844dcd0b3678baa42f335f2fa05267a0240b3c718a5942b3b3e3bfa98a55c25a1466e8d7a603722cb2bbf03afa54cd769a99f310735ee5a05dae2c22d397bd95635f58c48a67f90e1b73aafcd3f82117f0166657838691005b18da6f341d6e90fc1cdb352b30fae45d348294e501b63252de14740f2b85ae5299ddec3172de8b6d0ba219a20a23bb5e10ff434d39db3f583305e9f5c039d98569e377b75a70ab837d1df269b8a4b566f40bb91b577455fd3c356c914fa06b9a7ce24c7317a172d,2ebe13f12ec43e3f6b0506d7ab216e1c311394f7c89d69a920cd00c0 +6172f1971a6e1e4e6170afbad95d5fec99bf69b24b674bc17dd78011615e502de6f56b86b1a71d3f4348087218ac7b7d09302993be272e4a591968aef18a1262d665610d1070ee91cc8da36e1f841a69a7a682c580e836941d21d909a3afc1f0b963e1ca5ab193e124a1a53df1c587470e5881fb54dae1b0d840f0c8f9d1b04c645ba1041c7d8dbf22030a623aa15638b3d99a2c400ff76f3252079af88d2b37f35ee66c1ad7801a28d3d388ac450b97d5f0f79e4541755356b3b1a5696b023f39ab7ab5f28df4202936bc97393b93bc915cb159ea1bd7a0a414cb4b7a1ac3af68f50d79f0c9c7314e750f7d02faa58bfa,820101f5435d86e19bec58ed0e1c7e630fe82dd92d7704e414802a16 +5668ecd99dfbe215c4118398ac9c9eaf1a1433fab4ccdd3968064752b625ea944731f75d48a27d047d67547f14dd0ffaa55fa5e29f7af0d161d85eafc4f2029b717c918eab9d304543290bdba7158b68020c0ba4e079bc95b5bc0fc044a992b94b4ccd3bd66d0eabb5dbbab904d62e00752c4e3b0091d773bcf4c14b4377da3efff824b1cb2fa01b32d1e46c909e626ed2dae920f4c7dbeb635bc754facbd8d49beba3f23c1c41ccbfcd0ee0c114e69737f5597c0bf1d859f0c767e18002ae8e39c26261ffde2920d3d0baf0e906138696cfe5b7e32b600f45df3aaa39932f3a7df95b60fa8712a2271fcaf3911ce7b511b1,b1cf54f51f81fdb5b649bb6115126149296278bff3d5395cf5f112d4 +03d625488354df30e3f875a68edfcf340e8366a8e1ab67f9d5c5486a96829dfac0578289082b2a62117e1cf418b43b90e0adc881fc6ae8105c888e9ecd21aea1c9ae1a4038dfd17378fed71d02ae492087d7cdcd98f746855227967cb1ab4714261ee3bead3f4db118329d3ebef4bc48a875c19ba763966da0ebea800e01b2f50b00e9dd4caca6dcb314d00184ef71ea2391d760c950710db4a70f9212ffc54861f9dc752ce18867b8ad0c48df8466ef7231e7ac567f0eb55099e622ebb86cb237520190a61c66ad34f1f4e289cb3282ae3eaac6152ed24d2c92bae5a7658252a53c49b7b02dfe54fdb2e90074b6cf310ac661,b602722d1b9f31b9c5091e0ff720f1d1a8a51eb6f95ed3b412de063d +2edc282ffb90b97118dd03aaa03b145f363905e3cbd2d50ecd692b37bf000185c651d3e9726c690d3773ec1e48510e42b17742b0b0377e7de6b8f55e00a8a4db4740cee6db0830529dd19617501dc1e9359aa3bcf147e0a76b3ab70c4984c13e339e6806bb35e683af8527093670859f3d8a0fc7d493bcba6bb12b5f65e71e705ca5d6c948d66ed3d730b26db395b3447737c26fad089aa0ad0e306cb28bf0acf106f89af3745f0ec72d534968cca543cd2ca50c94b1456743254e358c1317c07a07bf2b0eca438a709367fafc89a57239028fc5fecfd53b8ef958ef10ee0608b7f5cb9923ad97058ec067700cc746c127a61ee3,1368454e849f2d2299077f40826b4072e6fee49b2062cb8e3b4523c9 +90b28a6aa1fe533915bcb8e81ed6cacdc10962b7ff82474f845eeb86977600cf70b07ba8e3796141ee340e3fce842a38a50afbe90301a3bdcc591f2e7d9de53e495525560b908c892439990a2ca2679c5539ffdf636777ad9c1cdef809cda9e8dcdb451abb9e9c17efa4379abd24b182bd981cafc792640a183b61694301d04c5b3eaad694a6bd4cc06ef5da8fa23b4fa2a64559c5a68397930079d250c51bcf00e2b16a6c49171433b0aadfd80231276560b80458dd77089b7a1bbcc9e7e4b9f881eacd6c92c4318348a13f4914eb27115a1cfc5d16d7fd94954c3532efaca2cab025103b2d02c6fd71da3a77f417d7932685888a,5765b70574f93341c1cc4acb34f645b5d97b81d4ce8f38c3862f6c19 +2969447d175490f2aa9bb055014dbef2e6854c95f8d60950bfe8c0be8de254c26b2d31b9e4de9c68c9adf49e4ee9b1c2850967f29f5d08738483b417bb96b2a56f0c8aca632b552059c59aac3f61f7b45c966b75f1d9931ff4e596406378cee91aaa726a3a84c33f37e9cdbe626b5745a0b06064a8a8d56e53aaf102d23dd9df0a3fdf7a638509a6761a33fa42fa8ddbd8e16159c93008b53765019c3f0e9f10b144ce2ac57f5d7297f9c9949e4ff68b70d339f87501ce8550b772f32c6da8ad2ce2100a895d8b08fa1eead7c376b407709703c510b50f87e73e43f8e7348f87c3832a547ef2bbe5799abedcf5e1f372ea809233f006,b8fb318245b4042222b4063a053f15da6b894f22736f3f9e26f72175 +721645633a44a2c78b19024eaecf58575ab23c27190833c26875dc0f0d50b46aea9c343d82ea7d5b3e50ec700545c615daeaea64726a0f05607576dcd396d812b03fb6551c641087856d050b10e6a4d5577b82a98afb89cee8594c9dc19e79feff0382fcfd127f1b803a4b9946f4ac9a4378e1e6e041b1389a53e3450cd32d9d2941b0cbabdb50da8ea2513145164c3ab6bcbd251c448d2d4b087ac57a59c2285d564f16da4ed5e607ed979592146ffb0ef3f3db308fb342df5eb5924a48256fc763141a278814c82d6d6348577545870ae3a83c7230ac02a1540fe1798f7ef09e335a865a2ae0949b21e4f748fb8a51f44750e213a8fb,353622e92c7907f5563baf8f4e7af0c2f872f4fb583b01af9eb3d907 +6b860d39725a14b498bb714574b4d37ca787404768f64c648b1751b353ac92bac2c3a28ea909fdf0423336401a02e63ec24325300d823b6864bb701f9d7c7a1f8ec9d0ae3584aa6dd62ea1997cd831b4babd9a4da50932d4efda745c61e4130890e156aee6113716daf95764222a91187db2effea49d5d0596102d619bd26a616bbfda8335505fbb0d90b4c180d1a2335b91538e1668f9f9642790b4e55f9cab0fe2bdd2935d001ee6419abab5457880d0dbff20ed8758f4c20fe759efb33141cf0e892587fe8187e5fbc57786b7e8b089612c936dfc03d27efbbe7c8673f1606bd51d5ff386f4a7ab68edf59f385eb1291f117bfe717399,87215af73d5cde98b355479afb82a511180b7dc3d5342c88e133aed8 +6a01830af3889a25183244decb508bd01253d5b508ab490d3124afbf42626b2e70894e9b562b288d0a2450cfacf14a0ddae5c04716e5a0082c33981f6037d23d5e045ee1ef2283fb8b6378a914c5d9441627a722c282ff452e25a7ea608d69cee4393a0725d17963d0342684f255496d8a18c2961145315130549311fc07f0312fb78e6077334f87eaa873bee8aa95698996eb21375eb2b4ef53c14401207deb4568398e5dd9a7cf97e8c9663e23334b46912f8344c19efcf8c2ba6f04325f1a27e062b62a58d0766fc6db4d2c6a1928604b0175d872d16b7908ebc041761187cc785526c2a3873feac3a642bb39f5351550af9770c328af7b,25ae852dba36b8d58a94dd5cfd8345141ff57e7db7d7816c4f7252bb +b3c5e74b69933c2533106c563b4ca20238f2b6e675e8681e34a389894785bdade59652d4a73d80a5c85bd454fd1e9ffdad1c3815f5038e9ef432aac5c3c4fe840cc370cf86580a6011778bbedaf511a51b56d1a2eb68394aa299e26da9ada6a2f39b9faff7fba457689b9c1a577b2a1e505fdf75c7a0a64b1df81b3a356001bf0df4e02a1fc59f651c9d585ec6224bb279c6beba2966e8882d68376081b987468e7aed1ef90ebd090ae825795cdca1b4f09a979c8dfc21a48d8a53cdbb26c4db547fc06efe2f9850edd2685a4661cb4911f165d4b63ef25b87d0a96d3dff6ab0758999aad214d07bd4f133a6734fde445fe474711b69a98f7e2b,ece0394418f066f55023797551e06f6a7d1645682aa4d9dd75af8e76 +83af34279ccb5430febec07a81950d30f4b66f484826afee7456f0071a51e1bbc55570b5cc7ec6f9309c17bf5befdd7c6ba6e968cf218a2b34bd5cf927ab846e38a40bbd81759e9e33381016a755f699df35d660007b5eadf292feefb735207ebf70b5bd17834f7bfa0e16cb219ad4af524ab1ea37334aa66435e5d397fc0a065c411ebbce32c240b90476d307ce802ec82c1c49bc1bec48c0675ec2a6c6f3ed3e5b741d13437095707c565e10d8a20b8c20468ff9514fcf31b4249cd82dcee58c0a2af538b291a87e3390d737191a07484a5d3f3fb8c8f15ce056e5e5f8febe5e1fb59d6740980aa06ca8a0c20f5712b4cde5d032e92ab89f0ae1,84a4bd2e3fa26c4fb01fe81953398f5b4b5704944354b51b887fd990 +a7ed84749ccc56bb1dfba57119d279d412b8a986886d810f067af349e8749e9ea746a60b03742636c464fc1ee233acc52c1983914692b64309edfdf29f1ab912ec3e8da074d3f1d231511f5756f0b6eead3e89a6a88fe330a10face267bffbfc3e3090c7fd9a850561f363ad75ea881e7244f80ff55802d5ef7a1a4e7b89fcfa80f16df54d1b056ee637e6964b9e0ffd15b6196bdd7db270c56b47251485348e49813b4eb9ed122a01b3ea45ad5e1a929df61d5c0f3e77e1fdc356b63883a60e9cbb9fc3e00c2f32dbd469659883f690c6772e335f617bc33f161d6f6984252ee12e62b6000ac5231e0c9bc65be223d8dfd94c5004a101af9fd6c0fb,170c413863d9f4e8c0b87a8532416b10a69c348d3a144658eaeef0ed +a6fe30dcfcda1a329e82ab50e32b5f50eb25c873c5d2305860a835aecee6264aa36a47429922c4b8b3afd00da16035830edb897831c4e7b00f2c23fc0b15fdc30d85fb70c30c431c638e1a25b51caf1d7e8b050b7f89bfb30f59f0f20fecff3d639abc4255b3868fc45dd81e47eb12ab40f2aac735df5d1dc1ad997cefc4d836b854cee9ac02900036f3867fe0d84afff37bde3308c2206c62c4743375094108877c73b87b2546fe05ea137bedfc06a2796274099a0d554da8f7d7223a48cbf31b7decaa1ebc8b145763e3673168c1b1b715c1cd99ecd3ddb238b06049885ecad9347c2436dff32c771f34a38587a44a82c5d3d137a03caa27e66c8ff6,d8c257db76536f7ef1dcfb24976eb716d9491cd8651e0254e7c4a5bb +83167ff53704c3aa19e9fb3303539759c46dd4091a52ddae9ad86408b69335989e61414bc20ab4d01220e35241eff5c9522b079fba597674c8d716fe441e566110b6211531ceccf8fd06bc8e511d00785e57788ed9a1c5c73524f01830d2e1148c92d0edc97113e3b7b5cd3049627abdb8b39dd4d6890e0ee91993f92b03354a88f52251c546e64434d9c3d74544f23fb93e5a2d2f1fb15545b4e1367c97335b0291944c8b730ad3d4789273fa44fb98d78a36c3c3764abeeac7c569c1e43a352e5b770c3504f87090dee075a1c4c85c0c39cf421bdcc615f9eff6cb4fe6468004aece5f30e1ecc6db22ad9939bb2b0ccc96521dfbf4ae008b5b46bc006e,f81d8ee40869bb38a13a4f75588fa3308068dd1cdc27267d66fac198 +3a3a819c48efde2ad914fbf00e18ab6bc4f14513ab27d0c178a188b61431e7f5623cb66b23346775d386b50e982c493adbbfc54b9a3cd383382336a1a0b2150a15358f336d03ae18f666c7573d55c4fd181c29e6ccfde63ea35f0adf5885cfc0a3d84a2b2e4dd24496db789e663170cef74798aa1bbcd4574ea0bba40489d764b2f83aadc66b148b4a0cd95246c127d5871c4f11418690a5ddf01246a0c80a43c70088b6183639dcfda4125bd113a8f49ee23ed306faac576c3fb0c1e256671d817fc2534a52f5b439f72e424de376f4c565cca82307dd9ef76da5b7c4eb7e085172e328807c02d011ffbf33785378d79dc266f6a5be6bb0e4a92eceebaeb1,94689ea9f347dda8dd798a858605868743c6bd03a6a65c6085d52bed +# EOF diff --git a/Lib/test/vectors/sha3_256.txt b/Lib/test/vectors/sha3_256.txt new file mode 100644 index 0000000000000000000000000000000000000000..cf86cfe2a8e3f855de8e4544cbbcc6966a920707 --- /dev/null +++ b/Lib/test/vectors/sha3_256.txt @@ -0,0 +1,258 @@ +# ShortMsgKAT_SHA3-256.txt +,a7ffc6f8bf1ed76651c14756a061d662f580ff4de43b49fa82d80a4b80f8434a +cc,677035391cd3701293d385f037ba32796252bb7ce180b00b582dd9b20aaad7f0 +41fb,39f31b6e653dfcd9caed2602fd87f61b6254f581312fb6eeec4d7148fa2e72aa +1f877c,bc22345e4bd3f792a341cf18ac0789f1c9c966712a501b19d1b6632ccd408ec5 +c1ecfdfc,c5859be82560cc8789133f7c834a6ee628e351e504e601e8059a0667ff62c124 +21f134ac57,55bd9224af4eed0d121149e37ff4d7dd5be24bd9fbe56e0171e87db7a6f4e06d +c6f50bb74e29,ae0cbc757d4ab088e172abfd8746289950f92d38a25295658dbf744b5635af04 +119713cc83eeef,e340c9a44373efcc212f3cb66a047ac34c87ff1c58c4a14b16a2bfc34698bb1d +4a4f202484512526,ba4fb009d57a5ceb85fc64d54e5c55a55854b41cc47ad15294bc41f32165dfba +1f66ab4185ed9b6375,b9886ef905c8bdd272eda8298865e0769869f1c964460d1aa9d7a0c687707ccd +eed7422227613b6f53c9,fab8f88d3191e21a725b21c63a02cad3fa7c450ef8584b94cfa382f393422455 +eaeed5cdffd89dece455f1,9363acd3f48bb91a8998aa0e8df75c971770a16a71e7d2334409734cd7d0a9ee +5be43c90f22902e4fe8ed2d3,16932f6f65deaad5780e25ab410c66b0e4198eba9f4ed1a25ee24f7879faefe2 +a746273228122f381c3b46e4f1,1c28100e0ef50671c7ea3e024fa3ba9da2ebddb4de264c3a2426c36ad3f91c61 +3c5871cd619c69a63b540eb5a625,8183be4875fab7ec5f99ed94f5f900cf1d6b953d8f71e1e7cc008687980e613a +fa22874bcc068879e8ef11a69f0722,3b1a6d21fe44691dac4eb7c593a6d8523cb606e63cf00e94d711a574248daca5 +52a608ab21ccdd8a4457a57ede782176,2c7e7cb356fdc68ec8927e499d2a6bae2b781817919c829ebbe8225baed46967 +82e192e4043ddcd12ecf52969d0f807eed,c7b12eff692d842110cc39ac60616707acb3f9b0f1cb361b94577efc529ca26c +75683dcb556140c522543bb6e9098b21a21e,493ebaebc04776f4e067555afa09b58c850fdf1b0e22d4bf006ce41c091dc762 +06e4efe45035e61faaf4287b4d8d1f12ca97e5,1d01f3120ecfbdd28dce44317666cf864f52391b9eca3843db45667c2e0a98ad +e26193989d06568fe688e75540aea06747d9f851,2c1e61e5d45203f27b86f1293a80bab34192daf42b8623b12005b2fb1c18acb1 +d8dc8fdefbdce9d44e4cbafe78447bae3b5436102a,ad0e3f29767067e929d1cecd95582df8f2a9beb92eaa27eeb315f620365a9244 +57085fd7e14216ab102d8317b0cb338a786d5fc32d8f,2b4eb5de20e86074cabb55bfa63a5c8c6ae15679302061845b9cf233e17c906b +a05404df5dbb57697e2c16fa29defac8ab3560d6126fa0,6ae04c6c6f3651f1f64c0ad69733990b41747c93f87acb813bb25bb1fc0eff07 +aecbb02759f7433d6fcb06963c74061cd83b5b3ffa6f13c6,40f9f55bc55da466bc3dc1f89835a64094572de73d64ed6646a1d3b667be70a9 +aafdc9243d3d4a096558a360cc27c8d862f0be73db5e88aa55,c64becf7b75fc885d5853924f2b7d37abcefd3da126bb817697e1a09152b1ebe +7bc84867f6f9e9fdc3e1046cae3a52c77ed485860ee260e30b15,57d46a6bc8fab33601538dad27f98c66443032cc3912434c28eb88d0af44c52c +fac523575a99ec48279a7a459e98ff901918a475034327efb55843,7c956503d5b4dbb764ff8e66fa74ce0f9132da90ea3543f669c9dd08e413e33c +0f8b2d8fcfd9d68cffc17ccfb117709b53d26462a3f346fb7c79b85e,6de164a9626d5a4f54d854ac158994f35a8e362ecc753f55182790934a2e0d06 +a963c3e895ff5a0be4824400518d81412f875fa50521e26e85eac90c04,b760312bd1b279fc672479d21c5ed349e5fe96f08940237b4515452721c49a16 +03a18688b10cc0edf83adf0a84808a9718383c4070c6c4f295098699ac2c,94fc255de4ef19c0da4b09b2e2fac21f20048b46f17c30685abe40d5c743f375 +84fb51b517df6c5accb5d022f8f28da09b10232d42320ffc32dbecc3835b29,39a4a0ffc4603698ae0a4f3d24b1bc42ac7a2d7d923e7a5d602453e82d5323c5 +9f2fcc7c90de090d6b87cd7e9718c1ea6cb21118fc2d5de9f97e5db6ac1e9c10,2f1a5f7159e34ea19cddc70ebf9b81f1a66db40615d7ead3cc1f1b954d82a3af +de8f1b3faa4b7040ed4563c3b8e598253178e87e4d0df75e4ff2f2dedd5a0be046,1c57fe0e38cd3a124eaa6cd87f70a079bccc073a341e8c0eb1976fb3a3f7b774 +62f154ec394d0bc757d045c798c8b87a00e0655d0481a7d2d9fb58d93aedc676b5a0,a905603b186ef4f2d5b2d1bcfda504c68ed5eb9b0c7b7ea2a001575f5aa69e68 +b2dcfe9ff19e2b23ce7da2a4207d3e5ec7c6112a8a22aec9675a886378e14e5bfbad4e,fffd39f7c451788eb0316f429ea0a7c0ac8091657aca28f1560ed5775e8c4c12 +47f5697ac8c31409c0868827347a613a3562041c633cf1f1f86865a576e02835ed2c2492,6f55becd168e0939ba2fa090257b1727fc66491a44493279a5beacb9e3435324 +512a6d292e67ecb2fe486bfe92660953a75484ff4c4f2eca2b0af0edcdd4339c6b2ee4e542,84649bffcd48527b9288e8da5f52fbab2604dc5a91c4b0b87d477dbd7b40b6ae +973cf2b4dcf0bfa872b41194cb05bb4e16760a1840d8343301802576197ec19e2a1493d8f4fb,d4055b4e3e2aea1c67cc99fd409d574e53e1e296cf9eef73c472ab92a6cb6609 +80beebcd2e3f8a9451d4499961c9731ae667cdc24ea020ce3b9aa4bbc0a7f79e30a934467da4b0,5694ca2f3b9962226a87163ab38325bcdc898a732dfeb2c36db4eb88616b8741 +7abaa12ec2a7347674e444140ae0fb659d08e1c66decd8d6eae925fa451d65f3c0308e29446b8ed3,8cf287ad03ab4a74086620cfa4cce74f48fa5cdb15ec02b1f721736a4f849e60 +c88dee9927679b8af422abcbacf283b904ff31e1cac58c7819809f65d5807d46723b20f67ba610c2b7,c5d5af22a4df9acd0c056fa30d8e240b679a20d4d2630260f779ff815ca82d7d +01e43fe350fcec450ec9b102053e6b5d56e09896e0ddd9074fe138e6038210270c834ce6eadc2bb86bf6,0ac75279adff65660464550a283fecd4e0610d88f35574c3d7ac5d22262a2fe8 +337023370a48b62ee43546f17c4ef2bf8d7ecd1d49f90bab604b839c2e6e5bd21540d29ba27ab8e309a4b7,81917ae290dbba17289a8a67e5c2e8b12d3dde0efe9f990198a1763ff4f3dda7 +6892540f964c8c74bd2db02c0ad884510cb38afd4438af31fc912756f3efec6b32b58ebc38fc2a6b913596a8,138e75e72fddd927e591315af8d3aba280efa36230a3309a97bcde5a78c31589 +f5961dfd2b1ffffda4ffbf30560c165bfedab8ce0be525845deb8dc61004b7db38467205f5dcfb34a2acfe96c0,21bcdad3fef3e5b859cb0912a2991efa661bad812747292ef0f79a8fcc6b4e98 +ca061a2eb6ceed8881ce2057172d869d73a1951e63d57261384b80ceb5451e77b06cf0f5a0ea15ca907ee1c27eba,8d6fd9c559b0b4948f91337916084c0082a16a0755b0a00811096e973e48b3c8 +1743a77251d69242750c4f1140532cd3c33f9b5ccdf7514e8584d4a5f9fbd730bcf84d0d4726364b9bf95ab251d9bb,1dd23ae7aadd61e712bdd82bd60a70dd9d66c9fd79dbfd8669e3eaabf7901cdc +d8faba1f5194c4db5f176fabfff856924ef627a37cd08cf55608bba8f1e324d7c7f157298eabc4dce7d89ce5162499f9,34f8607ec10c092c1ba0b6565ce6197062c4e1a35a8e8c723e48a2d2416c3790 +be9684be70340860373c9c482ba517e899fc81baaa12e5c6d7727975d1d41ba8bef788cdb5cf4606c9c1c7f61aed59f97d,19a8577fc90fae5d6a6b2e0c1ff155515502cfa1757029c09bebbfa263d9a363 +7e15d2b9ea74ca60f66c8dfab377d9198b7b16deb6a1ba0ea3c7ee2042f89d3786e779cf053c77785aa9e692f821f14a7f51,9d9dbb4ce7d01d009e72a66051acc16805e49f598cbe430c5d4c22a881a64b3f +9a219be43713bd578015e9fda66c0f2d83cac563b776ab9f38f3e4f7ef229cb443304fba401efb2bdbd7ece939102298651c86,13f0d951b64481135466cfccbe52418cc1d03fb16b5b696c35d724f6f55cbb6d +c8f2b693bd0d75ef99caebdc22adf4088a95a3542f637203e283bbc3268780e787d68d28cc3897452f6a22aa8573ccebf245972a,fb2fe7b00b75c42305cf31de14d98f904e8c46dc57bb6f94c282ca8c13dc45db +ec0f99711016c6a2a07ad80d16427506ce6f441059fd269442baaa28c6ca037b22eeac49d5d894c0bf66219f2c08e9d0e8ab21de52,d54cbf7d5c80ae11a0d0bad4e95ab18b5f07c970621f3936447a48eef818d06e +0dc45181337ca32a8222fe7a3bf42fc9f89744259cff653504d6051fe84b1a7ffd20cb47d4696ce212a686bb9be9a8ab1c697b6d6a33,ff050a45adeef4cfc7d964102ba877c80320a37794893e6865965ec2547cd4c9 +de286ba4206e8b005714f80fb1cdfaebde91d29f84603e4a3ebc04686f99a46c9e880b96c574825582e8812a26e5a857ffc6579f63742f,1bc1bcc70f638958db1006af37b02ebd8954ec59b3acbad12eacedbc5b21e908 +eebcc18057252cbf3f9c070f1a73213356d5d4bc19ac2a411ec8cdeee7a571e2e20eaf61fd0c33a0ffeb297ddb77a97f0a415347db66bcaf,f7bde239ad087aa7dabe42cc4d3c49380a026cd239a7faaf34a2233469a44a4d +416b5cdc9fe951bd361bd7abfc120a5054758eba88fdd68fd84e39d3b09ac25497d36b43cbe7b85a6a3cebda8db4e5549c3ee51bb6fcb6ac1e,ef845aac2aaf0a793108204ff380e0a30f2558e7acde4531ab22f8ec79e26a69 +5c5faf66f32e0f8311c32e8da8284a4ed60891a5a7e50fb2956b3cbaa79fc66ca376460e100415401fc2b8518c64502f187ea14bfc9503759705,26db514e01e034c678b636d40ba367da2f37f67078bb576ff2b8559b3517484d +7167e1e02be1a7ca69d788666f823ae4eef39271f3c26a5cf7cee05bca83161066dc2e217b330df821103799df6d74810eed363adc4ab99f36046a,5dbd4b558463196211465c1fc32401fc2d8e41ebc5e6badd1d8f7c4f090f728f +2fda311dbba27321c5329510fae6948f03210b76d43e7448d1689a063877b6d14c4f6d0eaa96c150051371f7dd8a4119f7da5c483cc3e6723c01fb7d,355c79fd6e6fa88ed402b6979fde1ed805498abeb101f4231b5d64d1439d552d +95d1474a5aab5d2422aca6e481187833a6212bd2d0f91451a67dd786dfc91dfed51b35f47e1deb8a8ab4b9cb67b70179cc26f553ae7b569969ce151b8d,3d9c9bf09d88211c7e0056112d073ee85d00acaa4da7a668fa017b3273cd4d4b +c71bd7941f41df044a2927a8ff55b4b467c33d089f0988aa253d294addbdb32530c0d4208b10d9959823f0c0f0734684006df79f7099870f6bf53211a88d,67980d28e2e658e7a24a2593a28167a13d907d06f47729d47ca4fe1772f8b3df +f57c64006d9ea761892e145c99df1b24640883da79d9ed5262859dcda8c3c32e05b03d984f1ab4a230242ab6b78d368dc5aaa1e6d3498d53371e84b0c1d4ba,a8df6b76df41994f7593f1a81967e77ee180e31183d1c4a569db854e61e99b05 +e926ae8b0af6e53176dbffcc2a6b88c6bd765f939d3d178a9bde9ef3aa131c61e31c1e42cdfaf4b4dcde579a37e150efbef5555b4c1cb40439d835a724e2fae7,27a6441ee939b46e2c378d7afeb0e891c47a28120e488eff0ab71af08788ceb3 +16e8b3d8f988e9bb04de9c96f2627811c973ce4a5296b4772ca3eefeb80a652bdf21f50df79f32db23f9f73d393b2d57d9a0297f7a2f2e79cfda39fa393df1ac00,c4bb067383002db44ca773918bb74104b604a583e12b06be56c270f8b43512f2 +fc424eeb27c18a11c01f39c555d8b78a805b88dba1dc2a42ed5e2c0ec737ff68b2456d80eb85e11714fa3f8eabfb906d3c17964cb4f5e76b29c1765db03d91be37fc,ae773915ca642d80413330c9e0ee9bd06653c0023c5c0277100f3b1526eaa51d +abe3472b54e72734bdba7d9158736464251c4f21b33fbbc92d7fac9a35c4e3322ff01d2380cbaa4ef8fb07d21a2128b7b9f5b6d9f34e13f39c7ffc2e72e47888599ba5,1cf9d6ce9cb658556b76cd7eba3e51393699ad500b1ab3f56172748db7f59667 +36f9f0a65f2ca498d739b944d6eff3da5ebba57e7d9c41598a2b0e4380f3cf4b479ec2348d015ffe6256273511154afcf3b4b4bf09d6c4744fdd0f62d75079d440706b05,8d60e889e2b1020dad4b523301f5f6bbab6c781af276085af6765546fcfb95ac +abc87763cae1ca98bd8c5b82caba54ac83286f87e9610128ae4de68ac95df5e329c360717bd349f26b872528492ca7c94c2c1e1ef56b74dbb65c2ac351981fdb31d06c77a4,dd4ff4b530552f48af9a7530a6464819ed1a5b733084f709e41daf1acb35ecfd +94f7ca8e1a54234c6d53cc734bb3d3150c8ba8c5f880eab8d25fed13793a9701ebe320509286fd8e422e931d99c98da4df7e70ae447bab8cffd92382d8a77760a259fc4fbd72,7ac8d4bb53fc434dd8712daefeb474668f541418e6f617dba523d8392eb0766e +13bd2811f6ed2b6f04ff3895aceed7bef8dcd45eb121791bc194a0f806206bffc3b9281c2b308b1a729ce008119dd3066e9378acdcc50a98a82e20738800b6cddbe5fe9694ad6d,f7b0e15a63232a2b800b23b311d357617ddfd1293e1ffe3f772692ade3427152 +1eed9cba179a009ec2ec5508773dd305477ca117e6d569e66b5f64c6bc64801ce25a8424ce4a26d575b8a6fb10ead3fd1992edddeec2ebe7150dc98f63adc3237ef57b91397aa8a7,b3d05af7e8c406a7c2709223791d3f5f4b3129329993220053a36293ac2b0e06 +ba5b67b5ec3a3ffae2c19dd8176a2ef75c0cd903725d45c9cb7009a900c0b0ca7a2967a95ae68269a6dbf8466c7b6844a1d608ac661f7eff00538e323db5f2c644b78b2d48de1a08aa,6c47e2ea4ba29e17792defc4b707754c4664bde15168a5100bf881ec7c02b258 +0efa26ac5673167dcacab860932ed612f65ff49b80fa9ae65465e5542cb62075df1c5ae54fba4db807be25b070033efa223bdd5b1d3c94c6e1909c02b620d4b1b3a6c9fed24d70749604,82a66bed668dcc14af12c14c976ce650049e9d1d9969b83d1dd3b6f1c07d252b +bbfd933d1fd7bf594ac7f435277dc17d8d5a5b8e4d13d96d2f64e771abbd51a5a8aea741beccbddb177bcea05243ebd003cfdeae877cca4da94605b67691919d8b033f77d384ca01593c1b,2f21d07d7b10683b9ac7a63e9fcc70cf9f887cb905f9bff5332551288b288524 +90078999fd3c35b8afbf4066cbde335891365f0fc75c1286cdd88fa51fab94f9b8def7c9ac582a5dbcd95817afb7d1b48f63704e19c2baa4df347f48d4a6d603013c23f1e9611d595ebac37c,80202f01e7140db4fee490dcc50afafdf6a48ca33d362c7875b8e8db9c9d0655 +64105eca863515c20e7cfbaa0a0b8809046164f374d691cdbd6508aaabc1819f9ac84b52bafc1b0fe7cddbc554b608c01c8904c669d8db316a0953a4c68ece324ec5a49ffdb59a1bd6a292aa0e,b2330a189047e3117479a2f20b3407a7d119e4ad431fe06ff1ff2a106f2ab3a2 +d4654be288b9f3b711c2d02015978a8cc57471d5680a092aa534f7372c71ceaab725a383c4fcf4d8deaa57fca3ce056f312961eccf9b86f14981ba5bed6ab5b4498e1f6c82c6cae6fc14845b3c8a,bb9b9bb685c241f8d63fdbf0dbaabcef7075add7ba405a2fffe7ad5b23e021c7 +12d9394888305ac96e65f2bf0e1b18c29c90fe9d714dd59f651f52b88b3008c588435548066ea2fc4c101118c91f32556224a540de6efddbca296ef1fb00341f5b01fecfc146bdb251b3bdad556cd2,f8316a367aa0316da3562f319d522e81f4a8bd2e2108d2532126f4a903704ba3 +871a0d7a5f36c3da1dfce57acd8ab8487c274fad336bc137ebd6ff4658b547c1dcfab65f037aa58f35ef16aff4abe77ba61f65826f7be681b5b6d5a1ea8085e2ae9cd5cf0991878a311b549a6d6af230,89e3ebd02b229cd759612a5521d867ab2a1594bc0b1fe6a78b7954ccc84caf03 +e90b4ffef4d457bc7711ff4aa72231ca25af6b2e206f8bf859d8758b89a7cd36105db2538d06da83bad5f663ba11a5f6f61f236fd5f8d53c5e89f183a3cec615b50c7c681e773d109ff7491b5cc22296c5,2e7cc875305ea6bb9c2fc770b9d84fd93b96405df9b93307f6b5de26e135724c +e728de62d75856500c4c77a428612cd804f30c3f10d36fb219c5ca0aa30726ab190e5f3f279e0733d77e7267c17be27d21650a9a4d1e32f649627638dbada9702c7ca303269ed14014b2f3cf8b894eac8554,ecab75f28a728429cb433ec13310d1b850ccf522c38d2fa6dfa489963d6d6ca7 +6348f229e7b1df3b770c77544e5166e081850fa1c6c88169db74c76e42eb983facb276ad6a0d1fa7b50d3e3b6fcd799ec97470920a7abed47d288ff883e24ca21c7f8016b93bb9b9e078bdb9703d2b781b616e,021c9459d1451f3da4c07c029a8681945c87c5bebc6c30da1d95c5c49d8ab95c +4b127fde5de733a1680c2790363627e63ac8a3f1b4707d982caea258655d9bf18f89afe54127482ba01e08845594b671306a025c9a5c5b6f93b0a39522dc877437be5c2436cbf300ce7ab6747934fcfc30aeaaf6,4642e21622f15b09b9413659680116bf2f96cac2384b8c79f1328d5dd36d7a01 +08461f006cff4cc64b752c957287e5a0faabc05c9bff89d23fd902d324c79903b48fcb8f8f4b01f3e4ddb483593d25f000386698f5ade7faade9615fdc50d32785ea51d49894e45baa3dc707e224688c6408b68b11,8daa47c3572157266ad0276d5926aff2872f06b0cd7b974a80d7a6827d41d782 +68c8f8849b120e6e0c9969a5866af591a829b92f33cd9a4a3196957a148c49138e1e2f5c7619a6d5edebe995acd81ec8bb9c7b9cfca678d081ea9e25a75d39db04e18d475920ce828b94e72241f24db72546b352a0e4,345365232ce9afc655dce4bac23f43c8acbdf9016d4bc2344be8d396a4919c34 +b8d56472954e31fb54e28fca743f84d8dc34891cb564c64b08f7b71636debd64ca1edbdba7fc5c3e40049ce982bba8c7e0703034e331384695e9de76b5104f2fbc4535ecbeebc33bc27f29f18f6f27e8023b0fbb6f563c,f52e102e57293878c28f29deb47792324fe455a62fa7441aabcc16a9cfc40ffa +0d58ac665fa84342e60cefee31b1a4eacdb092f122dfc68309077aed1f3e528f578859ee9e4cefb4a728e946324927b675cd4f4ac84f64db3dacfe850c1dd18744c74ceccd9fe4dc214085108f404eab6d8f452b5442a47d,2b89aa88b1b7f9f8ea461c4c5cae4829125f45f5697deadb8db2e964524c0d91 +1755e2d2e5d1c1b0156456b539753ff416651d44698e87002dcf61dcfa2b4e72f264d9ad591df1fdee7b41b2eb00283c5aebb3411323b672eaa145c5125185104f20f335804b02325b6dea65603f349f4d5d8b782dd3469ccd,3f3092365982c0b4278055beee9032ff9d1060e03c3b087e1a6197defc707e1a +b180de1a611111ee7584ba2c4b020598cd574ac77e404e853d15a101c6f5a2e5c801d7d85dc95286a1804c870bb9f00fd4dcb03aa8328275158819dcad7253f3e3d237aeaa7979268a5db1c6ce08a9ec7c2579783c8afc1f91a7,3c74aae2f340a24178cbab51004cba1aac3d91133c300715ea82c177269c0556 +cf3583cbdfd4cbc17063b1e7d90b02f0e6e2ee05f99d77e24e560392535e47e05077157f96813544a17046914f9efb64762a23cf7a49fe52a0a4c01c630cfe8727b81fb99a89ff7cc11dca5173057e0417b8fe7a9efba6d95c555f,0157c4ba44618ded11e9800afa07a0d5b6c711fc16a576c5edb71c4cc6894f82 +072fc02340ef99115bad72f92c01e4c093b9599f6cfc45cb380ee686cb5eb019e806ab9bd55e634ab10aa62a9510cc0672cd3eddb589c7df2b67fcd3329f61b1a4441eca87a33c8f55da4fbbad5cf2b2527b8e983bb31a2fadec7523,8d53dba107aaacb8422d6667f6778839f8965f8e4c8f4a851284cc91168a9030 +76eecf956a52649f877528146de33df249cd800e21830f65e90f0f25ca9d6540fde40603230eca6760f1139c7f268deba2060631eea92b1fff05f93fd5572fbe29579ecd48bc3a8d6c2eb4a6b26e38d6c5fbf2c08044aeea470a8f2f26,5163f02233e332ad9be32c2346c9fcfe39afa5fbe9bc1cfeb92f4920155b20ec +7adc0b6693e61c269f278e6944a5a2d8300981e40022f839ac644387bfac9086650085c2cdc585fea47b9d2e52d65a2b29a7dc370401ef5d60dd0d21f9e2b90fae919319b14b8c5565b0423cefb827d5f1203302a9d01523498a4db10374,faaf0e95217ca4b1568751ef2e4cd341d9ec33e16600bf09b92c6f1a6df84d2e +e1fffa9826cce8b86bccefb8794e48c46cdf372013f782eced1e378269b7be2b7bf51374092261ae120e822be685f2e7a83664bcfbe38fe8633f24e633ffe1988e1bc5acf59a587079a57a910bda60060e85b5f5b6f776f0529639d9cce4bd,b2c175d9d92aaa9ee72672f995b8dfd2daaf6555a0327a508218a9b447f00be8 +69f9abba65592ee01db4dce52dbab90b08fc04193602792ee4daa263033d59081587b09bbe49d0b49c9825d22840b2ff5d9c5155f975f8f2c2e7a90c75d2e4a8040fe39f63bbafb403d9e28cc3b86e04e394a9c9e8065bd3c85fa9f0c7891600,fb5388122306d37cee790cad1d3cddba8e9a93d5f9d78288b052482739c883fd +38a10a352ca5aedfa8e19c64787d8e9c3a75dbf3b8674bfab29b5dbfc15a63d10fae66cd1a6e6d2452d557967eaad89a4c98449787b0b3164ca5b717a93f24eb0b506ceb70cbbcb8d72b2a72993f909aad92f044e0b5a2c9ac9cb16a0ca2f81f49,1c2f8d418ff6718b18dd4c756dcc8ed0f4755e8c22497a6cc19f8d7ae7fd2da7 +6d8c6e449bc13634f115749c248c17cd148b72157a2c37bf8969ea83b4d6ba8c0ee2711c28ee11495f43049596520ce436004b026b6c1f7292b9c436b055cbb72d530d860d1276a1502a5140e3c3f54a93663e4d20edec32d284e25564f624955b52,7ea8116e6434c1caa049069dbbd9b6f0e9dc6cdfd6a889343d3b2652803078fc +6efcbcaf451c129dbe00b9cef0c3749d3ee9d41c7bd500ade40cdc65dedbbbadb885a5b14b32a0c0d087825201e303288a733842fa7e599c0c514e078f05c821c7a4498b01c40032e9f1872a1c925fa17ce253e8935e4c3c71282242cb716b2089ccc1,736d888751faac4d8e78b45b95abb15d40d98d8038c7225be0f523d5439ea5b6 +433c5303131624c0021d868a30825475e8d0bd3052a022180398f4ca4423b98214b6beaac21c8807a2c33f8c93bd42b092cc1b06cedf3224d5ed1ec29784444f22e08a55aa58542b524b02cd3d5d5f6907afe71c5d7462224a3f9d9e53e7e0846dcbb4ce,90e10b1ca8d352794d7dbd7bae410bef25f0ec7d080e053f48674237e33ea45f +a873e0c67ca639026b6683008f7aa6324d4979550e9bce064ca1e1fb97a30b147a24f3f666c0a72d71348ede701cf2d17e2253c34d1ec3b647dbcef2f879f4eb881c4830b791378c901eb725ea5c172316c6d606e0af7df4df7f76e490cd30b2badf45685f,8a0a8d6d55cccbe05ec74dc273b16d66c9b9006665eecb5b6023d2ea39c64554 +006917b64f9dcdf1d2d87c8a6173b64f6587168e80faa80f82d84f60301e561e312d9fbce62f39a6fb476e01e925f26bcc91de621449be6504c504830aae394096c8fc7694651051365d4ee9070101ec9b68086f2ea8f8ab7b811ea8ad934d5c9b62c60a4771,122895d63aa6030fc8f23940c528e7a5d9c7fb170a79fe7bc42360ce50e25b7a +f13c972c52cb3cc4a4df28c97f2df11ce089b815466be88863243eb318c2adb1a417cb1041308598541720197b9b1cb5ba2318bd5574d1df2174af14884149ba9b2f446d609df240ce335599957b8ec80876d9a085ae084907bc5961b20bf5f6ca58d5dab38adb,3e04ee539505c52d814cab3c5cdd7df2d6eee627ea44188153ea6b8c8be5f6c2 +e35780eb9799ad4c77535d4ddb683cf33ef367715327cf4c4a58ed9cbdcdd486f669f80189d549a9364fa82a51a52654ec721bb3aab95dceb4a86a6afa93826db923517e928f33e3fba850d45660ef83b9876accafa2a9987a254b137c6e140a21691e1069413848,e360b424a5c06704d148352e04f4651f8d3b385c01f24fda09d266d4ed7ff662 +64ec021c9585e01ffe6d31bb50d44c79b6993d72678163db474947a053674619d158016adb243f5c8d50aa92f50ab36e579ff2dabb780a2b529370daa299207cfbcdd3a9a25006d19c4f1fe33e4b1eaec315d8c6ee1e730623fd1941875b924eb57d6d0c2edc4e78d6,0d3becb9e1b4ae1f15c9ee98732b4796e99fd799f76ed7332a68ab36c77a1ef9 +5954bab512cf327d66b5d9f296180080402624ad7628506b555eea8382562324cf452fba4a2130de3e165d11831a270d9cb97ce8c2d32a96f50d71600bb4ca268cf98e90d6496b0a6619a5a8c63db6d8a0634dfc6c7ec8ea9c006b6c456f1b20cd19e781af20454ac880,3aadd7e2086d383832489aa3088e903f5c6fa8e38df2cf876e0b4dcddca5c923 +03d9f92b2c565709a568724a0aff90f8f347f43b02338f94a03ed32e6f33666ff5802da4c81bdce0d0e86c04afd4edc2fc8b4141c2975b6f07639b1994c973d9a9afce3d9d365862003498513bfa166d2629e314d97441667b007414e739d7febf0fe3c32c17aa188a8683,715ced5776a802eb8ee02c9d46543ff46fe7a9cd192fa7d4ffb6e81427fe1b71 +f31e8b4f9e0621d531d22a380be5d9abd56faec53cbd39b1fab230ea67184440e5b1d15457bd25f56204fa917fa48e669016cb48c1ffc1e1e45274b3b47379e00a43843cf8601a5551411ec12503e5aac43d8676a1b2297ec7a0800dbfee04292e937f21c005f17411473041,dde61f8be25b8b23e1212c1c0b8a85a0d02d8548bb17d377133e3c06ddb58ca2 +758ea3fea738973db0b8be7e599bbef4519373d6e6dcd7195ea885fc991d896762992759c2a09002912fb08e0cb5b76f49162aeb8cf87b172cf3ad190253df612f77b1f0c532e3b5fc99c2d31f8f65011695a087a35ee4eee5e334c369d8ee5d29f695815d866da99df3f79403,059f2bedf4a6eefb95fc5c0ae17556ce8bddc5e1880fab2f688a03a46bb28c5f +47c6e0c2b74948465921868804f0f7bd50dd323583dc784f998a93cd1ca4c6ef84d41dc81c2c40f34b5bee6a93867b3bdba0052c5f59e6f3657918c382e771d33109122cc8bb0e1e53c4e3d13b43ce44970f5e0c079d2ad7d7a3549cd75760c21bb15b447589e86e8d76b1e9ced2,125b0ee7870a6f7eb4fd965d9e0b90d79fffbc54a2018f4c68224682f3603f3f +f690a132ab46b28edfa6479283d6444e371c6459108afd9c35dbd235e0b6b6ff4c4ea58e7554bd002460433b2164ca51e868f7947d7d7a0d792e4abf0be5f450853cc40d85485b2b8857ea31b5ea6e4ccfa2f3a7ef3380066d7d8979fdac618aad3d7e886dea4f005ae4ad05e5065f,9a78e0b5a34cbf1716f14cf7b67efdc4540a75cc646538a11a8efd9d7cd7529f +58d6a99bc6458824b256916770a8417040721cccfd4b79eacd8b65a3767ce5ba7e74104c985ac56b8cc9aebd16febd4cda5adb130b0ff2329cc8d611eb14dac268a2f9e633c99de33997fea41c52a7c5e1317d5b5daed35eba7d5a60e45d1fa7eaabc35f5c2b0a0f2379231953322c4e,42305a251a8009edfd62c7d91910b96b9b5dd8fda5b1326fe41ef6eef978d1be +befab574396d7f8b6705e2d5b58b2c1c820bb24e3f4bae3e8fbcd36dbf734ee14e5d6ab972aedd3540235466e825850ee4c512ea9795abfd33f330d9fd7f79e62bbb63a6ea85de15beaeea6f8d204a28956059e2632d11861dfb0e65bc07ac8a159388d5c3277e227286f65ff5e5b5aec1,6b9e8f3e82ea174ebc88a53c5ded06271d38f79e9cec571a9d195ef549102eb8 +8e58144fa9179d686478622ce450c748260c95d1ba43b8f9b59abeca8d93488da73463ef40198b4d16fb0b0707201347e0506ff19d01bea0f42b8af9e71a1f1bd168781069d4d338fdef00bf419fbb003031df671f4a37979564f69282de9c65407847dd0da505ab1641c02dea4f0d834986,358de4c1ed30f48b084f961f653febc69318f93883612d5a04b9139a14ec702e +b55c10eae0ec684c16d13463f29291bf26c82e2fa0422a99c71db4af14dd9c7f33eda52fd73d017cc0f2dbe734d831f0d820d06d5f89dacc485739144f8cfd4799223b1aff9031a105cb6a029ba71e6e5867d85a554991c38df3c9ef8c1e1e9a7630be61caabca69280c399c1fb7a12d12aefc,4a7bd18ae10eb9458924aa5ca00d3f634ab9753628107f15ff2bf24ccd3b94f4 +2eeea693f585f4ed6f6f8865bbae47a6908aecd7c429e4bec4f0de1d0ca0183fa201a0cb14a529b7d7ac0e6ff6607a3243ee9fb11bcf3e2304fe75ffcddd6c5c2e2a4cd45f63c962d010645058d36571404a6d2b4f44755434d76998e83409c3205aa1615db44057db991231d2cb42624574f545,9889e4b3b1294a01556fa9de6a6a508a9a763d5133fdcd4937b6bb23ca3e1901 +dab11dc0b047db0420a585f56c42d93175562852428499f66a0db811fcdddab2f7cdffed1543e5fb72110b64686bc7b6887a538ad44c050f1e42631bc4ec8a9f2a047163d822a38989ee4aab01b4c1f161b062d873b1cfa388fd301514f62224157b9bef423c7783b7aac8d30d65cd1bba8d689c2d,3d02b41985bdd1835cb474fb364c25c2cca9da0ed2fbbab75524b410903815b9 +42e99a2f80aee0e001279a2434f731e01d34a44b1a8101726921c0590c30f3120eb83059f325e894a5ac959dca71ce2214799916424e859d27d789437b9d27240bf8c35adbafcecc322b48aa205b293962d858652abacbd588bcf6cbc388d0993bd622f96ed54614c25b6a9aa527589eaaffcf17ddf7,1cd92039be4580c686796d5900eed431ebad6ea566e9244e76ba6873efcb49ab +3c9b46450c0f2cae8e3823f8bdb4277f31b744ce2eb17054bddc6dff36af7f49fb8a2320cc3bdf8e0a2ea29ad3a55de1165d219adeddb5175253e2d1489e9b6fdd02e2c3d3a4b54d60e3a47334c37913c5695378a669e9b72dec32af5434f93f46176ebf044c4784467c700470d0c0b40c8a088c815816,680c70b243163be6e58ed3b8e2d85e6894e5e89501c444c8c0a2d776acad8599 +d1e654b77cb155f5c77971a64df9e5d34c26a3cad6c7f6b300d39deb1910094691adaa095be4ba5d86690a976428635d5526f3e946f7dc3bd4dbc78999e653441187a81f9adcd5a3c5f254bc8256b0158f54673dcc1232f6e918ebfc6c51ce67eaeb042d9f57eec4bfe910e169af78b3de48d137df4f2840,d65e823d2ce4effb9b27dbbf6efcda738ad152fbb12d2108d2ec6d050a3fb295 +626f68c18a69a6590159a9c46be03d5965698f2dac3de779b878b3d9c421e0f21b955a16c715c1ec1e22ce3eb645b8b4f263f60660ea3028981eebd6c8c3a367285b691c8ee56944a7cd1217997e1d9c21620b536bdbd5de8925ff71dec6fbc06624ab6b21e329813de90d1e572dfb89a18120c3f606355d25,ce6d2dd8d5441fc15b888fed72061e129125431bedea32e00ee0a7655c06c358 +651a6fb3c4b80c7c68c6011675e6094eb56abf5fc3057324ebc6477825061f9f27e7a94633abd1fa598a746e4a577caf524c52ec1788471f92b8c37f23795ca19d559d446cab16cbcdce90b79fa1026cee77bf4ab1b503c5b94c2256ad75b3eac6fd5dcb96aca4b03a834bfb4e9af988cecbf2ae597cb9097940,280713c0fa7160289fbfee5aa580ad82512839153dae47de0d154384a4d8b3ed +8aaf072fce8a2d96bc10b3c91c809ee93072fb205ca7f10abd82ecd82cf040b1bc49ea13d1857815c0e99781de3adbb5443ce1c897e55188ceaf221aa9681638de05ae1b322938f46bce51543b57ecdb4c266272259d1798de13be90e10efec2d07484d9b21a3870e2aa9e06c21aa2d0c9cf420080a80a91dee16f,721fd872696f21deaa9595c0cee7bc07249601927c96a65826b4887cdba1ae96 +53f918fd00b1701bd504f8cdea803acca21ac18c564ab90c2a17da592c7d69688f6580575395551e8cd33e0fef08ca6ed4588d4d140b3e44c032355df1c531564d7f4835753344345a6781e11cd5e095b73df5f82c8ae3ad00877936896671e947cc52e2b29dcd463d90a0c9929128da222b5a211450bbc0e02448e2,b53af8620b39cad2d698a176a070aeaa9fb67bd0335c3485a3b6c73a71dc5c5c +a64599b8a61b5ccec9e67aed69447459c8da3d1ec6c7c7c82a7428b9b584fa67e90f68e2c00fbbed4613666e5168da4a16f395f7a3c3832b3b134bfc9cbaa95d2a0fe252f44ac6681eb6d40ab91c1d0282fed6701c57463d3c5f2bb8c6a7301fb4576aa3b5f15510db8956ff77478c26a7c09bea7b398cfc83503f538e,78a18bf0a52e6f77f15f7ffe4ca3c999e57e1c3f6bf10950581f403450edb797 +0e3ab0e054739b00cdb6a87bd12cae024b54cb5e550e6c425360c2e87e59401f5ec24ef0314855f0f56c47695d56a7fb1417693af2a1ed5291f2fee95f75eed54a1b1c2e81226fbff6f63ade584911c71967a8eb70933bc3f5d15bc91b5c2644d9516d3c3a8c154ee48e118bd1442c043c7a0dba5ac5b1d5360aae5b9065,a7f0151eee6b21fe827e69256d560e1ea8d939b80962fc7fa8610ac189402ad2 +a62fc595b4096e6336e53fcdfc8d1cc175d71dac9d750a6133d23199eaac288207944cea6b16d27631915b4619f743da2e30a0c00bbdb1bbb35ab852ef3b9aec6b0a8dcc6e9e1abaa3ad62ac0a6c5de765de2c3711b769e3fde44a74016fff82ac46fa8f1797d3b2a726b696e3dea5530439acee3a45c2a51bc32dd055650b,0a09c4b18f5117f0e45d43e235bb14e55b162e99eb3744165196d04a854229f9 +2b6db7ced8665ebe9deb080295218426bdaa7c6da9add2088932cdffbaa1c14129bccdd70f369efb149285858d2b1d155d14de2fdb680a8b027284055182a0cae275234cc9c92863c1b4ab66f304cf0621cd54565f5bff461d3b461bd40df28198e3732501b4860eadd503d26d6e69338f4e0456e9e9baf3d827ae685fb1d817,b7d031aa69b7b4d26a35b896d761314f1d61eb12dcc1e72aaf61b9cd48003af9 +10db509b2cdcaba6c062ae33be48116a29eb18e390e1bbada5ca0a2718afbcd23431440106594893043cc7f2625281bf7de2655880966a23705f0c5155c2f5cca9f2c2142e96d0a2e763b70686cd421b5db812daced0c6d65035fde558e94f26b3e6dde5bd13980cc80292b723013bd033284584bff27657871b0cf07a849f4ae2,ec0858c9d017a2d3727caade7e4872684f17b822cafecda445a15cf30fac8cf0 +9334de60c997bda6086101a6314f64e4458f5ff9450c509df006e8c547983c651ca97879175aaba0c539e82d05c1e02c480975cbb30118121061b1ebac4f8d9a3781e2db6b18042e01ecf9017a64a0e57447ec7fcbe6a7f82585f7403ee2223d52d37b4bf426428613d6b4257980972a0acab508a7620c1cb28eb4e9d30fc41361ec,71e1d610b576063f2b12f691220beadf506bec0a3a086bbe5864fb54f93db556 +e88ab086891693aa535ceb20e64c7ab97c7dd3548f3786339897a5f0c39031549ca870166e477743ccfbe016b4428d89738e426f5ffe81626137f17aecff61b72dbee2dc20961880cfe281dfab5ee38b1921881450e16032de5e4d55ad8d4fca609721b0692bac79be5a06e177fe8c80c0c83519fb3347de9f43d5561cb8107b9b5edc,72a8a7493309080accca2a2a21d641f2b9685b7362be496dc7bc330659f8cfe1 +fd19e01a83eb6ec810b94582cb8fbfa2fcb992b53684fb748d2264f020d3b960cb1d6b8c348c2b54a9fcea72330c2aaa9a24ecdb00c436abc702361a82bb8828b85369b8c72ece0082fe06557163899c2a0efa466c33c04343a839417057399a63a3929be1ee4805d6ce3e5d0d0967fe9004696a5663f4cac9179006a2ceb75542d75d68,af19e988d37e2577da4f43463789b73625d354fcccbd10cd2c61fbdc8bb01827 +59ae20b6f7e0b3c7a989afb28324a40fca25d8651cf1f46ae383ef6d8441587aa1c04c3e3bf88e8131ce6145cfb8973d961e8432b202fa5af3e09d625faad825bc19da9b5c6c20d02abda2fcc58b5bd3fe507bf201263f30543819510c12bc23e2ddb4f711d087a86edb1b355313363a2de996b891025e147036087401ccf3ca7815bf3c49,f1e9b9cef2b37e4ec3a0fcd5eff5bf7e3d49100aebf018dc92fb6a40e4297704 +77ee804b9f3295ab2362798b72b0a1b2d3291dceb8139896355830f34b3b328561531f8079b79a6e9980705150866402fdc176c05897e359a6cb1a7ab067383eb497182a7e5aef7038e4c96d133b2782917417e391535b5e1b51f47d8ed7e4d4025fe98dc87b9c1622614bff3d1029e68e372de719803857ca52067cddaad958951cb2068cc6,dd3ebe0cca0cad3af72af73fb49d40dbdcc4b1f1ff465ccaefe672f77992aca0 +b771d5cef5d1a41a93d15643d7181d2a2ef0a8e84d91812f20ed21f147bef732bf3a60ef4067c3734b85bc8cd471780f10dc9e8291b58339a677b960218f71e793f2797aea349406512829065d37bb55ea796fa4f56fd8896b49b2cd19b43215ad967c712b24e5032d065232e02c127409d2ed4146b9d75d763d52db98d949d3b0fed6a8052fbb,a19eee92bb2097b64e823d597798aa18be9b7c736b8059abfd6779ac35ac81b5 +b32d95b0b9aad2a8816de6d06d1f86008505bd8c14124f6e9a163b5a2ade55f835d0ec3880ef50700d3b25e42cc0af050ccd1be5e555b23087e04d7bf9813622780c7313a1954f8740b6ee2d3f71f768dd417f520482bd3a08d4f222b4ee9dbd015447b33507dd50f3ab4247c5de9a8abd62a8decea01e3b87c8b927f5b08beb37674c6f8e380c04,df673f4105379ff6b755eeab20ceb0dc77b5286364fe16c59cc8a907aff07732 +04410e31082a47584b406f051398a6abe74e4da59bb6f85e6b49e8a1f7f2ca00dfba5462c2cd2bfde8b64fb21d70c083f11318b56a52d03b81cac5eec29eb31bd0078b6156786da3d6d8c33098c5c47bb67ac64db14165af65b44544d806dde5f487d5373c7f9792c299e9686b7e5821e7c8e2458315b996b5677d926dac57b3f22da873c601016a0d,d52432cf3b6b4b949aa848e058dcd62d735e0177279222e7ac0af8504762faa0 +8b81e9badde026f14d95c019977024c9e13db7a5cd21f9e9fc491d716164bbacdc7060d882615d411438aea056c340cdf977788f6e17d118de55026855f93270472d1fd18b9e7e812bae107e0dfde7063301b71f6cfe4e225cab3b232905a56e994f08ee2891ba922d49c3dafeb75f7c69750cb67d822c96176c46bd8a29f1701373fb09a1a6e3c7158f,07e65754d62e01b9a049d15dec0d09c02f479ca2aeb4b18e37070b20f85a1b26 +fa6eed24da6666a22208146b19a532c2ec9ba94f09f1def1e7fc13c399a48e41acc2a589d099276296348f396253b57cb0e40291bd282773656b6e0d8bea1cda084a3738816a840485fcf3fb307f777fa5feac48695c2af4769720258c77943fb4556c362d9cba8bf103aeb9034baa8ea8bfb9c4f8e6742ce0d52c49ea8e974f339612e830e9e7a9c29065,17a461b8ee507abcfed51a50ef14891309fe402c569d94394ca7a3031befcd50 +9bb4af1b4f09c071ce3cafa92e4eb73ce8a6f5d82a85733440368dee4eb1cbc7b55ac150773b6fe47dbe036c45582ed67e23f4c74585dab509df1b83610564545642b2b1ec463e18048fc23477c6b2aa035594ecd33791af6af4cbc2a1166aba8d628c57e707f0b0e8707caf91cd44bdb915e0296e0190d56d33d8dde10b5b60377838973c1d943c22ed335e,a03c6b5b51ae4aa00912af1cfb6c7b960ef58036156497cc567b1369149a5949 +2167f02118cc62043e9091a647cadbed95611a521fe0d64e8518f16c808ab297725598ae296880a773607a798f7c3cfce80d251ebec6885015f9abf7eaabae46798f82cb5926de5c23f44a3f9f9534b3c6f405b5364c2f8a8bdc5ca49c749bed8ce4ba48897062ae8424ca6dde5f55c0e42a95d1e292ca54fb46a84fbc9cd87f2d0c9e7448de3043ae22fdd229,14c69c5eabdefc9e3a1461a379ec92c32bc6b69071029cb3655159db1a5251a7 +94b7fa0bc1c44e949b1d7617d31b4720cbe7ca57c6fa4f4094d4761567e389ecc64f6968e4064df70df836a47d0c713336b5028b35930d29eb7a7f9a5af9ad5cf441745baec9bb014ceeff5a41ba5c1ce085feb980bab9cf79f2158e03ef7e63e29c38d7816a84d4f71e0f548b7fc316085ae38a060ff9b8dec36f91ad9ebc0a5b6c338cbb8f6659d342a24368cf,3cbe06887c8ae360e957eb08ca577834c457fadf418d0cb73967fa827a22a4d7 +ea40e83cb18b3a242c1ecc6ccd0b7853a439dab2c569cfc6dc38a19f5c90acbf76aef9ea3742ff3b54ef7d36eb7ce4ff1c9ab3bc119cff6be93c03e208783335c0ab8137be5b10cdc66ff3f89a1bddc6a1eed74f504cbe7290690bb295a872b9e3fe2cee9e6c67c41db8efd7d863cf10f840fe618e7936da3dca5ca6df933f24f6954ba0801a1294cd8d7e66dfafec,e58a947e98d6dd7e932d2fe02d9992e6118c0c2c606bdcda06e7943d2c95e0e5 +157d5b7e4507f66d9a267476d33831e7bb768d4d04cc3438da12f9010263ea5fcafbde2579db2f6b58f911d593d5f79fb05fe3596e3fa80ff2f761d1b0e57080055c118c53e53cdb63055261d7c9b2b39bd90acc32520cbbdbda2c4fd8856dbcee173132a2679198daf83007a9b5c51511ae49766c792a29520388444ebefe28256fb33d4260439cba73a9479ee00c63,a936fb9af87fb67857b3ead5c76226ad84da47678f3c2ffe5a39fdb5f7e63ffb +836b34b515476f613fe447a4e0c3f3b8f20910ac89a3977055c960d2d5d2b72bd8acc715a9035321b86703a411dde0466d58a59769672aa60ad587b8481de4bba552a1645779789501ec53d540b904821f32b0bd1855b04e4848f9f8cfe9ebd8911be95781a759d7ad9724a7102dbe576776b7c632bc39b9b5e19057e226552a5994c1dbb3b5c7871a11f5537011044c53,3a654b88f88086c2751edae6d39248143cf6235c6b0b7969342c45a35194b67e +cc7784a4912a7ab5ad3620aab29ba87077cd3cb83636adc9f3dc94f51edf521b2161ef108f21a0a298557981c0e53ce6ced45bdf782c1ef200d29bab81dd6460586964edab7cebdbbec75fd7925060f7da2b853b2b089588fa0f8c16ec6498b14c55dcee335cb3a91d698e4d393ab8e8eac0825f8adebeee196df41205c011674e53426caa453f8de1cbb57932b0b741d4c6,19a3cb3e8551f08fbba5db614e268f63d1f6a0c3689bbe973d59d35bb4f455d0 +7639b461fff270b2455ac1d1afce782944aea5e9087eb4a39eb96bb5c3baaf0e868c8526d3404f9405e79e77bfac5ffb89bf1957b523e17d341d7323c302ea7083872dd5e8705694acdda36d5a1b895aaa16eca6104c82688532c8bfe1790b5dc9f4ec5fe95baed37e1d287be710431f1e5e8ee105bc42ed37d74b1e55984bf1c09fe6a1fa13ef3b96faeaed6a2a1950a12153,ca8cfb13973ff8597d6aaa806bd32e82f4ea68bac3fb543f26687de4b9cbe8bd +eb6513fc61b30cfba58d4d7e80f94d14589090cf1d80b1df2e68088dc6104959ba0d583d585e9578ab0aec0cf36c48435eb52ed9ab4bbce7a5abe679c97ae2dbe35e8cc1d45b06dda3cf418665c57cbee4bbb47fa4caf78f4ee656fec237fe4eebbafa206e1ef2bd0ee4ae71bd0e9b2f54f91daadf1febfd7032381d636b733dcb3bf76fb14e23aff1f68ed3dbcf75c9b99c6f26,9ae670fa85ab5c6b3bc76797cf24cd385110708137b6f8efd8d1a21c39881c18 +1594d74bf5dde444265d4c04dad9721ff3e34cbf622daf341fe16b96431f6c4df1f760d34f296eb97d98d560ad5286fec4dce1724f20b54fd7df51d4bf137add656c80546fb1bf516d62ee82baa992910ef4cc18b70f3f8698276fcfb44e0ec546c2c39cfd8ee91034ff9303058b4252462f86c823eb15bf481e6b79cc3a02218595b3658e8b37382bd5048eaed5fd02c37944e73b,e32df6218ba75fd4788a7e5727a7d68c5829c49346683fc213e433af3dba5ab5 +4cfa1278903026f66fedd41374558be1b585d03c5c55dac94361df286d4bd39c7cb8037ed3b267b07c346626449d0cc5b0dd2cf221f7e4c3449a4be99985d2d5e67bff2923357ddeab5abcb4619f3a3a57b2cf928a022eb27676c6cf805689004fca4d41ea6c2d0a4789c7605f7bb838dd883b3ad3e6027e775bcf262881428099c7fff95b14c095ea130e0b9938a5e22fc52650f591,028173e3c6c392e5d13af748f3788d43449bc5dd5953124ea5edf3930275f665 +d3e65cb92cfa79662f6af493d696a07ccf32aaadcceff06e73e8d9f6f909209e66715d6e978788c49efb9087b170ecf3aa86d2d4d1a065ae0efc8924f365d676b3cb9e2bec918fd96d0b43dee83727c9a93bf56ca2b2e59adba85696546a815067fc7a78039629d4948d157e7b0d826d1bf8e81237bab7321312fdaa4d521744f988db6fdf04549d0fdca393d639c729af716e9c8bba48,97450fc46f2e5df8f81623b1cca43fa50f51ea735e4421d7dff66314d8e211bc +842cc583504539622d7f71e7e31863a2b885c56a0ba62db4c2a3f2fd12e79660dc7205ca29a0dc0a87db4dc62ee47a41db36b9ddb3293b9ac4baae7df5c6e7201e17f717ab56e12cad476be49608ad2d50309e7d48d2d8de4fa58ac3cfeafeee48c0a9eec88498e3efc51f54d300d828dddccb9d0b06dd021a29cf5cb5b2506915beb8a11998b8b886e0f9b7a80e97d91a7d01270f9a7717,ab4e5a70390577f8ae260d53cb0e70914f8b9398abaa841f7807f1476046c64f +6c4b0a0719573e57248661e98febe326571f9a1ca813d3638531ae28b4860f23c3a3a8ac1c250034a660e2d71e16d3acc4bf9ce215c6f15b1c0fc7e77d3d27157e66da9ceec9258f8f2bf9e02b4ac93793dd6e29e307ede3695a0df63cbdc0fc66fb770813eb149ca2a916911bee4902c47c7802e69e405fe3c04ceb5522792a5503fa829f707272226621f7c488a7698c0d69aa561be9f378,8118f2c157df1250db43b31183f442f89b322e496918838c5b668f9647ac6d6b +51b7dbb7ce2ffeb427a91ccfe5218fd40f9e0b7e24756d4c47cd55606008bdc27d16400933906fd9f30effdd4880022d081155342af3fb6cd53672ab7fb5b3a3bcbe47be1fd3a2278cae8a5fd61c1433f7d350675dd21803746cadca574130f01200024c6340ab0cc2cf74f2234669f34e9009ef2eb94823d62b31407f4ba46f1a1eec41641e84d77727b59e746b8a671bef936f05be820759fa,736e30accc5559188412c797a1a5be61d1f90f149401f631597944155a85faf7 +83599d93f5561e821bd01a472386bc2ff4efbd4aed60d5821e84aae74d8071029810f5e286f8f17651cd27da07b1eb4382f754cd1c95268783ad09220f5502840370d494beb17124220f6afce91ec8a0f55231f9652433e5ce3489b727716cf4aeba7dcda20cd29aa9a859201253f948dd94395aba9e3852bd1d60dda7ae5dc045b283da006e1cbad83cc13292a315db5553305c628dd091146597,9599deeccc698a24a461a7419e91939c741613f4ce887dba89dc7e327c51f5bf +2be9bf526c9d5a75d565dd11ef63b979d068659c7f026c08bea4af161d85a462d80e45040e91f4165c074c43ac661380311a8cbed59cc8e4c4518e80cd2c78ab1cabf66bff83eab3a80148550307310950d034a6286c93a1ece8929e6385c5e3bb6ea8a7c0fb6d6332e320e71cc4eb462a2a62e2bfe08f0ccad93e61bedb5dd0b786a728ab666f07e0576d189c92bf9fb20dca49ac2d3956d47385e2,be0d871606a4c129cef616f438600d5cbc0e9f49d2adc8a86571c192361c3f4f +ca76d3a12595a817682617006848675547d3e8f50c2210f9af906c0e7ce50b4460186fe70457a9e879e79fd4d1a688c70a347361c847ba0dd6aa52936eaf8e58a1be2f5c1c704e20146d366aeb3853bed9de9befe9569ac8aaea37a9fb7139a1a1a7d5c748605a8defb297869ebedd71d615a5da23496d11e11abbb126b206fa0a7797ee7de117986012d0362dcef775c2fe145ada6bda1ccb326bf644,4d30600c60ed94a0d2bcc17571a19bd0170cdacac78d0421e0bbae2a36a48b6d +f76b85dc67421025d64e93096d1d712b7baf7fb001716f02d33b2160c2c882c310ef13a576b1c2d30ef8f78ef8d2f465007109aad93f74cb9e7d7bef7c9590e8af3b267c89c15db238138c45833c98cc4a471a7802723ef4c744a853cf80a0c2568dd4ed58a2c9644806f42104cee53628e5bdf7b63b0b338e931e31b87c24b146c6d040605567ceef5960df9e022cb469d4c787f4cba3c544a1ac91f95f,3bd6fb72764f7ad4391b7b40aea424abd5f5561ac56f9e072c753d6090fa4bfb +25b8c9c032ea6bcd733ffc8718fbb2a503a4ea8f71dea1176189f694304f0ff68e862a8197b839957549ef243a5279fc2646bd4c009b6d1edebf24738197abb4c992f6b1dc9ba891f570879accd5a6b18691a93c7d0a8d38f95b639c1daeb48c4c2f15ccf5b9d508f8333c32de78781b41850f261b855c4bebcc125a380c54d501c5d3bd07e6b52102116088e53d76583b0161e2a58d0778f091206aabd5a1,6689bb25baee0c582f8f1b0c87073be366644da859313becf446435d2f6e899e +21cfdc2a7ccb7f331b3d2eefff37e48ad9fa9c788c3f3c200e0173d99963e1cbca93623b264e920394ae48bb4c3a5bb96ffbc8f0e53f30e22956adabc2765f57fb761e147ecbf8567533db6e50c8a1f894310a94edf806dd8ca6a0e141c0fa7c9fae6c6ae65f18c93a8529e6e5b553bf55f25be2e80a9882bd37f145fecbeb3d447a3c4e46c21524cc55cdd62f521ab92a8ba72b897996c49bb273198b7b1c9e,2628ddc7758208aa9f1e49497224eb268c6d2bcdaab4820de9c16a65c6f6017a +4e452ba42127dcc956ef4f8f35dd68cb225fb73b5bc7e1ec5a898bba2931563e74faff3b67314f241ec49f4a7061e3bd0213ae826bab380f1f14faab8b0efddd5fd1bb49373853a08f30553d5a55ccbbb8153de4704f29ca2bdeef0419468e05dd51557ccc80c0a96190bbcc4d77ecff21c66bdf486459d427f986410f883a80a5bcc32c20f0478bb9a97a126fc5f95451e40f292a4614930d054c851acd019ccf,df448936ee72d9fe6ccfb37d183aafddc7908e016271afa81ec083a10a144f5d +fa85671df7dadf99a6ffee97a3ab9991671f5629195049880497487867a6c446b60087fac9a0f2fcc8e3b24e97e42345b93b5f7d3691829d3f8ccd4bb36411b85fc2328eb0c51cb3151f70860ad3246ce0623a8dc8b3c49f958f8690f8e3860e71eb2b1479a5cea0b3f8befd87acaf5362435eaeccb52f38617bc6c5c2c6e269ead1fbd69e941d4ad2012da2c5b21bcfbf98e4a77ab2af1f3fda3233f046d38f1dc8,2bb4cec22a4fecd83fbbbad1e3835343e36c6cb66c26964a432ec4c70f3e17b4 +e90847ae6797fbc0b6b36d6e588c0a743d725788ca50b6d792352ea8294f5ba654a15366b8e1b288d84f5178240827975a763bc45c7b0430e8a559df4488505e009c63da994f1403f407958203cebb6e37d89c94a5eacf6039a327f6c4dbbc7a2a307d976aa39e41af6537243fc218dfa6ab4dd817b6a397df5ca69107a9198799ed248641b63b42cb4c29bfdd7975ac96edfc274ac562d0474c60347a078ce4c25e88,1462f2ea1c3580c0a2e8c0b30c27a608d82cd707f6d1a0aad5cc7c3d1b8d6c30 +f6d5c2b6c93954fc627602c00c4ca9a7d3ed12b27173f0b2c9b0e4a5939398a665e67e69d0b12fb7e4ceb253e8083d1ceb724ac07f009f094e42f2d6f2129489e846eaff0700a8d4453ef453a3eddc18f408c77a83275617fabc4ea3a2833aa73406c0e966276079d38e8e38539a70e194cc5513aaa457c699383fd1900b1e72bdfb835d1fd321b37ba80549b078a49ea08152869a918ca57f5b54ed71e4fd3ac5c06729,617b412ed64f56d6db36b7e52ead618d95a091d65052c3f376a532d8bbdaf7c7 +cf8562b1bed89892d67ddaaf3deeb28246456e972326dbcdb5cf3fb289aca01e68da5d59896e3a6165358b071b304d6ab3d018944be5049d5e0e2bb819acf67a6006111089e6767132d72dd85beddcbb2d64496db0cc92955ab4c6234f1eea24f2d51483f2e209e4589bf9519fac51b4d061e801125e605f8093bb6997bc163d551596fe4ab7cfae8fb9a90f6980480ce0c229fd1675409bd788354daf316240cfe0af93eb,82c541ea5cb15d1a4125f536825938c2358eec2bddc5d1cc4042de3af036ca55 +2ace31abb0a2e3267944d2f75e1559985db7354c6e605f18dc8470423fca30b7331d9b33c4a4326783d1caae1b4f07060eff978e4746bf0c7e30cd61040bd5ec2746b29863eb7f103ebda614c4291a805b6a4c8214230564a0557bc7102e0bd3ed23719252f7435d64d210ee2aafc585be903fa41e1968c50fd5d5367926df7a05e3a42cf07e656ff92de73b036cf8b19898c0cb34557c0c12c2d8b84e91181af467bc75a9d1,684bb7932433218c616f0590b039cefac972828470647d1591ceac889c893272 +0d8d09aed19f1013969ce5e7eb92f83a209ae76be31c754844ea9116ceb39a22ebb6003017bbcf26555fa6624185187db8f0cb3564b8b1c06bf685d47f3286eda20b83358f599d2044bbf0583fab8d78f854fe0a596183230c5ef8e54426750eaf2cc4e29d3bdd037e734d863c2bd9789b4c243096138f7672c232314effdfc6513427e2da76916b5248933be312eb5dde4cf70804fb258ac5fb82d58d08177ac6f4756017fff5,508b2af376ba6467cf982c767c848d2bda8d068a53416f074a0c98c473d02f6b +c3236b73deb7662bf3f3daa58f137b358ba610560ef7455785a9befdb035a066e90704f929bd9689cef0ce3bda5acf4480bceb8d09d10b098ad8500d9b6071dfc3a14af6c77511d81e3aa8844986c3bea6f469f9e02194c92868cd5f51646256798ff0424954c1434bdfed9facb390b07d342e992936e0f88bfd0e884a0ddb679d0547ccdec6384285a45429d115ac7d235a717242021d1dc35641f5f0a48e8445dba58e6cb2c8ea,55e228bcbda7061642d004373d4e6407b72a37381d1beffcbfbf9f5f6ea093ea +b39feb8283eadc63e8184b51df5ae3fd41aac8a963bb0be1cd08aa5867d8d910c669221e73243360646f6553d1ca05a84e8dc0de05b6419ec349ca994480193d01c92525f3fb3dcefb08afc6d26947bdbbfd85193f53b50609c6140905c53a6686b58e53a319a57b962331ede98149af3de3118a819da4d76706a0424b4e1d2910b0ed26af61d150ebcb46595d4266a0bd7f651ba47d0c7f179ca28545007d92e8419d48fdfbd744ce,0523c09bbcffe418d3fcd22c6abf95abfb38f94ce5562b8bfcd2eea9fb729041 +a983d54f503803e8c7999f4edbbe82e9084f422143a932ddddc47a17b0b7564a7f37a99d0786e99476428d29e29d3c197a72bfab1342c12a0fc4787fd7017d7a6174049ea43b5779169ef7472bdbbd941dcb82fc73aac45a8a94c9f2bd3477f61fd3b796f02a1b8264a214c6fea74b7051b226c722099ec7883a462b83b6afdd4009248b8a237f605fe5a08fe7d8b45321421ebba67bd70a0b00ddbf94baab7f359d5d1eea105f28dcfb,dcbc258241aded3799996c2ad6ed0e3d74cfcc67749d3480b2a9a78e5f8aff82 +e4d1c1897a0a866ce564635b74222f9696bf2c7f640dd78d7e2aca66e1b61c642bb03ea7536aae597811e9bf4a7b453ede31f97b46a5f0ef51a071a2b3918df16b152519ae3776f9f1edab4c2a377c3292e96408359d3613844d5eb393000283d5ad3401a318b12fd1474b8612f2bb50fb6a8b9e023a54d7dde28c43d6d8854c8d9d1155935c199811dbfc87e9e0072e90eb88681cc7529714f8fb8a2c9d88567adfb974ee205a9bf7b848,cbe8318e7b2fe72bfcd2530cccecea4018b1587f483b73f50ce5e84ced65e093 +b10c59723e3dcadd6d75df87d0a1580e73133a9b7d00cb95ec19f5547027323be75158b11f80b6e142c6a78531886d9047b08e551e75e6261e79785366d7024bd7cd9cf322d9be7d57fb661069f2481c7bb759cd71b4b36ca2bc2df6d3a328faebdb995a9794a8d72155ed551a1f87c80bf6059b43fc764900b18a1c2441f7487743cf84e565f61f8dd2ece6b6ccc9444049197aaaf53e926fbee3bfca8be588ec77f29d211be89de18b15f6,8cea2960087048e6e6d47e31554f305fcc81e03e90ba8f8332dd86c6b6b38e03 +db11f609baba7b0ca634926b1dd539c8cbada24967d7add4d9876f77c2d80c0f4dcefbd7121548373582705cca2495bd2a43716fe64ed26d059cfb566b3364bd49ee0717bdd9810dd14d8fad80dbbdc4cafb37cc60fb0fe2a80fb4541b8ca9d59dce457738a9d3d8f641af8c3fd6da162dc16fc01aac527a4a0255b4d231c0be50f44f0db0b713af03d968fe7f0f61ed0824c55c4b5265548febd6aad5c5eedf63efe793489c39b8fd29d104ce,44e276991e5382bd7eb5adcf1f79362804d346bedfc6916f4dca4b57240e9c99 +bebd4f1a84fc8b15e4452a54bd02d69e304b7f32616aadd90537937106ae4e28de9d8aab02d19bc3e2fde1d651559e296453e4dba94370a14dbbb2d1d4e2022302ee90e208321efcd8528ad89e46dc839ea9df618ea8394a6bff308e7726bae0c19bcd4be52da6258e2ef4e96aa21244429f49ef5cb486d7ff35cac1bacb7e95711944bccb2ab34700d42d1eb38b5d536b947348a458ede3dc6bd6ec547b1b0cae5b257be36a7124e1060c170ffa,80891a086af385025068799f192411c689cc4e0d9a59f3f41dbb02a343f1a759 +5aca56a03a13784bdc3289d9364f79e2a85c12276b49b92db0adaa4f206d5028f213f678c3510e111f9dc4c1c1f8b6acb17a6413aa227607c515c62a733817ba5e762cc6748e7e0d6872c984d723c9bb3b117eb8963185300a80bfa65cde495d70a46c44858605fccbed086c2b45cef963d33294dbe9706b13af22f1b7c4cd5a001cfec251fba18e722c6e1c4b1166918b4f6f48a98b64b3c07fc86a6b17a6d0480ab79d4e6415b520f1c484d675b1,77ddf034b7dfd6b292aa3b0c1e552f47b1d8c23078042cc58bb3dd4720b9ee4d +a5aad0e4646a32c85cfcac73f02fc5300f1982fabb2f2179e28303e447854094cdfc854310e5c0f60993ceff54d84d6b46323d930adb07c17599b35b505f09e784bca5985e0172257797fb53649e2e9723efd16865c31b5c3d5113b58bb0bfc8920fabdda086d7537e66d709d050bd14d0c960873f156fad5b3d3840cdfcdc9be6af519db262a27f40896ab25cc39f96984d650611c0d5a3080d5b3a1bf186abd42956588b3b58cd948970d298776060,23d2688d867a18040e82f7876acf04dc3a9c0140fedd93ebe7adf920b2f83da4 +06cbbe67e94a978203ead6c057a1a5b098478b4b4cbef5a97e93c8e42f5572713575fc2a884531d7622f8f879387a859a80f10ef02708cd8f7413ab385afc357678b9578c0ebf641ef076a1a30f1f75379e9dcb2a885bdd295905ee80c0168a62a9597d10cf12dd2d8cee46645c7e5a141f6e0e23aa482abe5661c16e69ef1e28371e2e236c359ba4e92c25626a7b7ff13f6ea4ae906e1cfe163e91719b1f750a96cbde5fbc953d9e576cd216afc90323a,2df666fc5d4ead1c3b10b9f8d4bb81aea4f93d3873d5ce5cfbac4b69435e1b7c +f1c528cf7739874707d4d8ad5b98f7c77169de0b57188df233b2dc8a5b31eda5db4291dd9f68e6bad37b8d7f6c9c0044b3bf74bbc3d7d1798e138709b0d75e7c593d3cccdc1b20c7174b4e692add820ace262d45ccfae2077e878796347168060a162ecca8c38c1a88350bd63bb539134f700fd4addd5959e255337daa06bc86358fabcbefdfb5bc889783d843c08aadc6c4f6c36f65f156e851c9a0f917e4a367b5ad93d874812a1de6a7b93cd53ad97232,af0c5474528032e2629b8fbb0e34405f7f251d41e73b5667be3c07ccb2c1c953 +9d9f3a7ecd51b41f6572fd0d0881e30390dfb780991dae7db3b47619134718e6f987810e542619dfaa7b505c76b7350c6432d8bf1cfebdf1069b90a35f0d04cbdf130b0dfc7875f4a4e62cdb8e525aadd7ce842520a482ac18f09442d78305fe85a74e39e760a4837482ed2f437dd13b2ec1042afcf9decdc3e877e50ff4106ad10a525230d11920324a81094da31deab6476aa42f20c84843cfc1c58545ee80352bdd3740dd6a16792ae2d86f11641bb717c2,9bbef7a75391354a388aaa7ca035dc62d3231b80091bb7748f76e52d8e9f20f0 +5179888724819fbad3afa927d3577796660e6a81c52d98e9303261d5a4a83232f6f758934d50aa83ff9e20a5926dfebaac49529d006eb923c5ae5048ed544ec471ed7191edf46363383824f915769b3e688094c682b02151e5ee01e510b431c8865aff8b6b6f2f59cb6d129da79e97c6d2b8fa6c6da3f603199d2d1bcab547682a81cd6cf65f6551121391d78bcc23b5bd0e922ec6d8bf97c952e84dd28aef909aba31edb903b28fbfc33b7703cd996215a11238,b108457a6bd331be43c9fe1e2a02e8c744c2bcc927a9c3c486f110dccf907f6b +576ef3520d30b7a4899b8c0d5e359e45c5189add100e43be429a02fb3de5ff4f8fd0e79d9663acca72cd29c94582b19292a557c5b1315297d168fbb54e9e2ecd13809c2b5fce998edc6570545e1499dbe7fb74d47cd7f35823b212b05bf3f5a79caa34224fdd670d335fcb106f5d92c3946f44d3afcbae2e41ac554d8e6759f332b76be89a0324aa12c5482d1ea3ee89ded4936f3e3c080436f539fa137e74c6d3389bdf5a45074c47bc7b20b0948407a66d855e2f,a61109838dfa5b146df4e6c3bdbc7a477be36b6228ebd91025012af4cc0eb409 +0df2152fa4f4357c8741529dd77e783925d3d76e95bafa2b542a2c33f3d1d117d159cf473f82310356fee4c90a9e505e70f8f24859656368ba09381fa245eb6c3d763f3093f0c89b972e66b53d59406d9f01aea07f8b3b615cac4ee4d05f542e7d0dab45d67ccccd3a606ccbeb31ea1fa7005ba07176e60dab7d78f6810ef086f42f08e595f0ec217372b98970cc6321576d92ce38f7c397a403bada1548d205c343ac09deca86325373c3b76d9f32028fea8eb32515,4f0f30c890b0ab404961158573538fe9a2b234b94a0991f26d5ea04fddc9c565 +3e15350d87d6ebb5c8ad99d42515cfe17980933c7a8f6b8bbbf0a63728cefaad2052623c0bd5931839112a48633fb3c2004e0749c87a41b26a8b48945539d1ff41a4b269462fd199bfecd45374756f55a9116e92093ac99451aefb2af9fd32d6d7f5fbc7f7a540d5097c096ebc3b3a721541de073a1cc02f7fb0fb1b9327fb0b1218ca49c9487ab5396622a13ae546c97abdef6b56380dda7012a8384091b6656d0ab272d363cea78163ff765cdd13ab1738b940d16cae,85459cfb0289599cdd67c473a0ba6da616c608e367f58c50a03562424dcf1d06 +c38d6b0b757cb552be40940ece0009ef3b0b59307c1451686f1a22702922800d58bce7a636c1727ee547c01b214779e898fc0e560f8ae7f61bef4d75eaa696b921fd6b735d171535e9edd267c192b99880c87997711002009095d8a7a437e258104a41a505e5ef71e5613ddd2008195f0c574e6ba3fe40099cfa116e5f1a2fa8a6da04badcb4e2d5d0de31fdc4800891c45781a0aac7c907b56d631fca5ce8b2cde620d11d1777ed9fa603541de794ddc5758fcd5fad78c0,5539d2e52a5a1bb3c246b0158356e2b2782fc13c10248937a0c4a40b091f6247 +8d2de3f0b37a6385c90739805b170057f091cd0c7a0bc951540f26a5a75b3e694631bb64c7635eed316f51318e9d8de13c70a2aba04a14836855f35e480528b776d0a1e8a23b547c8b8d6a0d09b241d3be9377160cca4e6793d00a515dc2992cb7fc741daca171431da99cce6f7789f129e2ac5cf65b40d703035cd2185bb936c82002daf8cbc27a7a9e554b06196630446a6f0a14ba155ed26d95bd627b7205c072d02b60db0fd7e49ea058c2e0ba202daff0de91e845cf79,6d63419207b99d4db1add795d852a8daac11b789af0c7d6353036cb23f6428b4 +c464bbdad275c50dcd983b65ad1019b9ff85a1e71c807f3204bb2c921dc31fbcd8c5fc45868ae9ef85b6c9b83bba2a5a822201ed68586ec5ec27fb2857a5d1a2d09d09115f22dcc39fe61f5e1ba0ff6e8b4acb4c6da748be7f3f0839739394ff7fa8e39f7f7e84a33c3866875c01bcb1263c9405d91908e9e0b50e7459fabb63d8c6bbb73d8e3483c099b55bc30ff092ff68b6adedfd477d63570c9f5515847f36e24ba0b705557130cec57ebad1d0b31a378e91894ee26e3a04,d2090dae0fc201b2b9c03dd482a8eb1ffd3cf70c55f98d6f39a41b8bdac27a17 +8b8d68bb8a75732fe272815a68a1c9c5aa31b41dedc8493e76525d1d013d33cebd9e21a5bb95db2616976a8c07fcf411f5f6bc6f7e0b57aca78cc2790a6f9b898858ac9c79b165ff24e66677531e39f572be5d81eb3264524181115f32780257bfb9aeec6af12af28e587cac068a1a2953b59ad680f4c245b2e3ec36f59940d37e1d3db38e13edb29b5c0f404f6ff87f80fc8be7a225ff22fbb9c8b6b1d7330c57840d24bc75b06b80d30dad6806544d510af6c4785e823ac3e0b8,c9e8f96ba75eaf371dca35dc69138eca8cb3f2823f3be551d9dc8aa6a4ed4169 +6b018710446f368e7421f1bc0ccf562d9c1843846bc8d98d1c9bf7d9d6fcb48bfc3bf83b36d44c4fa93430af75cd190bde36a7f92f867f58a803900df8018150384d85d82132f123006ac2aeba58e02a037fe6afbd65eca7c44977dd3dc74f48b6e7a1bfd5cc4dcf24e4d52e92bd4455848e4928b0eac8b7476fe3cc03e862aa4dff4470dbfed6de48e410f25096487ecfc32a27277f3f5023b2725ade461b1355889554a8836c9cf53bd767f5737d55184eea1ab3f53edd0976c485,233b0bc28143c32a668b0ab5d76be5712c0387056fb0e79f2c2f7f1c31e4a86a +c9534a24714bd4be37c88a3da1082eda7cabd154c309d7bd670dccd95aa535594463058a29f79031d6ecaa9f675d1211e9359be82669a79c855ea8d89dd38c2c761ddd0ec0ce9e97597432e9a1beae062cdd71edfdfd464119be9e69d18a7a7fd7ce0e2106f0c8b0abf4715e2ca48ef9f454dc203c96656653b727083513f8efb86e49c513bb758b3b052fe21f1c05bb33c37129d6cc81f1aef6adc45b0e8827a830fe545cf57d0955802c117d23ccb55ea28f95c0d8c2f9c5a242b33f,b79b5f8182d3fb4abab63e7cb26a8e0865ae8d79bd4c514ad8917d5ecb7fed8f +07906c87297b867abf4576e9f3cc7f82f22b154afcbf293b9319f1b0584da6a40c27b32e0b1b7f412c4f1b82480e70a9235b12ec27090a5a33175a2bb28d8adc475cefe33f7803f8ce27967217381f02e67a3b4f84a71f1c5228e0c2ad971373f6f672624fcea8d1a9f85170fad30fa0bbd25035c3b41a6175d467998bd1215f6f3866f53847f9cf68ef3e2fbb54bc994de2302b829c5eea68ec441fcbafd7d16ae4fe9fff98bf00e5bc2ad54dd91ff9fda4dd77b6c754a91955d1fbaad0,f680198de2943d20e9d809fd8312d674c9a250da22ba6e920e408f6f2c0e0739 +588e94b9054abc2189df69b8ba34341b77cdd528e7860e5defcaa79b0c9a452ad4b82aa306be84536eb7cedcbe058d7b84a6aef826b028b8a0271b69ac3605a9635ea9f5ea0aa700f3eb7835bc54611b922964300c953efe7491e3677c2cebe0822e956cd16433b02c68c4a23252c3f9e151a416b4963257b783e038f6b4d5c9f110f871652c7a649a7bcedcbccc6f2d0725bb903cc196ba76c76aa9f10a190b1d1168993baa9ffc96a1655216773458bec72b0e39c9f2c121378feab4e76a,a190dd73556086ea70bc31022d6a4f95d89dc099e2030c19311cc8988281278f +08959a7e4baae874928813364071194e2939772f20db7c3157078987c557c2a6d5abe68d520eef3dc491692e1e21bcd880adebf63bb4213b50897fa005256ed41b5690f78f52855c8d9168a4b666fce2da2b456d7a7e7c17ab5f2fb1ee90b79e698712e963715983fd07641ae4b4e9dc73203fac1ae11fa1f8c7941fcc82eab247addb56e2638447e9d609e610b60ce086656aaebf1da3c8a231d7d94e2fd0afe46b391ff14a72eaeb3f44ad4df85866def43d4781a0b3578bc996c87970b132,21166064c52b588c1ec7ea6df1905a2b59bad499b470f308a26b6e354ddfe58f +cb2a234f45e2ecd5863895a451d389a369aab99cfef0d5c9ffca1e6e63f763b5c14fb9b478313c8e8c0efeb3ac9500cf5fd93791b789e67eac12fd038e2547cc8e0fc9db591f33a1e4907c64a922dda23ec9827310b306098554a4a78f050262db5b545b159e1ff1dca6eb734b872343b842c57eafcfda8405eedbb48ef32e99696d135979235c3a05364e371c2d76f1902f1d83146df9495c0a6c57d7bf9ee77e80f9787aee27be1fe126cdc9ef893a4a7dcbbc367e40fe4e1ee90b42ea25af01,051e19906464ec7fdc3d37ee3bcef63438ec5edbea5aa202a24b7f7190b689e0 +d16beadf02ab1d4dc6f88b8c4554c51e866df830b89c06e786a5f8757e8909310af51c840efe8d20b35331f4355d80f73295974653ddd620cdde4730fb6c8d0d2dcb2b45d92d4fbdb567c0a3e86bd1a8a795af26fbf29fc6c65941cddb090ff7cd230ac5268ab4606fccba9eded0a2b5d014ee0c34f0b2881ac036e24e151be89eeb6cd9a7a790afccff234d7cb11b99ebf58cd0c589f20bdac4f9f0e28f75e3e04e5b3debce607a496d848d67fa7b49132c71b878fd5557e082a18eca1fbda94d4b,18fe66c0cd095c9cc811f5410b5cfdc1b152ae3cab0c3328974e7d4bbeb40053 +8f65f6bc59a85705016e2bae7fe57980de3127e5ab275f573d334f73f8603106ec3553016608ef2dd6e69b24be0b7113bf6a760ba6e9ce1c48f9e186012cf96a1d4849d75df5bb8315387fd78e9e153e76f8ba7ec6c8849810f59fb4bb9b004318210b37f1299526866f44059e017e22e96cbe418699d014c6ea01c9f0038b10299884dbec3199bb05adc94e955a1533219c1115fed0e5f21228b071f40dd57c4240d98d37b73e412fe0fa4703120d7c0c67972ed233e5deb300a22605472fa3a3ba86,bdb42638921199d604294b5578cebaccdf132e1d7af7675b7768e50553fcb604 +84891e52e0d451813210c3fd635b39a03a6b7a7317b221a7abc270dfa946c42669aacbbbdf801e1584f330e28c729847ea14152bd637b3d0f2b38b4bd5bf9c791c58806281103a3eabbaede5e711e539e6a8b2cf297cf351c078b4fa8f7f35cf61bebf8814bf248a01d41e86c5715ea40c63f7375379a7eb1d78f27622fb468ab784aaaba4e534a6dfd1df6fa15511341e725ed2e87f98737ccb7b6a6dfae416477472b046bf1811187d151bfa9f7b2bf9acdb23a3be507cdf14cfdf517d2cb5fb9e4ab6,cbd88209b530018a856c5c2321d7e485511ca1513661f1fde1fa06f4603de117 +fdd7a9433a3b4afabd7a3a5e3457e56debf78e84b7a0b0ca0e8c6d53bd0c2dae31b2700c6128334f43981be3b213b1d7a118d59c7e6b6493a86f866a1635c12859cfb9ad17460a77b4522a5c1883c3d6acc86e6162667ec414e9a104aa892053a2b1d72165a855bacd8faf8034a5dd9b716f47a0818c09bb6baf22aa503c06b4ca261f557761989d2afbd88b6a678ad128af68672107d0f1fc73c5ca740459297b3292b281e93bceb761bde7221c3a55708e5ec84472cddcaa84ecf23723cc0991355c6280,f0c4c1374f33a91dc657f8a3fa51763cbd0fba1cafdd2c595ed302aab1ab75a9 +70a40bfbef92277a1aad72f6b79d0177197c4ebd432668cfec05d099accb651062b5dff156c0b27336687a94b26679cfdd9daf7ad204338dd9c4d14114033a5c225bd11f217b5f4732da167ee3f939262d4043fc9cba92303b7b5e96aea12adda64859df4b86e9ee0b58e39091e6b188b408ac94e1294a8911245ee361e60e601eff58d1d37639f3753bec80ebb4efde25817436076623fc65415fe51d1b0280366d12c554d86743f3c3b6572e400361a60726131441ba493a83fbe9afda90f7af1ae717238d,f2157c165eebdfd04451e9e6cf0b112bb148eb9c40e8b2427ee8ea57e60d5dd6 +74356e449f4bf8644f77b14f4d67cb6bd9c1f5ae357621d5b8147e562b65c66585caf2e491b48529a01a34d226d436959153815380d5689e30b35357cdac6e08d3f2b0e88e200600d62bd9f5eaf488df86a4470ea227006182e44809009868c4c280c43d7d64a5268fa719074960087b3a6abc837882f882c837834535929389a12b2c78187e2ea07ef8b8eef27dc85002c3ae35f1a50bee6a1c48ba7e175f3316670b27983472aa6a61eed0a683a39ee323080620ea44a9f74411ae5ce99030528f9ab49c79f2,0836abbf77ef78e162de8fb664b9996d5a03919b741eb4a3f02e7b97826569fa +8c3798e51bc68482d7337d3abb75dc9ffe860714a9ad73551e120059860dde24ab87327222b64cf774415a70f724cdf270de3fe47dda07b61c9ef2a3551f45a5584860248fabde676e1cd75f6355aa3eaeabe3b51dc813d9fb2eaa4f0f1d9f834d7cad9c7c695ae84b329385bc0bef895b9f1edf44a03d4b410cc23a79a6b62e4f346a5e8dd851c2857995ddbf5b2d717aeb847310e1f6a46ac3d26a7f9b44985af656d2b7c9406e8a9e8f47dcb4ef6b83caacf9aefb6118bfcff7e44bef6937ebddc89186839b77,84970c79316e89b70e2b186a69db1a4c3e33c7a376b45c1b79bd346dd33ef4ce +fa56bf730c4f8395875189c10c4fb251605757a8fecc31f9737e3c2503b02608e6731e85d7a38393c67de516b85304824bfb135e33bf22b3a23b913bf6acd2b7ab85198b8187b2bcd454d5e3318cacb32fd6261c31ae7f6c54ef6a7a2a4c9f3ecb81ce3555d4f0ad466dd4c108a90399d70041997c3b25345a9653f3c9a6711ab1b91d6a9d2216442da2c973cbd685ee7643bfd77327a2f7ae9cb283620a08716dfb462e5c1d65432ca9d56a90e811443cd1ecb8f0de179c9cb48ba4f6fec360c66f252f6e64edc96b,06ed2ebc419d053949e88cc9c040b1ebce74375ad0ce09c0cd4d562c62f8497d +b6134f9c3e91dd8000740d009dd806240811d51ab1546a974bcb18d344642baa5cd5903af84d58ec5ba17301d5ec0f10ccd0509cbb3fd3fff9172d193af0f782252fd1338c7244d40e0e42362275b22d01c4c3389f19dd69bdf958ebe28e31a4ffe2b5f18a87831cfb7095f58a87c9fa21db72ba269379b2dc2384b3da953c7925761fed324620acea435e52b424a7723f6a2357374157a34cd8252351c25a1b232826cefe1bd3e70ffc15a31e7c0598219d7f00436294d11891b82497bc78aa5363892a2495df8c1eef,cf9060af3e4ed47316acf51e5b92123cdc4827bd4aef991588dcd8078b9eea40 +c941cdb9c28ab0a791f2e5c8e8bb52850626aa89205bec3a7e22682313d198b1fa33fc7295381354858758ae6c8ec6fac3245c6e454d16fa2f51c4166fab51df272858f2d603770c40987f64442d487af49cd5c3991ce858ea2a60dab6a65a34414965933973ac2457089e359160b7cdedc42f29e10a91921785f6b7224ee0b349393cdcff6151b50b377d609559923d0984cda6000829b916ab6896693ef6a2199b3c22f7dc5500a15b8258420e314c222bc000bc4e5413e6dd82c993f8330f5c6d1be4bc79f08a1a0a46,63e407300f99ff2360f02aae0ada35f6c1a90aed2c63282b23a7990bae307254 +4499efffac4bcea52747efd1e4f20b73e48758be915c88a1ffe5299b0b005837a46b2f20a9cb3c6e64a9e3c564a27c0f1c6ad1960373036ec5bfe1a8fc6a435c2185ed0f114c50e8b3e4c7ed96b06a036819c9463e864a58d6286f785e32a804443a56af0b4df6abc57ed5c2b185ddee8489ea080deeee66aa33c2e6dab36251c402682b6824821f998c32163164298e1fafd31babbcffb594c91888c6219079d907fdb438ed89529d6d96212fd55abe20399dbefd342248507436931cdead496eb6e4a80358acc78647d043,427741570d5e21590e5045a8450216365ba95c2e72455a3dbd694f13155de1b7 +eecbb8fdfa4da62170fd06727f697d81f83f601ff61e478105d3cb7502f2c89bf3e8f56edd469d049807a38882a7eefbc85fc9a950952e9fa84b8afebd3ce782d4da598002827b1eb98882ea1f0a8f7aa9ce013a6e9bc462fb66c8d4a18da21401e1b93356eb12f3725b6db1684f2300a98b9a119e5d27ff704affb618e12708e77e6e5f34139a5a41131fd1d6336c272a8fc37080f041c71341bee6ab550cb4a20a6ddb6a8e0299f2b14bc730c54b8b1c1c487b494bdccfd3a53535ab2f231590bf2c4062fd2ad58f906a2d0d,b5e60a019e8414d470ae702738bc358f1c80bb6ff7bde4f2dbb56c299c764b16 +e64f3e4ace5c8418d65fec2bc5d2a303dd458034736e3b0df719098be7a206deaf52d6ba82316caf330ef852375188cde2b39cc94aa449578a7e2a8e3f5a9d68e816b8d16889fbc0ebf0939d04f63033ae9ae2bdab73b88c26d6bd25ee460ee1ef58fb0afa92cc539f8c76d3d097e7a6a63ebb9b5887edf3cf076028c5bbd5b9db3211371ad3fe121d4e9bf44229f4e1ecf5a0f9f0eba4d5ceb72878ab22c3f0eb5a625323ac66f7061f4a81fac834471e0c59553f108475fe290d43e6a055ae3ee46fb67422f814a68c4be3e8c9,c986bdae9b13fbc92793619e4970abc33398f2b5a57a6cbb40a622592e2695df +d2cb2d733033f9e91395312808383cc4f0ca974e87ec68400d52e96b3fa6984ac58d9ad0938dde5a973008d818c49607d9de2284e7618f1b8aed8372fbd52ed54557af4220fac09dfa8443011699b97d743f8f2b1aef3537ebb45dcc9e13dfb438428ee190a4efdb3caeb7f3933117bf63abdc7e57beb4171c7e1ad260ab0587806c4d137b6316b50abc9cce0dff3acada47bbb86be777e617bbe578ff4519844db360e0a96c6701290e76bb95d26f0f804c8a4f2717eac4e7de9f2cff3bbc55a17e776c0d02856032a6cd10ad2838,224c7fc8a0ec3895e8969ce7c7f7ecaa54fe2eec9ab3120726106f22aa297541 +f2998955613dd414cc111df5ce30a995bb792e260b0e37a5b1d942fe90171a4ac2f66d4928d7ad377f4d0554cbf4c523d21f6e5f379d6f4b028cdcb9b1758d3b39663242ff3cb6ede6a36a6f05db3bc41e0d861b384b6dec58bb096d0a422fd542df175e1be1571fb52ae66f2d86a2f6824a8cfaacbac4a7492ad0433eeb15454af8f312b3b2a577750e3efbd370e8a8cac1582581971fba3ba4bd0d76e718dacf8433d33a59d287f8cc92234e7a271041b526e389efb0e40b6a18b3aaf658e82ed1c78631fd23b4c3eb27c3faec8685,faf5e3b7a64629ffeee07a67ed77a3a4f67f18c9381fe9b19f6ee601f5fb99af +447797e2899b72a356ba55bf4df3acca6cdb1041eb477bd1834a9f9acbc340a294d729f2f97df3a610be0ff15edb9c6d5db41644b9874360140fc64f52aa03f0286c8a640670067a84e017926a70438db1bb361defee7317021425f8821def26d1efd77fc853b818545d055adc9284796e583c76e6fe74c9ac2587aa46aa8f8804f2feb5836cc4b3ababab8429a5783e17d5999f32242eb59ef30cd7adabc16d72dbdb097623047c98989f88d14eaf02a7212be16ec2d07981aaa99949ddf89ecd90333a77bc4e1988a82abf7c7caf3291,a8a98e6b3a005fcb319fee58c5457d04b69d59f53873f6fcc6065d68f880833f +9f2c18ade9b380c784e170fb763e9aa205f64303067eb1bcea93df5dac4bf5a2e00b78195f808df24fc76e26cb7be31dc35f0844cded1567bba29858cffc97fb29010331b01d6a3fb3159cc1b973d255da9843e34a0a4061cabdb9ed37f241bfabb3c20d32743f4026b59a4ccc385a2301f83c0b0a190b0f2d01acb8f0d41111e10f2f4e149379275599a52dc089b35fdd5234b0cfb7b6d8aebd563ca1fa653c5c021dfd6f5920e6f18bfafdbecbf0ab00281333ed50b9a999549c1c8f8c63d7626c48322e9791d5ff72294049bde91e73f8,c89f2b346127eab9e28095dc44918c1a1aaeae04861c1dd0144a1ee07f823c18 +ae159f3fa33619002ae6bcce8cbbdd7d28e5ed9d61534595c4c9f43c402a9bb31f3b301cbfd4a43ce4c24cd5c9849cc6259eca90e2a79e01ffbac07ba0e147fa42676a1d668570e0396387b5bcd599e8e66aaed1b8a191c5a47547f61373021fa6deadcb55363d233c24440f2c73dbb519f7c9fa5a8962efd5f6252c0407f190dfefad707f3c7007d69ff36b8489a5b6b7c557e79dd4f50c06511f599f56c896b35c917b63ba35c6ff8092baf7d1658e77fc95d8a6a43eeb4c01f33f03877f92774be89c1114dd531c011e53a34dc248a2f0e6,e7a81acbef35d7b24b706549b41abd82628ccff9acf41f2c8add28743688ae01 +3b8e97c5ffc2d6a40fa7de7fcefc90f3b12c940e7ab415321e29ee692dfac799b009c99dcddb708fce5a178c5c35ee2b8617143edc4c40b4d313661f49abdd93cea79d117518805496fe6acf292c4c2a1f76b403a97d7c399daf85b46ad84e16246c67d6836757bde336c290d5d401e6c1386ab32797af6bb251e9b2d8fe754c47482b72e0b394eab76916126fd68ea7d65eb93d59f5b4c5ac40f7c3b37e7f3694f29424c24af8c8f0ef59cd9dbf1d28e0e10f799a6f78cad1d45b9db3d7dee4a7059abe99182714983b9c9d44d7f5643596d4f3,d81249143a69ea1c9dc168b55ffe06d46d0fbc007065110353d76c6cce4ffe66 +3434ec31b10fafdbfeec0dd6bd94e80f7ba9dca19ef075f7eb017512af66d6a4bcf7d16ba0819a1892a6372f9b35bcc7ca8155ee19e8428bc22d214856ed5fa9374c3c09bde169602cc219679f65a1566fc7316f4cc3b631a18fb4449fa6afa16a3db2bc4212eff539c67cf184680826535589c7111d73bffce431b4c40492e763d9279560aaa38eb2dc14a212d723f994a1fe656ff4dd14551ce4e7c621b2aa5604a10001b2878a897a28a08095c325e10a26d2fb1a75bfd64c250309bb55a44f23bbac0d5516a1c687d3b41ef2fbbf9cc56d4739,aa8bbd4812142211212763bf8ee4d6e0aadafe5e528aea1fb1be118806e49f66 +7c7953d81c8d208fd1c97681d48f49dd003456de60475b84070ef4847c333b74575b1fc8d2a186964485a3b8634feaa3595aaa1a2f4595a7d6b6153563dee31bbac443c8a33eed6d5d956a980a68366c2527b550ee950250dfb691eacbd5d56ae14b970668be174c89df2fea43ae52f13142639c884fd62a3683c0c3792f0f24ab1318bcb27e21f4737fab62c77ea38bc8fd1cf41f7dab64c13febe7152bf5bb7ab5a78f5346d43cc741cb6f72b7b8980f268b68bf62abdfb1577a52438fe14b591498cc95f071228460c7c5d5ceb4a7bde588e7f21c,4089b181df5eca5f14dab1057aaaeecaba15f200fdda0de49357d6196faab44b +7a6a4f4fdc59a1d223381ae5af498d74b7252ecf59e389e49130c7eaee626e7bd9897effd92017f4ccde66b0440462cdedfd352d8153e6a4c8d7a0812f701cc737b5178c2556f07111200eb627dbc299caa792dfa58f35935299fa3a3519e9b03166dffa159103ffa35e8577f7c0a86c6b46fe13db8e2cdd9dcfba85bdddcce0a7a8e155f81f712d8e9fe646153d3d22c811bd39f830433b2213dd46301941b59293fd0a33e2b63adbd95239bc01315c46fdb678875b3c81e053a40f581cfbec24a1404b1671a1b88a6d06120229518fb13a74ca0ac5ae,debf59bb233d05549853804fc67840821bd5802f87fc8a915b710d3e82070950 +d9faa14cebe9b7de551b6c0765409a33938562013b5e8e0e1e0a6418df7399d0a6a771fb81c3ca9bd3bb8e2951b0bc792525a294ebd1083688806fe5e7f1e17fd4e3a41d00c89e8fcf4a363caedb1acb558e3d562f1302b3d83bb886ed27b76033798131dab05b4217381eaaa7ba15ec820bb5c13b516dd640eaec5a27d05fdfca0f35b3a5312146806b4c0275bcd0aaa3b2017f346975db566f9b4d137f4ee10644c2a2da66deeca5342e236495c3c6280528bfd32e90af4cd9bb908f34012b52b4bc56d48cc8a6b59bab014988eabd12e1a0a1c2e170e7,0fdba1c79f55f233a1217f522d6c81f777f330fadb565e1171f39e1788913342 +2d8427433d0c61f2d96cfe80cf1e932265a191365c3b61aaa3d6dcc039f6ba2ad52a6a8cc30fc10f705e6b7705105977fa496c1c708a277a124304f1fc40911e7441d1b5e77b951aad7b01fd5db1b377d165b05bbf898042e39660caf8b279fe5229d1a8db86c0999ed65e53d01ccbc4b43173ccf992b3a14586f6ba42f5fe30afa8ae40c5df29966f9346da5f8b35f16a1de3ab6de0f477d8d8660918060e88b9b9e9ca6a4207033b87a812dbf5544d39e4882010f82b6ce005f8e8ff6fe3c3806bc2b73c2b83afb704345629304f9f86358712e9fae3ca3e,ed45a06e95a6539270b02290d71005f01c55ba077414c3bcdb379537e6dbefc9 +5e19d97887fcaac0387e22c6f803c34a3dacd2604172433f7a8a7a526ca4a2a1271ecfc5d5d7be5ac0d85d921095350dfc65997d443c21c8094e0a3fefd2961bcb94aed03291ae310ccda75d8ace4bc7d89e7d3e5d1650bda5d668b8b50bfc8e608e184f4d3a9a2badc4ff5f07e0c0bc8a9f2e0b2a26fd6d8c550008faaab75fd71af2a424bec9a7cd9d83fad4c8e9319115656a8717d3b523a68ff8004258b9990ed362308461804ba3e3a7e92d8f2ffae5c2fba55ba5a3c27c0a2f71bd711d2fe1799c2adb31b200035481e9ee5c4adf2ab9c0fa50b23975cf,37e7cf6a9a31b0982b2479432b7838657741b0ee79adda1b287550eb325c78cc +c8e976ab4638909387ce3b8d4e510c3230e5690e02c45093b1d297910abc481e56eea0f296f98379dfc9080af69e73b2399d1c143bee80ae1328162ce1ba7f6a8374679b20aacd380eb4e61382c99998704d62701afa914f9a2705cdb065885f50d086c3eb5753700c387118bb142f3e6da1e988dfb31ac75d7368931e45d1391a274b22f83ceb072f9bcabc0b216685bfd789f5023971024b1878a205442522f9ea7d8797a4102a3df41703768251fd5e017c85d1200a464118aa35654e7ca39f3c375b8ef8cbe7534dbc64bc20befb417cf60ec92f63d9ee7397,373704f641faf2b918e22e9142abf6b4ac71b6883ac4d7a075f626e947837d3f +7145fa124b7429a1fc2231237a949ba7201bcc1822d3272de005b682398196c25f7e5cc2f289fbf44415f699cb7fe6757791b1443410234ae061edf623359e2b4e32c19bf88450432dd01caa5eb16a1dc378f391ca5e3c4e5f356728bddd4975db7c890da8bbc84cc73ff244394d0d48954978765e4a00b593f70f2ca082673a261ed88dbcef1127728d8cd89bc2c597e9102ced6010f65fa75a14ebe467fa57ce3bd4948b6867d74a9df5c0ec6f530cbf2ee61ce6f06bc8f2864dff5583776b31df8c7ffcb61428a56bf7bd37188b4a5123bbf338393af46eda85e6,ee5994b3d32bdae58e72566fc24b886461217fdd7273e1608f0b2926b7923546 +7fdfadcc9d29bad23ae038c6c65cda1aef757221b8872ed3d75ff8df7da0627d266e224e812c39f7983e4558bfd0a1f2bef3feb56ba09120ef762917b9c093867948547aee98600d10d87b20106878a8d22c64378bf634f7f75900c03986b077b0bf8b740a82447b61b99fee5376c5eb6680ec9e3088f0bdd0c56883413d60c1357d3c811950e5890e7600103c916341b80c743c6a852b7b4fb60c3ba21f3bc15b8382437a68454779cf3cd7f9f90ccc8ef28d0b706535b1e4108eb5627bb45d719cb046839aee311ca1abdc8319e050d67972cb35a6b1601b25dbf487,6a584f9f4acd8fc8e15dacd326291fe9311c20987225c51cf4251e52b47fa223 +988638219fd3095421f826f56e4f09e356296b628c3ce6930c9f2e758fd1a80c8273f2f61e4daae65c4f110d3e7ca0965ac7d24e34c0dc4ba2d6ff0bf5bbe93b3585f354d7543cb542a1aa54674d375077f2d360a8f4d42f3db131c3b7ab7306267ba107659864a90c8c909460a73621d1f5d9d3fd95beb19b23db1cb6c0d0fba91d36891529b8bd8263caa1bab56a4affaed44962df096d8d5b1eb845ef31188b3e10f1af811a13f156beb7a288aae593ebd1471b624aa1a7c6adf01e2200b3d72d88a3aed3100c88231e41efc376906f0b580dc895f080fda5741db1cb,4f92839cddb0df31d16a0db53bbe07698a7c1912d5590d21155d45db1b48cab4 +5aab62756d307a669d146aba988d9074c5a159b3de85151a819b117ca1ff6597f6156e80fdd28c9c3176835164d37da7da11d94e09add770b68a6e081cd22ca0c004bfe7cd283bf43a588da91f509b27a6584c474a4a2f3ee0f1f56447379240a5ab1fb77fdca49b305f07ba86b62756fb9efb4fc225c86845f026ea542076b91a0bc2cdd136e122c659be259d98e5841df4c2f60330d4d8cdee7bf1a0a244524eecc68ff2aef5bf0069c9e87a11c6e519de1a4062a10c83837388f7ef58598a3846f49d499682b683c4a062b421594fafbc1383c943ba83bdef515efcf10d,eafd661f343ae834c621e074ac6903a2e3e6324f365b3432dffa732f477ac129 +47b8216aa0fbb5d67966f2e82c17c07aa2d6327e96fcd83e3de7333689f3ee79994a1bf45082c4d725ed8d41205cb5bcdf5c341f77facb1da46a5b9b2cbc49eadf786bcd881f371a95fa17df73f606519aea0ff79d5a11427b98ee7f13a5c00637e2854134691059839121fea9abe2cd1bcbbbf27c74caf3678e05bfb1c949897ea01f56ffa4dafbe8644611685c617a3206c7a7036e4ac816799f693dafe7f19f303ce4eba09d21e03610201bfc665b72400a547a1e00fa9b7ad8d84f84b34aef118515e74def11b9188bd1e1f97d9a12c30132ec2806339bdadacda2fd8b78,3dcec669c5d0176b1bdc002728d242c587dda03b3abfa6074523d3faef4820be +8cff1f67fe53c098896d9136389bd8881816ccab34862bb67a656e3d98896f3ce6ffd4da73975809fcdf9666760d6e561c55238b205d8049c1cedeef374d1735daa533147bfa960b2cce4a4f254176bb4d1bd1e89654432b8dbe1a135c42115b394b024856a2a83dc85d6782be4b444239567ccec4b184d4548eae3ff6a192f343292ba2e32a0f267f31cc26719eb85245d415fb897ac2da433ee91a99424c9d7f1766a44171d1651001c38fc79294accc68ceb5665d36218454d3ba169ae058a831338c17743603f81ee173bfc0927464f9bd728dee94c6aeab7aae6ee3a627e8,4bdf731bbb3d0e2ab0eb3d972123a7a0a085e8a98ac6af8adbd335b37275ddff +eacd07971cff9b9939903f8c1d8cbb5d4db1b548a85d04e037514a583604e787f32992bf2111b97ac5e8a938233552731321522ab5e8583561260b7d13ebeef785b23a41fd8576a6da764a8ed6d822d4957a545d5244756c18aa80e1aad4d1f9c20d259dee1711e2cc8fd013169fb7cc4ce38b362f8e0936ae9198b7e838dcea4f7a5b9429bb3f6bbcf2dc92565e3676c1c5e6eb3dd2a0f86aa23edd3d0891f197447692794b3dfa269611ad97f72b795602b4fdb198f3fd3eb41b415064256e345e8d8c51c555dc8a21904a9b0f1ad0effab7786aac2da3b196507e9f33ca356427,47f904feea607225cab2e3c52748878964bfedcfe068727de610f63421367bcf +23ac4e9a42c6ef45c3336ce6dfc2ff7de8884cd23dc912fef0f7756c09d335c189f3ad3a23697abda851a81881a0c8ccafc980ab2c702564c2be15fe4c4b9f10dfb2248d0d0cb2e2887fd4598a1d4acda897944a2ffc580ff92719c95cf2aa42dc584674cb5a9bc5765b9d6ddf5789791d15f8dd925aa12bffafbce60827b490bb7df3dda6f2a143c8bf96abc903d83d59a791e2d62814a89b8080a28060568cf24a80ae61179fe84e0ffad00388178cb6a617d37efd54cc01970a4a41d1a8d3ddce46edbba4ab7c90ad565398d376f431189ce8c1c33e132feae6a8cd17a61c630012,324937607d9f16af815701749f0377b3281af9c5bb565d6f2b9611532b6bf044 +0172df732282c9d488669c358e3492260cbe91c95cfbc1e3fea6c4b0ec129b45f242ace09f152fc6234e1bee8aab8cd56e8b486e1dcba9c05407c2f95da8d8f1c0af78ee2ed82a3a79ec0cb0709396ee62aadb84f8a4ee8a7ccca3c1ee84e302a09ea802204afecf04097e67d0f8e8a9d2651126c0a598a37081e42d168b0ae8a71951c524259e4e2054e535b779679bdade566fe55700858618e626b4a0faf895bcce9011504a49e05fd56127eae3d1f8917afb548ecadabda1020111fec9314c413498a360b08640549a22cb23c731ace743252a8227a0d2689d4c6001606678dfb921,b984c2d6b6fdc28574aad551fc16b68f85bf6cc480a15c128ae5616561d46721 +3875b9240cf3e0a8b59c658540f26a701cf188496e2c2174788b126fd29402d6a75453ba0635284d08835f40051a2a9683dc92afb9383719191231170379ba6f4adc816fecbb0f9c446b785bf520796841e58878b73c58d3ebb097ce4761fdeabe15de2f319dfbaf1742cdeb389559c788131a6793e193856661376c81ce9568da19aa6925b47ffd77a43c7a0e758c37d69254909ff0fbd415ef8eb937bcd49f91468b49974c07dc819abd67395db0e05874ff83dddab895344abd0e7111b2df9e58d76d85ad98106b36295826be04d435615595605e4b4bb824b33c4afeb5e7bb0d19f909,91a5b9fc2dcc5faeda57d2e7a41e922dc32d572aebdf6d54cb8c3ae4245e8565 +747cc1a59fefba94a9c75ba866c30dc5c1cb0c0f8e9361d98484956dd5d1a40f6184afbe3dac9f76028d1caeccfbf69199c6ce2b4c092a3f4d2a56fe5a33a00757f4d7dee5dfb0524311a97ae0668a47971b95766e2f6dd48c3f57841f91f04a00ad5ea70f2d479a2620dc5cd78eaab3a3b011719b7e78d19ddf70d9423798af77517ebc55392fcd01fc600d8d466b9e7a7a85bf33f9cc5419e9bd874ddfd60981150ddaf8d7febaa4374f0872a5628d318000311e2f5655365ad4d407c20e5c04df17a222e7deec79c5ab1116d8572f91cd06e1ccc7ced53736fc867fd49ecebe6bf8082e8a,97dca1050a465b60e91ebe26e29adb5a286a0582eee2e89b8b901954293f6146 +57af971fccaec97435dc2ec9ef0429bcedc6b647729ea168858a6e49ac1071e706f4a5a645ca14e8c7746d65511620682c906c8b86ec901f3dded4167b3f00b06cbfac6aee3728051b3e5ff10b4f9ed8bd0b8da94303c833755b3ca3aeddf0b54bc8d6632138b5d25bab03d17b3458a9d782108006f5bb7de75b5c0ba854b423d8bb801e701e99dc4feaad59bc1c7112453b04d33ea3635639fb802c73c2b71d58a56bbd671b18fe34ed2e3dca38827d63fdb1d4fb3285405004b2b3e26081a8ff08cd6d2b08f8e7b7e90a2ab1ed7a41b1d0128522c2f8bff56a7fe67969422ce839a9d4608f03,6d033d85daed3366d5f7d5e4f03b3d05b65778eeea074b0c683cffcd6f51d5bd +04e16dedc1227902baaf332d3d08923601bdd64f573faa1bb7201918cfe16b1e10151dae875da0c0d63c59c3dd050c4c6a874011b018421afc4623ab0381831b2da2a8ba42c96e4f70864ac44e106f94311051e74c77c1291bf5db9539e69567bf6a11cf6932bbbad33f8946bf5814c066d851633d1a513510039b349939bfd42b858c21827c8ff05f1d09b1b0765dc78a135b5ca4dfba0801bcaddfa175623c8b647eacfb4444b85a44f73890607d06d507a4f8393658788669f6ef4deb58d08c50ca0756d5e2f49d1a7ad73e0f0b3d3b5f090acf622b1878c59133e4a848e05153592ea81c6fbf,01ebbb73410eebac665c3b40063d001f43dbe9d1722eb323fe08763d7ff0616c +7c815c384eee0f288ece27cced52a01603127b079c007378bc5d1e6c5e9e6d1c735723acbbd5801ac49854b2b569d4472d33f40bbb8882956245c366dc3582d71696a97a4e19557e41e54dee482a14229005f93afd2c4a7d8614d10a97a9dfa07f7cd946fa45263063ddd29db8f9e34db60daa32684f0072ea2a9426ecebfa5239fb67f29c18cbaa2af6ed4bf4283936823ac1790164fec5457a9cba7c767ca59392d94cab7448f50eb34e9a93a80027471ce59736f099c886dea1ab4cba4d89f5fc7ae2f21ccd27f611eca4626b2d08dc22382e92c1efb2f6afdc8fdc3d2172604f5035c46b8197d3,8d3a49cb572ab99c9bf0231366bb017c9adf25479d35443a971e45787e738ce5 +e29d505158dbdd937d9e3d2145658ee6f5992a2fc790f4f608d9cdb44a091d5b94b88e81fac4fdf5c49442f13b911c55886469629551189eaff62488f1a479b7db11a1560e198ddccccf50159093425ff7f1cb8d1d1246d0978764087d6bac257026b090efae8cec5f22b6f21c59ace1ac7386f5b8837ca6a12b6fbf5534dd0560ef05ca78104d3b943ddb220feaec89aa5e692a00f822a2ab9a2fe60350d75e7be16ff2526dc643872502d01f42f188abed0a6e9a6f5fd0d1ce7d5755c9ffa66b0af0b20bd806f08e06156690d81ac811778ca3dac2c249b96002017fce93e507e3b953acf99964b847,fbb5a0ab1a3b4c4fa56adb1c9531eb9979c554903053013c20fefd3f57b5ccdb +d85588696f576e65eca0155f395f0cfacd83f36a99111ed5768df2d116d2121e32357ba4f54ede927f189f297d3a97fad4e9a0f5b41d8d89dd7fe20156799c2b7b6bf9c957ba0d6763f5c3bc5129747bbb53652b49290cff1c87e2cdf2c4b95d8aaee09bc8fbfa6883e62d237885810491bfc101f1d8c636e3d0ede838ad05c207a3df4fad76452979eb99f29afaecedd1c63b8d36cf378454a1bb67a741c77ac6b6b3f95f4f02b64dabc15438613ea49750df42ee90101f115aa9abb9ff64324dde9dabbb01054e1bd6b4bcdc7930a44c2300d87ca78c06924d0323ad7887e46c90e8c4d100acd9eed21e,6b3dcc7ac6a5cb85b67fc71b4055d3798134deef26fd3eb03a042e0daa35cc85 +3a12f8508b40c32c74492b66323375dcfe49184c78f73179f3314b79e63376b8ac683f5a51f1534bd729b02b04d002f55cbd8e8fc9b5ec1ea6bbe6a0d0e7431518e6ba45d124035f9d3dce0a8bb7bf1430a9f657e0b4ea9f20eb20c786a58181a1e20a96f1628f8728a13bdf7a4b4b32fc8aa7054cc4881ae7fa19afa65c6c3ee1b3ade3192af42054a8a911b8ec1826865d46d93f1e7c5e2b7813c92a506e53886f3d4701bb93d2a681ad109c845904bb861af8af0646b6e399b38b614051d34f6842563a0f37ec00cb3d865fc5d746c4987de2a65071100883a2a9c7a2bfe1e2dd603d9ea24dc7c5fd06be,5d1dba8f1584ac3f36b3ac925ec13ac284013b9664965ab6265b942466b5d8ec +1861edce46fa5ad17e1ff1deae084dec580f97d0a67885dfe834b9dfac1ae076742ce9e267512ca51f6df5a455af0c5fd6abf94acea103a3370c354485a7846fb84f3ac7c2904b5b2fbf227002ce512133bb7e1c4e50057bfd1e44db33c7cdb969a99e284b184f50a14b068a1fc5009d9b298dbe92239572a7627aac02abe8f3e3b473417f36d4d2505d16b7577f4526c9d94a270a2dfe450d06da8f6fa956879a0a55cfe99e742ea555ea477ba3e9b44ccd508c375423611af92e55345dc215779b2d5119eba49c71d49b9fe3f1569fa24e5ca3e332d042422a8b8158d3ec66a80012976f31ffdf305f0c9c5e,89c6c86db0a889aa67d8cb085f9f4312645972d977c5b952d9f6243d7d3be4d5 +08d0ffde3a6e4ef65608ea672e4830c12943d7187ccff08f4941cfc13e545f3b9c7ad5eebbe2b01642b486caf855c2c73f58c1e4e3391da8e2d63d96e15fd84953ae5c231911b00ad6050cd7aafdaac9b0f663ae6aab45519d0f5391a541707d479034e73a6ad805ae3598096af078f1393301493d663dd71f83869ca27ba508b7e91e81e128c1716dc3acfe3084b2201e04cf8006617eecf1b640474a5d45cfde9f4d3ef92d6d055b909892194d8a8218db6d8203a84261d200d71473d7488f3427416b6896c137d455f231071cacbc86e0415ab88aec841d96b7b8af41e05bb461a40645bf176601f1e760de5f,ac02432a5541c26238c6f99fadb2b23b5ffcad8f04bd4c3b9a6620cab1266e6b +d782abb72a5be3392757be02d3e45be6e2099d6f000d042c8a543f50ed6ebc055a7f133b0dd8e9bc348536edcaae2e12ec18e8837df7a1b3c87ec46d50c241dee820fd586197552dc20beea50f445a07a38f1768a39e2b2ff05dddedf751f1def612d2e4d810daa3a0cc904516f9a43af660315385178a529e51f8aae141808c8bc5d7b60cac26bb984ac1890d0436ef780426c547e94a7b08f01acbfc4a3825eae04f520a9016f2fb8bf5165ed12736fc71e36a49a73614739eaa3ec834069b1b40f1350c2b3ab885c02c640b9f7686ed5f99527e41cfcd796fe4c256c9173186c226169ff257954ebda81c0e5f99,f55aa01deab12148e35759db818f1059351165e9e6f93d342f0abfca102e0801 +5fce8109a358570e40983e1184e541833bb9091e280f258cfb144387b05d190e431cb19baa67273ba0c58abe91308e1844dcd0b3678baa42f335f2fa05267a0240b3c718a5942b3b3e3bfa98a55c25a1466e8d7a603722cb2bbf03afa54cd769a99f310735ee5a05dae2c22d397bd95635f58c48a67f90e1b73aafcd3f82117f0166657838691005b18da6f341d6e90fc1cdb352b30fae45d348294e501b63252de14740f2b85ae5299ddec3172de8b6d0ba219a20a23bb5e10ff434d39db3f583305e9f5c039d98569e377b75a70ab837d1df269b8a4b566f40bb91b577455fd3c356c914fa06b9a7ce24c7317a172d,7c0bda7cb42dadbd037f50a5f27e3ab5da258d4670f1bea90154c87c98136ba1 +6172f1971a6e1e4e6170afbad95d5fec99bf69b24b674bc17dd78011615e502de6f56b86b1a71d3f4348087218ac7b7d09302993be272e4a591968aef18a1262d665610d1070ee91cc8da36e1f841a69a7a682c580e836941d21d909a3afc1f0b963e1ca5ab193e124a1a53df1c587470e5881fb54dae1b0d840f0c8f9d1b04c645ba1041c7d8dbf22030a623aa15638b3d99a2c400ff76f3252079af88d2b37f35ee66c1ad7801a28d3d388ac450b97d5f0f79e4541755356b3b1a5696b023f39ab7ab5f28df4202936bc97393b93bc915cb159ea1bd7a0a414cb4b7a1ac3af68f50d79f0c9c7314e750f7d02faa58bfa,f60c53ba2132293b881f0513e7ab47fe9746ed4a6ac9cade61e6d802d5872372 +5668ecd99dfbe215c4118398ac9c9eaf1a1433fab4ccdd3968064752b625ea944731f75d48a27d047d67547f14dd0ffaa55fa5e29f7af0d161d85eafc4f2029b717c918eab9d304543290bdba7158b68020c0ba4e079bc95b5bc0fc044a992b94b4ccd3bd66d0eabb5dbbab904d62e00752c4e3b0091d773bcf4c14b4377da3efff824b1cb2fa01b32d1e46c909e626ed2dae920f4c7dbeb635bc754facbd8d49beba3f23c1c41ccbfcd0ee0c114e69737f5597c0bf1d859f0c767e18002ae8e39c26261ffde2920d3d0baf0e906138696cfe5b7e32b600f45df3aaa39932f3a7df95b60fa8712a2271fcaf3911ce7b511b1,1c66b9a7c50ed77d179a0c437d5890c9835a13f90a73a01332ab0731a41a115e +03d625488354df30e3f875a68edfcf340e8366a8e1ab67f9d5c5486a96829dfac0578289082b2a62117e1cf418b43b90e0adc881fc6ae8105c888e9ecd21aea1c9ae1a4038dfd17378fed71d02ae492087d7cdcd98f746855227967cb1ab4714261ee3bead3f4db118329d3ebef4bc48a875c19ba763966da0ebea800e01b2f50b00e9dd4caca6dcb314d00184ef71ea2391d760c950710db4a70f9212ffc54861f9dc752ce18867b8ad0c48df8466ef7231e7ac567f0eb55099e622ebb86cb237520190a61c66ad34f1f4e289cb3282ae3eaac6152ed24d2c92bae5a7658252a53c49b7b02dfe54fdb2e90074b6cf310ac661,48a00ba224ac5558f41a79f52137db9182a93f1045d43789e5913d7be40408c2 +2edc282ffb90b97118dd03aaa03b145f363905e3cbd2d50ecd692b37bf000185c651d3e9726c690d3773ec1e48510e42b17742b0b0377e7de6b8f55e00a8a4db4740cee6db0830529dd19617501dc1e9359aa3bcf147e0a76b3ab70c4984c13e339e6806bb35e683af8527093670859f3d8a0fc7d493bcba6bb12b5f65e71e705ca5d6c948d66ed3d730b26db395b3447737c26fad089aa0ad0e306cb28bf0acf106f89af3745f0ec72d534968cca543cd2ca50c94b1456743254e358c1317c07a07bf2b0eca438a709367fafc89a57239028fc5fecfd53b8ef958ef10ee0608b7f5cb9923ad97058ec067700cc746c127a61ee3,240a85eaf7f3016c192ad5e17e5f93b643fe3edba719f423693a34da3784827a +90b28a6aa1fe533915bcb8e81ed6cacdc10962b7ff82474f845eeb86977600cf70b07ba8e3796141ee340e3fce842a38a50afbe90301a3bdcc591f2e7d9de53e495525560b908c892439990a2ca2679c5539ffdf636777ad9c1cdef809cda9e8dcdb451abb9e9c17efa4379abd24b182bd981cafc792640a183b61694301d04c5b3eaad694a6bd4cc06ef5da8fa23b4fa2a64559c5a68397930079d250c51bcf00e2b16a6c49171433b0aadfd80231276560b80458dd77089b7a1bbcc9e7e4b9f881eacd6c92c4318348a13f4914eb27115a1cfc5d16d7fd94954c3532efaca2cab025103b2d02c6fd71da3a77f417d7932685888a,2aa9d0a1d9b9b691b4b8641e68d454d2d9c34ce43a5b55dd57590716b8a46cf7 +2969447d175490f2aa9bb055014dbef2e6854c95f8d60950bfe8c0be8de254c26b2d31b9e4de9c68c9adf49e4ee9b1c2850967f29f5d08738483b417bb96b2a56f0c8aca632b552059c59aac3f61f7b45c966b75f1d9931ff4e596406378cee91aaa726a3a84c33f37e9cdbe626b5745a0b06064a8a8d56e53aaf102d23dd9df0a3fdf7a638509a6761a33fa42fa8ddbd8e16159c93008b53765019c3f0e9f10b144ce2ac57f5d7297f9c9949e4ff68b70d339f87501ce8550b772f32c6da8ad2ce2100a895d8b08fa1eead7c376b407709703c510b50f87e73e43f8e7348f87c3832a547ef2bbe5799abedcf5e1f372ea809233f006,58c469e1a76835cc1a897b885b1b2a33b0aabce4cfbb65523d2e0d08d6d1a413 +721645633a44a2c78b19024eaecf58575ab23c27190833c26875dc0f0d50b46aea9c343d82ea7d5b3e50ec700545c615daeaea64726a0f05607576dcd396d812b03fb6551c641087856d050b10e6a4d5577b82a98afb89cee8594c9dc19e79feff0382fcfd127f1b803a4b9946f4ac9a4378e1e6e041b1389a53e3450cd32d9d2941b0cbabdb50da8ea2513145164c3ab6bcbd251c448d2d4b087ac57a59c2285d564f16da4ed5e607ed979592146ffb0ef3f3db308fb342df5eb5924a48256fc763141a278814c82d6d6348577545870ae3a83c7230ac02a1540fe1798f7ef09e335a865a2ae0949b21e4f748fb8a51f44750e213a8fb,6c8df81b1e1ed70a5413368018db9628b0e0b4563423c051a54d000aadde0c06 +6b860d39725a14b498bb714574b4d37ca787404768f64c648b1751b353ac92bac2c3a28ea909fdf0423336401a02e63ec24325300d823b6864bb701f9d7c7a1f8ec9d0ae3584aa6dd62ea1997cd831b4babd9a4da50932d4efda745c61e4130890e156aee6113716daf95764222a91187db2effea49d5d0596102d619bd26a616bbfda8335505fbb0d90b4c180d1a2335b91538e1668f9f9642790b4e55f9cab0fe2bdd2935d001ee6419abab5457880d0dbff20ed8758f4c20fe759efb33141cf0e892587fe8187e5fbc57786b7e8b089612c936dfc03d27efbbe7c8673f1606bd51d5ff386f4a7ab68edf59f385eb1291f117bfe717399,108fff41d5bcf654071b4414e666fdebbe878c309d6ddc90afaf5c61df8559f0 +6a01830af3889a25183244decb508bd01253d5b508ab490d3124afbf42626b2e70894e9b562b288d0a2450cfacf14a0ddae5c04716e5a0082c33981f6037d23d5e045ee1ef2283fb8b6378a914c5d9441627a722c282ff452e25a7ea608d69cee4393a0725d17963d0342684f255496d8a18c2961145315130549311fc07f0312fb78e6077334f87eaa873bee8aa95698996eb21375eb2b4ef53c14401207deb4568398e5dd9a7cf97e8c9663e23334b46912f8344c19efcf8c2ba6f04325f1a27e062b62a58d0766fc6db4d2c6a1928604b0175d872d16b7908ebc041761187cc785526c2a3873feac3a642bb39f5351550af9770c328af7b,751eaaafa4aec8acd26606d6439c55b5c66ec7db807579edc68994b300f7a077 +b3c5e74b69933c2533106c563b4ca20238f2b6e675e8681e34a389894785bdade59652d4a73d80a5c85bd454fd1e9ffdad1c3815f5038e9ef432aac5c3c4fe840cc370cf86580a6011778bbedaf511a51b56d1a2eb68394aa299e26da9ada6a2f39b9faff7fba457689b9c1a577b2a1e505fdf75c7a0a64b1df81b3a356001bf0df4e02a1fc59f651c9d585ec6224bb279c6beba2966e8882d68376081b987468e7aed1ef90ebd090ae825795cdca1b4f09a979c8dfc21a48d8a53cdbb26c4db547fc06efe2f9850edd2685a4661cb4911f165d4b63ef25b87d0a96d3dff6ab0758999aad214d07bd4f133a6734fde445fe474711b69a98f7e2b,90c2d5f8e26b0bddea719064bb02a6242f2cc5a42936b14fe17f861b47b7e186 +83af34279ccb5430febec07a81950d30f4b66f484826afee7456f0071a51e1bbc55570b5cc7ec6f9309c17bf5befdd7c6ba6e968cf218a2b34bd5cf927ab846e38a40bbd81759e9e33381016a755f699df35d660007b5eadf292feefb735207ebf70b5bd17834f7bfa0e16cb219ad4af524ab1ea37334aa66435e5d397fc0a065c411ebbce32c240b90476d307ce802ec82c1c49bc1bec48c0675ec2a6c6f3ed3e5b741d13437095707c565e10d8a20b8c20468ff9514fcf31b4249cd82dcee58c0a2af538b291a87e3390d737191a07484a5d3f3fb8c8f15ce056e5e5f8febe5e1fb59d6740980aa06ca8a0c20f5712b4cde5d032e92ab89f0ae1,3298a95cfe59b9d6cab99c36dc1324194c09f97f08944a02d9574bbca3186b41 +a7ed84749ccc56bb1dfba57119d279d412b8a986886d810f067af349e8749e9ea746a60b03742636c464fc1ee233acc52c1983914692b64309edfdf29f1ab912ec3e8da074d3f1d231511f5756f0b6eead3e89a6a88fe330a10face267bffbfc3e3090c7fd9a850561f363ad75ea881e7244f80ff55802d5ef7a1a4e7b89fcfa80f16df54d1b056ee637e6964b9e0ffd15b6196bdd7db270c56b47251485348e49813b4eb9ed122a01b3ea45ad5e1a929df61d5c0f3e77e1fdc356b63883a60e9cbb9fc3e00c2f32dbd469659883f690c6772e335f617bc33f161d6f6984252ee12e62b6000ac5231e0c9bc65be223d8dfd94c5004a101af9fd6c0fb,1c4172928cb10e16ab3cdb33f815103b000a6c7d62376cad29af03f4b2b0e103 +a6fe30dcfcda1a329e82ab50e32b5f50eb25c873c5d2305860a835aecee6264aa36a47429922c4b8b3afd00da16035830edb897831c4e7b00f2c23fc0b15fdc30d85fb70c30c431c638e1a25b51caf1d7e8b050b7f89bfb30f59f0f20fecff3d639abc4255b3868fc45dd81e47eb12ab40f2aac735df5d1dc1ad997cefc4d836b854cee9ac02900036f3867fe0d84afff37bde3308c2206c62c4743375094108877c73b87b2546fe05ea137bedfc06a2796274099a0d554da8f7d7223a48cbf31b7decaa1ebc8b145763e3673168c1b1b715c1cd99ecd3ddb238b06049885ecad9347c2436dff32c771f34a38587a44a82c5d3d137a03caa27e66c8ff6,f5cfb4df3f7c5a778f38a3b43b26479a0e8a49030c59ac19fb0cfa806081ca4a +83167ff53704c3aa19e9fb3303539759c46dd4091a52ddae9ad86408b69335989e61414bc20ab4d01220e35241eff5c9522b079fba597674c8d716fe441e566110b6211531ceccf8fd06bc8e511d00785e57788ed9a1c5c73524f01830d2e1148c92d0edc97113e3b7b5cd3049627abdb8b39dd4d6890e0ee91993f92b03354a88f52251c546e64434d9c3d74544f23fb93e5a2d2f1fb15545b4e1367c97335b0291944c8b730ad3d4789273fa44fb98d78a36c3c3764abeeac7c569c1e43a352e5b770c3504f87090dee075a1c4c85c0c39cf421bdcc615f9eff6cb4fe6468004aece5f30e1ecc6db22ad9939bb2b0ccc96521dfbf4ae008b5b46bc006e,06ab8fdbe4dce935e42003c17ff60ba236f43a843995b7fef3a29dfe0c82f1d4 +3a3a819c48efde2ad914fbf00e18ab6bc4f14513ab27d0c178a188b61431e7f5623cb66b23346775d386b50e982c493adbbfc54b9a3cd383382336a1a0b2150a15358f336d03ae18f666c7573d55c4fd181c29e6ccfde63ea35f0adf5885cfc0a3d84a2b2e4dd24496db789e663170cef74798aa1bbcd4574ea0bba40489d764b2f83aadc66b148b4a0cd95246c127d5871c4f11418690a5ddf01246a0c80a43c70088b6183639dcfda4125bd113a8f49ee23ed306faac576c3fb0c1e256671d817fc2534a52f5b439f72e424de376f4c565cca82307dd9ef76da5b7c4eb7e085172e328807c02d011ffbf33785378d79dc266f6a5be6bb0e4a92eceebaeb1,c11f3522a8fb7b3532d80b6d40023a92b489addad93bf5d64b23f35e9663521c +# EOF diff --git a/Lib/test/vectors/sha3_384.txt b/Lib/test/vectors/sha3_384.txt new file mode 100644 index 0000000000000000000000000000000000000000..8fc47066f096d613e3e3a31854b444f0e94e7b38 --- /dev/null +++ b/Lib/test/vectors/sha3_384.txt @@ -0,0 +1,258 @@ +# ShortMsgKAT_SHA3-384.txt +,0c63a75b845e4f7d01107d852e4c2485c51a50aaaa94fc61995e71bbee983a2ac3713831264adb47fb6bd1e058d5f004 +cc,5ee7f374973cd4bb3dc41e3081346798497ff6e36cb9352281dfe07d07fc530ca9ad8ef7aad56ef5d41be83d5e543807 +41fb,1dd81609dcc290effd7ac0a95d4a20821580e56bd50dbd843920650be7a80a1719577da337cfdf86e51c764caa2e10bd +1f877c,14f6f486fb98ed46a4a198040da8079e79e448daacebe905fb4cf0df86ef2a7151f62fe095bf8516eb0677fe607734e2 +c1ecfdfc,d92bbd604bdd24b9889508f8558b13e96595ac90bc8a441daf9b51d6abc14ffd0835fb9366e3912504264ce87e421cb8 +21f134ac57,e248d6ff342d35a30ec230ba51cdb161025d6f1c251aca6ae3531f0682c164a1fc0725b1beff808a200c131557a22809 +c6f50bb74e29,d6dd2ed08c1f644857a15dafaf80538bee597278c9abe047bfbabfb8b1fcb7543e80ae9f7143d00f4daaf39b138ab3ff +119713cc83eeef,49ca1eb8d71d1fdc7a72daa320c8f9ca543671c2cb8fe9b2638a8416df50a790a50d0bb6b88741d7816d6061f46aea89 +4a4f202484512526,89dbf4c39b8fb46fdf0a6926cec0355a4bdbf9c6a446e140b7c8bd08ff6f489f205daf8effe160f437f67491ef897c23 +1f66ab4185ed9b6375,d6154641d7d9df62f0cedc2bd64ee82412b3a80f6eace7c45f9703373379007eabf592d2d2116e093dc33dcbba4649e9 +eed7422227613b6f53c9,2ee5df2591cfc4cb1e1d0bd8b28727f0fa5359a75f7819a92a3cb80ddb5708e4705177b981396b4818d11e3ca615ec93 +eaeed5cdffd89dece455f1,786c3f73fb092be184fc2b19f5920f3d94f25d4523165ae82f9b39b2c724fd62dc9a3263091a239d5ef1ad562dd4fd26 +5be43c90f22902e4fe8ed2d3,79188139ec2cad8d197d308b806cf383782c29a8c27ee29c5e31425b2dd18b2f5f491fbfb38d7078f58510125c064a0a +a746273228122f381c3b46e4f1,0c82b8c75c5d540e7d624928281fba8b8d0b1583d74f3f0ea4f200f1ce5475149c282e05db695dc67baf42deffdc3f55 +3c5871cd619c69a63b540eb5a625,830d2325c001623edfea97ea1d0e65982d4ed7abb8e64ea61c85e9bc1882d11fc4153c30be63fc66f5fbce74bb394596 +fa22874bcc068879e8ef11a69f0722,1dbe1bc60a9c6fbe10a727e2a6d397930d547ad2c390286948c3167ee77ff6e275ec8431c5ad4b4e4e5ae67a4bc88d05 +52a608ab21ccdd8a4457a57ede782176,feee2ef332515284e0ba247c62f264199044d03877c58e54b51a62e39e91c27aaae384837eb9d479b4c0308cfc6b779b +82e192e4043ddcd12ecf52969d0f807eed,1888e953727cb837de40c69869560c20729c50638e4561b385937bfc4c297e789ea6c03efcf2df3290b1fd36be268c32 +75683dcb556140c522543bb6e9098b21a21e,30de7b544265422ce689e667f48498f455e8bf1055653f21294ead7d2e898b05fa75eeca46dc2575c475c480aa49ca62 +06e4efe45035e61faaf4287b4d8d1f12ca97e5,041b7c89bd4b582a7d20e579c6fdb18ba0c1251dabacc687af448eb49151bbc04adcb81d797d4bc51f03bfff230ffcc6 +e26193989d06568fe688e75540aea06747d9f851,eaf751ee6e75aa2c56453f316c019bda7d7ae1fda03b79ac413bb1f2840d58aaaac77f2dc106d22f1a71157f9f841c4b +d8dc8fdefbdce9d44e4cbafe78447bae3b5436102a,16c4a7f7e8ba7ea13c59576be602f885e21be7c34b3ac05cac4262baad8aa3f95bd9260f13f08550ce331ec773ba758c +57085fd7e14216ab102d8317b0cb338a786d5fc32d8f,5119a4fc11daf2ef5deb7aeb35549162d9afc827392a8868e7f8594a5c194d9c8f6a430cb386b8d825cc6dab4edb742a +a05404df5dbb57697e2c16fa29defac8ab3560d6126fa0,a91f0170457e78b3bb15b0bdc0ff4efe8d7313d2725d8e8db875bcafbc11314126559f45e86e78136eb214ff02764cab +aecbb02759f7433d6fcb06963c74061cd83b5b3ffa6f13c6,98fe81746ccf7cfe5571d6d8b09943ecae44f606444f9dabf1a57fe4e871f6962266d18652fd4eebdbe492cfc5b2b21f +aafdc9243d3d4a096558a360cc27c8d862f0be73db5e88aa55,3dd9054c105c40798df45cfb5880f97a9536fa7bd13f1d816b8ee887fcbafc102a7d4bde9fe6e265538eec2525b50d89 +7bc84867f6f9e9fdc3e1046cae3a52c77ed485860ee260e30b15,decd778b89b4295072dbf98689e2eb6066e406356ea4b7cad550019f4a2abb25163e9571d0adb9adc6a802b7e03c152c +fac523575a99ec48279a7a459e98ff901918a475034327efb55843,37f14b317d46bdb3e5dd6f68986a08a098c46b9d85d1f254a17878c008f97926c8a13c3838721cfe3a58076f3992f26c +0f8b2d8fcfd9d68cffc17ccfb117709b53d26462a3f346fb7c79b85e,641a7af13b889d1a0f1aa3e4e4ff8cc5903c47e1a52bdea257d80e37e596564ab33eead06717cdb6b706cb6986293d4f +a963c3e895ff5a0be4824400518d81412f875fa50521e26e85eac90c04,122b8b86103fe3c18ff28178a256acb0cab8518338d2cba697e3f560ecfee09b024b97d8d1f69632ad1f2c5f5628d3ef +03a18688b10cc0edf83adf0a84808a9718383c4070c6c4f295098699ac2c,f35a292e197007e28ce652a067173f3659c51b70438aa9e433081d3df71b4a11e3f3be5af32e2c08d23a0b44e30b0bdf +84fb51b517df6c5accb5d022f8f28da09b10232d42320ffc32dbecc3835b29,2ea596b446d5ccd8f0927a2e3790911e00f1f52cfbfc41f12290cbacd1c903c74deef840fd1398e12ee863acd92baebf +9f2fcc7c90de090d6b87cd7e9718c1ea6cb21118fc2d5de9f97e5db6ac1e9c10,baae7aaed4fbf42f9316c7e8f722eeb06a598b509f184b22fbd5a81c93d95fff711f5de90847b3248b6df76cabce07ee +de8f1b3faa4b7040ed4563c3b8e598253178e87e4d0df75e4ff2f2dedd5a0be046,32cfc8a18a7116d4b9029051941808c3b332efdb132c515f9110e19b8354355d94616c9965bc2d1f2489f8452af7fb2f +62f154ec394d0bc757d045c798c8b87a00e0655d0481a7d2d9fb58d93aedc676b5a0,73443ea38a8801395c044e3cbecd45dd62d6e304c5440fa9fe9651a438c010a76712759be20681f1416661e746e5eb77 +b2dcfe9ff19e2b23ce7da2a4207d3e5ec7c6112a8a22aec9675a886378e14e5bfbad4e,6e82f460660f3d2cc33aa59a37f325eed0133fe29a9cb428a3c22572b6bf6c5da2d0d4645c49135653a049795d4e2ad0 +47f5697ac8c31409c0868827347a613a3562041c633cf1f1f86865a576e02835ed2c2492,229160a61cf2842b37ea85788bb1ce8294ded9ead266359d61df3d6df98ee155ed03ab1a51d6291b41680a00553298eb +512a6d292e67ecb2fe486bfe92660953a75484ff4c4f2eca2b0af0edcdd4339c6b2ee4e542,f5d838dedf07ac3a5646221adc6ca59045976df9c33367fdaa0be3afc57eef0d434ee92cd618b3fa26c7eabd18d78772 +973cf2b4dcf0bfa872b41194cb05bb4e16760a1840d8343301802576197ec19e2a1493d8f4fb,d41a324a1739bbcfc983a2b250750a1117e57bd26512cc5dca7066d8b972ad9eb0bb3c7e36b9b84fc0e8129b69cd3847 +80beebcd2e3f8a9451d4499961c9731ae667cdc24ea020ce3b9aa4bbc0a7f79e30a934467da4b0,170d73baf77eae7a852a1bb19ba6665f9ef425a66f2649e959b5caa82d01fdb89c8c7fa6f40702f7c3391b146f6fa33e +7abaa12ec2a7347674e444140ae0fb659d08e1c66decd8d6eae925fa451d65f3c0308e29446b8ed3,a8f4a60a8ff5b3ebb4eadb9c46f1f403ab7ff632c7a11f80fc9153858b484291b3936713076955207d0c7e1964dc1346 +c88dee9927679b8af422abcbacf283b904ff31e1cac58c7819809f65d5807d46723b20f67ba610c2b7,5815d78aca9600632239b7ce8385d7e837f883857601efb78f9c2dac9a96ae0bfd107526f268d06fb4227d4774a9e727 +01e43fe350fcec450ec9b102053e6b5d56e09896e0ddd9074fe138e6038210270c834ce6eadc2bb86bf6,a5d91b01650d24b4753f41871fa700e997d5f1ef9c06d8f9b3a9b2d318716408e1566bb04b49b84e77f5f73d8f640541 +337023370a48b62ee43546f17c4ef2bf8d7ecd1d49f90bab604b839c2e6e5bd21540d29ba27ab8e309a4b7,c7ba066881db931e9c674d74ce2309b3002c6d5bc22056c454261cdbc5d93fe310eadd755e41fb1d789fdb9a73fda28f +6892540f964c8c74bd2db02c0ad884510cb38afd4438af31fc912756f3efec6b32b58ebc38fc2a6b913596a8,a52ca3413bb83934b1ead4686f639b90c5ee3cb5be7e29a1a5293c868441d79be2ef246b427ffcf0568d4d01be54ff0d +f5961dfd2b1ffffda4ffbf30560c165bfedab8ce0be525845deb8dc61004b7db38467205f5dcfb34a2acfe96c0,13e60554fa18cef87ceabe147541886d97c2fb5f40f163d953306d2a26b013b33cb202d78aef49fd47e7ec1c745920cd +ca061a2eb6ceed8881ce2057172d869d73a1951e63d57261384b80ceb5451e77b06cf0f5a0ea15ca907ee1c27eba,e4e03ccba92bbd28182d005f69de4e71c61c62cd323decfb2addbeeff7ee74933aa7a167e4e1dbb3df7e5c91184f2d88 +1743a77251d69242750c4f1140532cd3c33f9b5ccdf7514e8584d4a5f9fbd730bcf84d0d4726364b9bf95ab251d9bb,9b26e9bf13b6fc33fd335df976c8e1b781c800895ebd72e34f96eb875b41f04aaee825cd8f0eb6c43d803f4e6ef688a9 +d8faba1f5194c4db5f176fabfff856924ef627a37cd08cf55608bba8f1e324d7c7f157298eabc4dce7d89ce5162499f9,a127fefcdd240f762cce3f5f1551fc7e1cdebc7950d1cd94c6888f490cb2285a10fd0ee797b168c5ca4761fa232aaf05 +be9684be70340860373c9c482ba517e899fc81baaa12e5c6d7727975d1d41ba8bef788cdb5cf4606c9c1c7f61aed59f97d,feb5a24edb05bef846b0a1f3f48da212dfc2d0bac746890d4ad72fbe3a7b4ff8e2b542b827779467122271b1e0df2bd2 +7e15d2b9ea74ca60f66c8dfab377d9198b7b16deb6a1ba0ea3c7ee2042f89d3786e779cf053c77785aa9e692f821f14a7f51,8da4f3d1a13197171b02e1ccb07bf51cdbabd833fdc3c3797a113cfa5c71795782c47ce36c389fbad461d0d5b59ca684 +9a219be43713bd578015e9fda66c0f2d83cac563b776ab9f38f3e4f7ef229cb443304fba401efb2bdbd7ece939102298651c86,d19fe4a5f93bcd483daa7af8cb636807962d40af9a507dc4fa4e1fd480a6e8fa3c25fa30eb6b74979ee456c1644a5c1d +c8f2b693bd0d75ef99caebdc22adf4088a95a3542f637203e283bbc3268780e787d68d28cc3897452f6a22aa8573ccebf245972a,63ff3053ace687fb91070ca7fc6a51c259e13da8ac0dd741ab36d1fa930e3bb9ac6a1fad654f7238cfc4485c5f9f8252 +ec0f99711016c6a2a07ad80d16427506ce6f441059fd269442baaa28c6ca037b22eeac49d5d894c0bf66219f2c08e9d0e8ab21de52,39dde02a319b5e869f4c51a1d30ff4d4d88ebe504c54f155aa5fad3316404fdbd1918074d35d14bac88d6f359108a1dc +0dc45181337ca32a8222fe7a3bf42fc9f89744259cff653504d6051fe84b1a7ffd20cb47d4696ce212a686bb9be9a8ab1c697b6d6a33,1959378f32117e58c0141160e16facfe336590196be805d149eb5aeea641f9bb119b3eddfefd817701c82d2f528b823e +de286ba4206e8b005714f80fb1cdfaebde91d29f84603e4a3ebc04686f99a46c9e880b96c574825582e8812a26e5a857ffc6579f63742f,7b172a9bb311b1375e15ece1c1e8f092becfafec9f3144e93f596eb7e6abfb34fcedb08eda7883ebbf40038b7a754f9f +eebcc18057252cbf3f9c070f1a73213356d5d4bc19ac2a411ec8cdeee7a571e2e20eaf61fd0c33a0ffeb297ddb77a97f0a415347db66bcaf,6ba32ecaaa0aa9c59e72173f2a7816ac51f313c467a017190db9832c6311ec23b8d56b7b220fa09a9081962efed5183e +416b5cdc9fe951bd361bd7abfc120a5054758eba88fdd68fd84e39d3b09ac25497d36b43cbe7b85a6a3cebda8db4e5549c3ee51bb6fcb6ac1e,55fdf2ec27d334b5b59efb9b6d518e25be0f5ff6379f7b97945f3e1235ec70295b39ebeabf70fcaf1e61edb1c21a4c06 +5c5faf66f32e0f8311c32e8da8284a4ed60891a5a7e50fb2956b3cbaa79fc66ca376460e100415401fc2b8518c64502f187ea14bfc9503759705,d51a3f33919fe5da0efea6edad201f01fa8416c385a89d96df743d243a6aaba5b7690d187b95caffdacd1e85f56b813b +7167e1e02be1a7ca69d788666f823ae4eef39271f3c26a5cf7cee05bca83161066dc2e217b330df821103799df6d74810eed363adc4ab99f36046a,f1d6e8f95c497d5beafb4215e07cdb59e0e3709cf561618f67e301931d204c6ce477e0f750099584b645e2f718650813 +2fda311dbba27321c5329510fae6948f03210b76d43e7448d1689a063877b6d14c4f6d0eaa96c150051371f7dd8a4119f7da5c483cc3e6723c01fb7d,b1d347d057ccd72867b12bf00bf511f87defcd0fa6adadaf4bb1ad790f06ecbb1f4488a0319b05c46a7874857370ce76 +95d1474a5aab5d2422aca6e481187833a6212bd2d0f91451a67dd786dfc91dfed51b35f47e1deb8a8ab4b9cb67b70179cc26f553ae7b569969ce151b8d,4f192edfa54fece64ac0b3ec9e120b291ade99948805a87bbb04947e928bb5eba87e2ee599960c436ea7c7884187e78c +c71bd7941f41df044a2927a8ff55b4b467c33d089f0988aa253d294addbdb32530c0d4208b10d9959823f0c0f0734684006df79f7099870f6bf53211a88d,75e23fed3b59db6b1d3378b7e8772642cbbff7710d8a91b249bb6c68e384cd416f19ac1e8ed92b71d0ca303d247ee9bd +f57c64006d9ea761892e145c99df1b24640883da79d9ed5262859dcda8c3c32e05b03d984f1ab4a230242ab6b78d368dc5aaa1e6d3498d53371e84b0c1d4ba,c8d1e6be5485fc13bf433f11a580abbe89b12a66d0e5cb141e1d62cdc6a367725793fb25840b36cb7003f2e7df3e5f2f +e926ae8b0af6e53176dbffcc2a6b88c6bd765f939d3d178a9bde9ef3aa131c61e31c1e42cdfaf4b4dcde579a37e150efbef5555b4c1cb40439d835a724e2fae7,423ba134d3bcb5e440ac83372c7eddba3ae3bddf1222f505c19cde246ad76a2b0d07239a54e1d0934c9b3d29d49e5fbd +16e8b3d8f988e9bb04de9c96f2627811c973ce4a5296b4772ca3eefeb80a652bdf21f50df79f32db23f9f73d393b2d57d9a0297f7a2f2e79cfda39fa393df1ac00,662c4851d311a786de4cda7e9ea1eff0bfa462761ff6cf804e591ed9a15b0dc93a2bb6a6cffdc8d7d23a233a52c86ead +fc424eeb27c18a11c01f39c555d8b78a805b88dba1dc2a42ed5e2c0ec737ff68b2456d80eb85e11714fa3f8eabfb906d3c17964cb4f5e76b29c1765db03d91be37fc,5f54b1dafa67ed9b498125e064f0b07f54e754e3f30720dd4a471e9bb6e307f05fb69bc81d391f503c95c3bb671e6973 +abe3472b54e72734bdba7d9158736464251c4f21b33fbbc92d7fac9a35c4e3322ff01d2380cbaa4ef8fb07d21a2128b7b9f5b6d9f34e13f39c7ffc2e72e47888599ba5,a21b55ded8fe41fb2b193fa490420a8b62fcae9a185da85e253daefe85270b6904ba4ecc76bb5128926fff9d79f728ad +36f9f0a65f2ca498d739b944d6eff3da5ebba57e7d9c41598a2b0e4380f3cf4b479ec2348d015ffe6256273511154afcf3b4b4bf09d6c4744fdd0f62d75079d440706b05,341be5677a05eed816a219669d680bbf185b31cf3eb0d289f90210fb1a7940d9bff4909320ae4e3b7274e5be479c46f1 +abc87763cae1ca98bd8c5b82caba54ac83286f87e9610128ae4de68ac95df5e329c360717bd349f26b872528492ca7c94c2c1e1ef56b74dbb65c2ac351981fdb31d06c77a4,d70f78894e292b075a0fe56fb952b2ce87a94ca029347159fbb12b22103dd4dc4c265b7ae88950cca89c40b531437aa4 +94f7ca8e1a54234c6d53cc734bb3d3150c8ba8c5f880eab8d25fed13793a9701ebe320509286fd8e422e931d99c98da4df7e70ae447bab8cffd92382d8a77760a259fc4fbd72,89bd6b7cc9adddffe46bf85c56b8ce66e1b1b46969b197adbf2e34b7059d8bb05f9f53bd1a58a7e0a66e5ef208bf5695 +13bd2811f6ed2b6f04ff3895aceed7bef8dcd45eb121791bc194a0f806206bffc3b9281c2b308b1a729ce008119dd3066e9378acdcc50a98a82e20738800b6cddbe5fe9694ad6d,ae651ef50a20b0f496f104f56f845206ed544b28d0374cbb779146dff2ea5894eb29301fe33872f9b299a79c0c0f28c4 +1eed9cba179a009ec2ec5508773dd305477ca117e6d569e66b5f64c6bc64801ce25a8424ce4a26d575b8a6fb10ead3fd1992edddeec2ebe7150dc98f63adc3237ef57b91397aa8a7,a842918dfbbf3bffccc527b6dd2c0df4eb3f100f0692727da77daf44a654876013b37031c493ac18950003eebd107a29 +ba5b67b5ec3a3ffae2c19dd8176a2ef75c0cd903725d45c9cb7009a900c0b0ca7a2967a95ae68269a6dbf8466c7b6844a1d608ac661f7eff00538e323db5f2c644b78b2d48de1a08aa,20d16cc6af5b4d5aeccead09f300b1dc1da93a608370ee0b2cf15c316508b5ef8c9be27d0f7288617b1e529fc2932038 +0efa26ac5673167dcacab860932ed612f65ff49b80fa9ae65465e5542cb62075df1c5ae54fba4db807be25b070033efa223bdd5b1d3c94c6e1909c02b620d4b1b3a6c9fed24d70749604,69a3bb36f52eb650c6e8242db05659573af811a1a5db908f773d65e74d327f5b65303dd0dd9bd07ff100d050e46fe97d +bbfd933d1fd7bf594ac7f435277dc17d8d5a5b8e4d13d96d2f64e771abbd51a5a8aea741beccbddb177bcea05243ebd003cfdeae877cca4da94605b67691919d8b033f77d384ca01593c1b,d239f2fa1675a1a031e2f6e8a53d6e2f37d081cdb029727b3acbdd7cbfc7d3581bde8d3068aa9a300ae12b7245124508 +90078999fd3c35b8afbf4066cbde335891365f0fc75c1286cdd88fa51fab94f9b8def7c9ac582a5dbcd95817afb7d1b48f63704e19c2baa4df347f48d4a6d603013c23f1e9611d595ebac37c,2f8d747ddf64320297b44f8547ef42fce78a48f0a59a18db1cfb9f43c049628f97c0bb93adaab9617155272424f74027 +64105eca863515c20e7cfbaa0a0b8809046164f374d691cdbd6508aaabc1819f9ac84b52bafc1b0fe7cddbc554b608c01c8904c669d8db316a0953a4c68ece324ec5a49ffdb59a1bd6a292aa0e,714be6f2f934e0b6fd69e392d99acc98592b015e48a1637262f99286502b06774783bb9f371c760c3eb78aeadfbd0df0 +d4654be288b9f3b711c2d02015978a8cc57471d5680a092aa534f7372c71ceaab725a383c4fcf4d8deaa57fca3ce056f312961eccf9b86f14981ba5bed6ab5b4498e1f6c82c6cae6fc14845b3c8a,22a41b117464f7f49682e8139a0d5bd23fe00d1190b1b419f27b490b729b56bba9de649dd7c988b6b308038661e1c362 +12d9394888305ac96e65f2bf0e1b18c29c90fe9d714dd59f651f52b88b3008c588435548066ea2fc4c101118c91f32556224a540de6efddbca296ef1fb00341f5b01fecfc146bdb251b3bdad556cd2,77780f3646d288291790f2a5f4aa9c98a64a1115306994cd65c7620dde06d35117ce4b79dae08b5b4e798459010941bb +871a0d7a5f36c3da1dfce57acd8ab8487c274fad336bc137ebd6ff4658b547c1dcfab65f037aa58f35ef16aff4abe77ba61f65826f7be681b5b6d5a1ea8085e2ae9cd5cf0991878a311b549a6d6af230,5ced3b7368582dd6debfe41d6affd82b72894b51ff4c4accba09c595b36e23e347ab4baab0e5191d86e26e6596d62e23 +e90b4ffef4d457bc7711ff4aa72231ca25af6b2e206f8bf859d8758b89a7cd36105db2538d06da83bad5f663ba11a5f6f61f236fd5f8d53c5e89f183a3cec615b50c7c681e773d109ff7491b5cc22296c5,1410ef9abb8d98b1c65e113a61915b0e6933bc59da31c8fcc39b7165e715919184375d822a07c778f63431be2aeecd99 +e728de62d75856500c4c77a428612cd804f30c3f10d36fb219c5ca0aa30726ab190e5f3f279e0733d77e7267c17be27d21650a9a4d1e32f649627638dbada9702c7ca303269ed14014b2f3cf8b894eac8554,330ed51b045471dea8cff26510d68494611ecfd614d49e5a9cc8846a132519bbcf49907691ac5accfc0528da0c14d49e +6348f229e7b1df3b770c77544e5166e081850fa1c6c88169db74c76e42eb983facb276ad6a0d1fa7b50d3e3b6fcd799ec97470920a7abed47d288ff883e24ca21c7f8016b93bb9b9e078bdb9703d2b781b616e,387111a206fc6488f78d41786886a9e5ec9f73e1131d92f290f68512320a408d5f63eaa5aba32d9853eb11b5b0887e62 +4b127fde5de733a1680c2790363627e63ac8a3f1b4707d982caea258655d9bf18f89afe54127482ba01e08845594b671306a025c9a5c5b6f93b0a39522dc877437be5c2436cbf300ce7ab6747934fcfc30aeaaf6,78573f5d075200d3823194a71e55880f4fe78489234dbf3df3e3734cbcae8dc1d8c1ae95f9efa9903dc4c4581b59ddde +08461f006cff4cc64b752c957287e5a0faabc05c9bff89d23fd902d324c79903b48fcb8f8f4b01f3e4ddb483593d25f000386698f5ade7faade9615fdc50d32785ea51d49894e45baa3dc707e224688c6408b68b11,fdfe4f1b034733c2c94a7b36e2b52774a95c2bde22fcddfcef52f7fef7c67f08e2f7b9b8967e447f76ef91960da76288 +68c8f8849b120e6e0c9969a5866af591a829b92f33cd9a4a3196957a148c49138e1e2f5c7619a6d5edebe995acd81ec8bb9c7b9cfca678d081ea9e25a75d39db04e18d475920ce828b94e72241f24db72546b352a0e4,48d66a4165aa54528ece89bd9aa00eab196f32dfdc4d76f236655835527aaa1642e6bf4edf24f030f5eeef07fa40f5d2 +b8d56472954e31fb54e28fca743f84d8dc34891cb564c64b08f7b71636debd64ca1edbdba7fc5c3e40049ce982bba8c7e0703034e331384695e9de76b5104f2fbc4535ecbeebc33bc27f29f18f6f27e8023b0fbb6f563c,3c2575372ce1f380a6e66bb075fbae98fc2e6d3d267a20ff0313abc3de252e03fd5bdfa8bc2b79fc874ccda4abdbb4a6 +0d58ac665fa84342e60cefee31b1a4eacdb092f122dfc68309077aed1f3e528f578859ee9e4cefb4a728e946324927b675cd4f4ac84f64db3dacfe850c1dd18744c74ceccd9fe4dc214085108f404eab6d8f452b5442a47d,0ee6aeca8dd80b74225ac4882e2bc1e6819c9b94f0d0bc0a1e21aabf4b11cb74db4734bc8d1179d7dcef535be9f3da28 +1755e2d2e5d1c1b0156456b539753ff416651d44698e87002dcf61dcfa2b4e72f264d9ad591df1fdee7b41b2eb00283c5aebb3411323b672eaa145c5125185104f20f335804b02325b6dea65603f349f4d5d8b782dd3469ccd,8027e5044923f8eee1df184865cd97b635a78da199fd80ad3d343a5ae03d1b165e58d1b0bd093ef916a16d6641bda17c +b180de1a611111ee7584ba2c4b020598cd574ac77e404e853d15a101c6f5a2e5c801d7d85dc95286a1804c870bb9f00fd4dcb03aa8328275158819dcad7253f3e3d237aeaa7979268a5db1c6ce08a9ec7c2579783c8afc1f91a7,796818e047913d5afb4ae4c5b7c5d5ef699a3a9ebefb44462ee8fe603ca5628973369e4a9d8e10115fdd75c89707a8f9 +cf3583cbdfd4cbc17063b1e7d90b02f0e6e2ee05f99d77e24e560392535e47e05077157f96813544a17046914f9efb64762a23cf7a49fe52a0a4c01c630cfe8727b81fb99a89ff7cc11dca5173057e0417b8fe7a9efba6d95c555f,1e96eff62e9f464b4802972fdac77c3ea1131b2822619d2c5d863e357d0945c17f93ede66af05d46e63c2857a54f67f4 +072fc02340ef99115bad72f92c01e4c093b9599f6cfc45cb380ee686cb5eb019e806ab9bd55e634ab10aa62a9510cc0672cd3eddb589c7df2b67fcd3329f61b1a4441eca87a33c8f55da4fbbad5cf2b2527b8e983bb31a2fadec7523,4cc41c2fb7d71da1ad36d18029f755daf342e732ec31f0c06e27091307718acb53fa113ae508df38b8c96834de33f9f1 +76eecf956a52649f877528146de33df249cd800e21830f65e90f0f25ca9d6540fde40603230eca6760f1139c7f268deba2060631eea92b1fff05f93fd5572fbe29579ecd48bc3a8d6c2eb4a6b26e38d6c5fbf2c08044aeea470a8f2f26,9a8d4b560421c82991bdfca0898a29a59bdb09d20f8a5b279096723bab382789f081ead50d273eca436c526aba6d5cfc +7adc0b6693e61c269f278e6944a5a2d8300981e40022f839ac644387bfac9086650085c2cdc585fea47b9d2e52d65a2b29a7dc370401ef5d60dd0d21f9e2b90fae919319b14b8c5565b0423cefb827d5f1203302a9d01523498a4db10374,367cb3fe03a3cbb50fae1fe7ea883a0ae53cbe772f709dc5505f3c907564c08fc49707cff9639b25c746b6039ff48ae9 +e1fffa9826cce8b86bccefb8794e48c46cdf372013f782eced1e378269b7be2b7bf51374092261ae120e822be685f2e7a83664bcfbe38fe8633f24e633ffe1988e1bc5acf59a587079a57a910bda60060e85b5f5b6f776f0529639d9cce4bd,bbbd05d69d7a082fcda8ed535d7e4e5de1377bd91e72d42dc95295c9db780169e2f9620ec7a5aff959ff2d946fd20a72 +69f9abba65592ee01db4dce52dbab90b08fc04193602792ee4daa263033d59081587b09bbe49d0b49c9825d22840b2ff5d9c5155f975f8f2c2e7a90c75d2e4a8040fe39f63bbafb403d9e28cc3b86e04e394a9c9e8065bd3c85fa9f0c7891600,be8bec0c2ec721e0c326037ce86a1518fb395c3a9802de01c3e234268ebb9ac9a39a6e404f25fb7febdcf1f7f25dc083 +38a10a352ca5aedfa8e19c64787d8e9c3a75dbf3b8674bfab29b5dbfc15a63d10fae66cd1a6e6d2452d557967eaad89a4c98449787b0b3164ca5b717a93f24eb0b506ceb70cbbcb8d72b2a72993f909aad92f044e0b5a2c9ac9cb16a0ca2f81f49,2aeeaf292ad625221ba79a621217fd1b3f8978ba83fe7ff13b38574fcfaffbd207298854b6f9c27d6677494204221fda +6d8c6e449bc13634f115749c248c17cd148b72157a2c37bf8969ea83b4d6ba8c0ee2711c28ee11495f43049596520ce436004b026b6c1f7292b9c436b055cbb72d530d860d1276a1502a5140e3c3f54a93663e4d20edec32d284e25564f624955b52,9a1761c5759ce67c9c093ec5c831c1ff7cab64ac7c8002066edcaed044def57cea3ef6be98578363d2ce3d1f5ba448f8 +6efcbcaf451c129dbe00b9cef0c3749d3ee9d41c7bd500ade40cdc65dedbbbadb885a5b14b32a0c0d087825201e303288a733842fa7e599c0c514e078f05c821c7a4498b01c40032e9f1872a1c925fa17ce253e8935e4c3c71282242cb716b2089ccc1,4a24a1af68db65c3977431ee81092c776f7cb33d6f08940100ea240a2d1f8623a41d07ce9937bcbec8ca1072a1a78e8b +433c5303131624c0021d868a30825475e8d0bd3052a022180398f4ca4423b98214b6beaac21c8807a2c33f8c93bd42b092cc1b06cedf3224d5ed1ec29784444f22e08a55aa58542b524b02cd3d5d5f6907afe71c5d7462224a3f9d9e53e7e0846dcbb4ce,928e94d19fc60065a5ef7e48018387c80f2d350f306d0f610173719d5c874d4a8acc340fead4be357e1f78124198ad77 +a873e0c67ca639026b6683008f7aa6324d4979550e9bce064ca1e1fb97a30b147a24f3f666c0a72d71348ede701cf2d17e2253c34d1ec3b647dbcef2f879f4eb881c4830b791378c901eb725ea5c172316c6d606e0af7df4df7f76e490cd30b2badf45685f,78a18d62f8a7eff5c6dd75b8cb073fd30ee68c878c2ec58aad1c5dd0eb0ae43698a617bb0c670fce2aa098e0adf425b2 +006917b64f9dcdf1d2d87c8a6173b64f6587168e80faa80f82d84f60301e561e312d9fbce62f39a6fb476e01e925f26bcc91de621449be6504c504830aae394096c8fc7694651051365d4ee9070101ec9b68086f2ea8f8ab7b811ea8ad934d5c9b62c60a4771,eeeb56c3e54fa833b985efa5923c3f0225f419664cedd898c79f64d72d2ad4b125a38be0201846c442eaf0051d516dc9 +f13c972c52cb3cc4a4df28c97f2df11ce089b815466be88863243eb318c2adb1a417cb1041308598541720197b9b1cb5ba2318bd5574d1df2174af14884149ba9b2f446d609df240ce335599957b8ec80876d9a085ae084907bc5961b20bf5f6ca58d5dab38adb,0a834e111b4e840e787c19748465a47d88b3f0f3daaf15db25536bdc6078fa9c05e6c953830274223968847da8bfd20d +e35780eb9799ad4c77535d4ddb683cf33ef367715327cf4c4a58ed9cbdcdd486f669f80189d549a9364fa82a51a52654ec721bb3aab95dceb4a86a6afa93826db923517e928f33e3fba850d45660ef83b9876accafa2a9987a254b137c6e140a21691e1069413848,d1c0fa85c8d183beff99ad9d752b263e286b477f79f0710b010317017397813344b99daf3bb7b1bc5e8d722bac85943a +64ec021c9585e01ffe6d31bb50d44c79b6993d72678163db474947a053674619d158016adb243f5c8d50aa92f50ab36e579ff2dabb780a2b529370daa299207cfbcdd3a9a25006d19c4f1fe33e4b1eaec315d8c6ee1e730623fd1941875b924eb57d6d0c2edc4e78d6,6aedcf4426b2483c0d0d04695bcc052bedd04fa4d17a1bbb2797f6272fa476bfc138e4091409feb1ac0e8bff350a6663 +5954bab512cf327d66b5d9f296180080402624ad7628506b555eea8382562324cf452fba4a2130de3e165d11831a270d9cb97ce8c2d32a96f50d71600bb4ca268cf98e90d6496b0a6619a5a8c63db6d8a0634dfc6c7ec8ea9c006b6c456f1b20cd19e781af20454ac880,acb7013ce75124388187dc0e7430cb74a314d601b6c8d7a7de5cf03197a84f7874ff058808575cb2f10185f561bb06b1 +03d9f92b2c565709a568724a0aff90f8f347f43b02338f94a03ed32e6f33666ff5802da4c81bdce0d0e86c04afd4edc2fc8b4141c2975b6f07639b1994c973d9a9afce3d9d365862003498513bfa166d2629e314d97441667b007414e739d7febf0fe3c32c17aa188a8683,f947469db712ea26f25f709ff7879136ea2a79e0a2d0ed5ee4adf0e167f106bc410c93ae1d986ec211e0fd9a40741857 +f31e8b4f9e0621d531d22a380be5d9abd56faec53cbd39b1fab230ea67184440e5b1d15457bd25f56204fa917fa48e669016cb48c1ffc1e1e45274b3b47379e00a43843cf8601a5551411ec12503e5aac43d8676a1b2297ec7a0800dbfee04292e937f21c005f17411473041,65989bf4ebbf4c21b3dd34551d3f6167910236671bb7f348dc552adb8028a468fa40ef4a8c1227a1a41c28105e64ac20 +758ea3fea738973db0b8be7e599bbef4519373d6e6dcd7195ea885fc991d896762992759c2a09002912fb08e0cb5b76f49162aeb8cf87b172cf3ad190253df612f77b1f0c532e3b5fc99c2d31f8f65011695a087a35ee4eee5e334c369d8ee5d29f695815d866da99df3f79403,b77a69e373af0f733cdad399c9b12642a046e1a7893d3382943a8367d37740df53916f6daf90517b39621c14343754a2 +47c6e0c2b74948465921868804f0f7bd50dd323583dc784f998a93cd1ca4c6ef84d41dc81c2c40f34b5bee6a93867b3bdba0052c5f59e6f3657918c382e771d33109122cc8bb0e1e53c4e3d13b43ce44970f5e0c079d2ad7d7a3549cd75760c21bb15b447589e86e8d76b1e9ced2,3d14b6fae6156e7876367897a49269181ea58cc3ca9621c0f81d6a5fb6f615680d909b29f6af7e62fad04d70046be997 +f690a132ab46b28edfa6479283d6444e371c6459108afd9c35dbd235e0b6b6ff4c4ea58e7554bd002460433b2164ca51e868f7947d7d7a0d792e4abf0be5f450853cc40d85485b2b8857ea31b5ea6e4ccfa2f3a7ef3380066d7d8979fdac618aad3d7e886dea4f005ae4ad05e5065f,456ad01908e187ca2ce9e7a4daed8788c909e9bc974efd1c9a44ac36db9b6da985c947c7e0a47ab27bf10cd760fa48af +58d6a99bc6458824b256916770a8417040721cccfd4b79eacd8b65a3767ce5ba7e74104c985ac56b8cc9aebd16febd4cda5adb130b0ff2329cc8d611eb14dac268a2f9e633c99de33997fea41c52a7c5e1317d5b5daed35eba7d5a60e45d1fa7eaabc35f5c2b0a0f2379231953322c4e,c26bdac454e1adc0d090d0c5254a29966611b6673014cbaca24d26b6f63ec7e8f993ba3df7df89770e902d5f6574f6a8 +befab574396d7f8b6705e2d5b58b2c1c820bb24e3f4bae3e8fbcd36dbf734ee14e5d6ab972aedd3540235466e825850ee4c512ea9795abfd33f330d9fd7f79e62bbb63a6ea85de15beaeea6f8d204a28956059e2632d11861dfb0e65bc07ac8a159388d5c3277e227286f65ff5e5b5aec1,1d85bf9aa2b6dcc3105e7d7f91069f01e4c998d6f03b77650d75839d65a7a049196fd935afeffdeb657bc8f96b7c17b5 +8e58144fa9179d686478622ce450c748260c95d1ba43b8f9b59abeca8d93488da73463ef40198b4d16fb0b0707201347e0506ff19d01bea0f42b8af9e71a1f1bd168781069d4d338fdef00bf419fbb003031df671f4a37979564f69282de9c65407847dd0da505ab1641c02dea4f0d834986,085cfa581cf3f4f19416bee3ed5ac2544662aa51bdf1d2e348d9bcc27343487df20b18d9f6fb64565868504a6805d176 +b55c10eae0ec684c16d13463f29291bf26c82e2fa0422a99c71db4af14dd9c7f33eda52fd73d017cc0f2dbe734d831f0d820d06d5f89dacc485739144f8cfd4799223b1aff9031a105cb6a029ba71e6e5867d85a554991c38df3c9ef8c1e1e9a7630be61caabca69280c399c1fb7a12d12aefc,376088f09039caa40bf19ff5e5f193fc9ecb6116a0acb3237aaab6cd807bd7af45d804d837a18d2bd9a8c3daa3a1d153 +2eeea693f585f4ed6f6f8865bbae47a6908aecd7c429e4bec4f0de1d0ca0183fa201a0cb14a529b7d7ac0e6ff6607a3243ee9fb11bcf3e2304fe75ffcddd6c5c2e2a4cd45f63c962d010645058d36571404a6d2b4f44755434d76998e83409c3205aa1615db44057db991231d2cb42624574f545,cd40b35fbd90b04d0641f71088f7c6159d8eb16de8aae09f355877a0333b53150b81d36c5c2446bf5ac462ef84d4e572 +dab11dc0b047db0420a585f56c42d93175562852428499f66a0db811fcdddab2f7cdffed1543e5fb72110b64686bc7b6887a538ad44c050f1e42631bc4ec8a9f2a047163d822a38989ee4aab01b4c1f161b062d873b1cfa388fd301514f62224157b9bef423c7783b7aac8d30d65cd1bba8d689c2d,db14442400597871fa56d10f53be7bb4002c44624c44e89c99b95122676a76ff28840285239e2e4fbfb751e4179577d8 +42e99a2f80aee0e001279a2434f731e01d34a44b1a8101726921c0590c30f3120eb83059f325e894a5ac959dca71ce2214799916424e859d27d789437b9d27240bf8c35adbafcecc322b48aa205b293962d858652abacbd588bcf6cbc388d0993bd622f96ed54614c25b6a9aa527589eaaffcf17ddf7,4509adb6177bc6debca7e36948f07001159a57ec8cca2b76c770735c5bccc679da6ab4e64d915d0e1a754c3fda11b524 +3c9b46450c0f2cae8e3823f8bdb4277f31b744ce2eb17054bddc6dff36af7f49fb8a2320cc3bdf8e0a2ea29ad3a55de1165d219adeddb5175253e2d1489e9b6fdd02e2c3d3a4b54d60e3a47334c37913c5695378a669e9b72dec32af5434f93f46176ebf044c4784467c700470d0c0b40c8a088c815816,193af71bdd228ab3e8ae50e1b1cbf1984b0af92aac5a71cbe618afd4187ded6b461411a39e72ea4e213fe0a5231c498d +d1e654b77cb155f5c77971a64df9e5d34c26a3cad6c7f6b300d39deb1910094691adaa095be4ba5d86690a976428635d5526f3e946f7dc3bd4dbc78999e653441187a81f9adcd5a3c5f254bc8256b0158f54673dcc1232f6e918ebfc6c51ce67eaeb042d9f57eec4bfe910e169af78b3de48d137df4f2840,3e419569a4197bb71baf416b38772eedd9c1d5a3252111609f0ff8a18a749d5a56143a14925a82cd35c44400a49afdfb +626f68c18a69a6590159a9c46be03d5965698f2dac3de779b878b3d9c421e0f21b955a16c715c1ec1e22ce3eb645b8b4f263f60660ea3028981eebd6c8c3a367285b691c8ee56944a7cd1217997e1d9c21620b536bdbd5de8925ff71dec6fbc06624ab6b21e329813de90d1e572dfb89a18120c3f606355d25,6215c070d0cb388a134766035c4ba95143e608d15caf742796304ffa1a62e55660ab9ab1f6538b4af1f3ea89be7d51ff +651a6fb3c4b80c7c68c6011675e6094eb56abf5fc3057324ebc6477825061f9f27e7a94633abd1fa598a746e4a577caf524c52ec1788471f92b8c37f23795ca19d559d446cab16cbcdce90b79fa1026cee77bf4ab1b503c5b94c2256ad75b3eac6fd5dcb96aca4b03a834bfb4e9af988cecbf2ae597cb9097940,0e27abad85255a66217722b7d4e032bf29f638bae965b99f8eaf309071ff8c107f5b6bbb6ab1985228e697de60595df6 +8aaf072fce8a2d96bc10b3c91c809ee93072fb205ca7f10abd82ecd82cf040b1bc49ea13d1857815c0e99781de3adbb5443ce1c897e55188ceaf221aa9681638de05ae1b322938f46bce51543b57ecdb4c266272259d1798de13be90e10efec2d07484d9b21a3870e2aa9e06c21aa2d0c9cf420080a80a91dee16f,ab9fd51b3aa4cd944abb6cdb063708b2d1203d65a1a2ebb48e0c19722a18b9ef54d7a11f7684462b995b6d38cddc0463 +53f918fd00b1701bd504f8cdea803acca21ac18c564ab90c2a17da592c7d69688f6580575395551e8cd33e0fef08ca6ed4588d4d140b3e44c032355df1c531564d7f4835753344345a6781e11cd5e095b73df5f82c8ae3ad00877936896671e947cc52e2b29dcd463d90a0c9929128da222b5a211450bbc0e02448e2,03945325ac50e56bc8b515576529abaa9a22bc2a7ced9142a75ce939a388af0022a4e75a33964bbb3580564e0af809d3 +a64599b8a61b5ccec9e67aed69447459c8da3d1ec6c7c7c82a7428b9b584fa67e90f68e2c00fbbed4613666e5168da4a16f395f7a3c3832b3b134bfc9cbaa95d2a0fe252f44ac6681eb6d40ab91c1d0282fed6701c57463d3c5f2bb8c6a7301fb4576aa3b5f15510db8956ff77478c26a7c09bea7b398cfc83503f538e,59126910a3462e3b7ac22892f637d87d90686bc0a9bbd4a32e2c4c71a168ba685f2184560e125db3dc23d90b9e820f1a +0e3ab0e054739b00cdb6a87bd12cae024b54cb5e550e6c425360c2e87e59401f5ec24ef0314855f0f56c47695d56a7fb1417693af2a1ed5291f2fee95f75eed54a1b1c2e81226fbff6f63ade584911c71967a8eb70933bc3f5d15bc91b5c2644d9516d3c3a8c154ee48e118bd1442c043c7a0dba5ac5b1d5360aae5b9065,d3239a33baa55b0f21169e0fde6114b08106baf3f4ba0ca19d7b5cf44030057ac672ce529eb0f3bda36819967819aafa +a62fc595b4096e6336e53fcdfc8d1cc175d71dac9d750a6133d23199eaac288207944cea6b16d27631915b4619f743da2e30a0c00bbdb1bbb35ab852ef3b9aec6b0a8dcc6e9e1abaa3ad62ac0a6c5de765de2c3711b769e3fde44a74016fff82ac46fa8f1797d3b2a726b696e3dea5530439acee3a45c2a51bc32dd055650b,38a11581d874a574929c51f8dcc9e501900743864aec3ac0889e62c1071ca5f8b6ccf9c0bdb3bb365916eb4340973dc7 +2b6db7ced8665ebe9deb080295218426bdaa7c6da9add2088932cdffbaa1c14129bccdd70f369efb149285858d2b1d155d14de2fdb680a8b027284055182a0cae275234cc9c92863c1b4ab66f304cf0621cd54565f5bff461d3b461bd40df28198e3732501b4860eadd503d26d6e69338f4e0456e9e9baf3d827ae685fb1d817,8fd01909381eb713803419361d8e82e92476a08edcc225bb8a135d215cb48d07b074624fcf2e73e666dba59334719839 +10db509b2cdcaba6c062ae33be48116a29eb18e390e1bbada5ca0a2718afbcd23431440106594893043cc7f2625281bf7de2655880966a23705f0c5155c2f5cca9f2c2142e96d0a2e763b70686cd421b5db812daced0c6d65035fde558e94f26b3e6dde5bd13980cc80292b723013bd033284584bff27657871b0cf07a849f4ae2,5d7dc5fc9de88b1c0c46aa6d49273505ff7a76a179e31ab5d976a69d89b83dfa6deae9e1b93440ec055de1cc824d6b15 +9334de60c997bda6086101a6314f64e4458f5ff9450c509df006e8c547983c651ca97879175aaba0c539e82d05c1e02c480975cbb30118121061b1ebac4f8d9a3781e2db6b18042e01ecf9017a64a0e57447ec7fcbe6a7f82585f7403ee2223d52d37b4bf426428613d6b4257980972a0acab508a7620c1cb28eb4e9d30fc41361ec,3d6bba145d7e69dbbb0f099d47a1f2138d4a00f26b07c62cf38471f0fb9ca022c61f7a769013a9bd8d5d87d8e01d9b4d +e88ab086891693aa535ceb20e64c7ab97c7dd3548f3786339897a5f0c39031549ca870166e477743ccfbe016b4428d89738e426f5ffe81626137f17aecff61b72dbee2dc20961880cfe281dfab5ee38b1921881450e16032de5e4d55ad8d4fca609721b0692bac79be5a06e177fe8c80c0c83519fb3347de9f43d5561cb8107b9b5edc,fbcef80dd06e7e0b3b7a5485ca5bc2b388cb91a2890f181c857b3e0abefd6065499d82dd55f3fcd17e351c0a3636b859 +fd19e01a83eb6ec810b94582cb8fbfa2fcb992b53684fb748d2264f020d3b960cb1d6b8c348c2b54a9fcea72330c2aaa9a24ecdb00c436abc702361a82bb8828b85369b8c72ece0082fe06557163899c2a0efa466c33c04343a839417057399a63a3929be1ee4805d6ce3e5d0d0967fe9004696a5663f4cac9179006a2ceb75542d75d68,338aacbac8ac5bcc13fafc0ec6d2ecf4a871f9b09d7b1bc5bd6f8d7c9dd1354b8e28c68158a36551dddab8b684579ee1 +59ae20b6f7e0b3c7a989afb28324a40fca25d8651cf1f46ae383ef6d8441587aa1c04c3e3bf88e8131ce6145cfb8973d961e8432b202fa5af3e09d625faad825bc19da9b5c6c20d02abda2fcc58b5bd3fe507bf201263f30543819510c12bc23e2ddb4f711d087a86edb1b355313363a2de996b891025e147036087401ccf3ca7815bf3c49,ffc98d84c268bd09cad09cd7b4bf9d35ede97ec55885e839e557d21ecc0e28a855000386e68faae3e64a19b443b2587d +77ee804b9f3295ab2362798b72b0a1b2d3291dceb8139896355830f34b3b328561531f8079b79a6e9980705150866402fdc176c05897e359a6cb1a7ab067383eb497182a7e5aef7038e4c96d133b2782917417e391535b5e1b51f47d8ed7e4d4025fe98dc87b9c1622614bff3d1029e68e372de719803857ca52067cddaad958951cb2068cc6,471465890c3b9c03edfbf0f6883d565740bada3b7628ad6a27f729c35c1a8666953e8b99d2c89ede0bd2d5d70fdef11b +b771d5cef5d1a41a93d15643d7181d2a2ef0a8e84d91812f20ed21f147bef732bf3a60ef4067c3734b85bc8cd471780f10dc9e8291b58339a677b960218f71e793f2797aea349406512829065d37bb55ea796fa4f56fd8896b49b2cd19b43215ad967c712b24e5032d065232e02c127409d2ed4146b9d75d763d52db98d949d3b0fed6a8052fbb,0f8ba7214de0e3a9e13c282bfa09cea782c31c052f516d0aaa403d97716e0d08b1f7f9bb4085b555740c813c4ece1b90 +b32d95b0b9aad2a8816de6d06d1f86008505bd8c14124f6e9a163b5a2ade55f835d0ec3880ef50700d3b25e42cc0af050ccd1be5e555b23087e04d7bf9813622780c7313a1954f8740b6ee2d3f71f768dd417f520482bd3a08d4f222b4ee9dbd015447b33507dd50f3ab4247c5de9a8abd62a8decea01e3b87c8b927f5b08beb37674c6f8e380c04,cad2d28fbdcc3a5d71fb3adceec52313ad41d4ff1f915caa34ee127839dbf2e9a7b06e1c4ecd6255926c16c06e51efd0 +04410e31082a47584b406f051398a6abe74e4da59bb6f85e6b49e8a1f7f2ca00dfba5462c2cd2bfde8b64fb21d70c083f11318b56a52d03b81cac5eec29eb31bd0078b6156786da3d6d8c33098c5c47bb67ac64db14165af65b44544d806dde5f487d5373c7f9792c299e9686b7e5821e7c8e2458315b996b5677d926dac57b3f22da873c601016a0d,5b192ebab47215a8e9fb8e4d561b220b1dc36707a3f085f7bb0175335c393251e3467f945570420c743365d0f09b9e09 +8b81e9badde026f14d95c019977024c9e13db7a5cd21f9e9fc491d716164bbacdc7060d882615d411438aea056c340cdf977788f6e17d118de55026855f93270472d1fd18b9e7e812bae107e0dfde7063301b71f6cfe4e225cab3b232905a56e994f08ee2891ba922d49c3dafeb75f7c69750cb67d822c96176c46bd8a29f1701373fb09a1a6e3c7158f,df6f80b6d56cffa8545a27a245a50e6c2d117fc3598f465b6cd78560f4b3c7d2123f28f67ca9e65bfe0b7f566c57b9ef +fa6eed24da6666a22208146b19a532c2ec9ba94f09f1def1e7fc13c399a48e41acc2a589d099276296348f396253b57cb0e40291bd282773656b6e0d8bea1cda084a3738816a840485fcf3fb307f777fa5feac48695c2af4769720258c77943fb4556c362d9cba8bf103aeb9034baa8ea8bfb9c4f8e6742ce0d52c49ea8e974f339612e830e9e7a9c29065,ce97e9df08789d84151a95c8134f0db74e5d4e076e0c15966825c371b79b3192fd7c9c6bdae86b775804b5363d1152c7 +9bb4af1b4f09c071ce3cafa92e4eb73ce8a6f5d82a85733440368dee4eb1cbc7b55ac150773b6fe47dbe036c45582ed67e23f4c74585dab509df1b83610564545642b2b1ec463e18048fc23477c6b2aa035594ecd33791af6af4cbc2a1166aba8d628c57e707f0b0e8707caf91cd44bdb915e0296e0190d56d33d8dde10b5b60377838973c1d943c22ed335e,89bf889fbd7a384290d3b1d52709dba686351e53937630b7c7f01bcdda19b1517d317d65e799e686c71a0ab4d65b60b8 +2167f02118cc62043e9091a647cadbed95611a521fe0d64e8518f16c808ab297725598ae296880a773607a798f7c3cfce80d251ebec6885015f9abf7eaabae46798f82cb5926de5c23f44a3f9f9534b3c6f405b5364c2f8a8bdc5ca49c749bed8ce4ba48897062ae8424ca6dde5f55c0e42a95d1e292ca54fb46a84fbc9cd87f2d0c9e7448de3043ae22fdd229,5d40e392c2e5b29c80c2d760a93aa1e193472d7ee59e203dd478fe24c5a6264e2873af31abde81827862901ae59571bb +94b7fa0bc1c44e949b1d7617d31b4720cbe7ca57c6fa4f4094d4761567e389ecc64f6968e4064df70df836a47d0c713336b5028b35930d29eb7a7f9a5af9ad5cf441745baec9bb014ceeff5a41ba5c1ce085feb980bab9cf79f2158e03ef7e63e29c38d7816a84d4f71e0f548b7fc316085ae38a060ff9b8dec36f91ad9ebc0a5b6c338cbb8f6659d342a24368cf,7c63a0dc1c39cf4fab2d22f62c1b00757aa4b89ed0d7128da243d9082ad0c78784ac24df34f5ab30375f1d581e7420bd +ea40e83cb18b3a242c1ecc6ccd0b7853a439dab2c569cfc6dc38a19f5c90acbf76aef9ea3742ff3b54ef7d36eb7ce4ff1c9ab3bc119cff6be93c03e208783335c0ab8137be5b10cdc66ff3f89a1bddc6a1eed74f504cbe7290690bb295a872b9e3fe2cee9e6c67c41db8efd7d863cf10f840fe618e7936da3dca5ca6df933f24f6954ba0801a1294cd8d7e66dfafec,ed085d830afd2d8f79627281c2a8163c391fec2c58268f66f74cff9751bb29e0d071ea8fd2fcf943020d0ad758281bfd +157d5b7e4507f66d9a267476d33831e7bb768d4d04cc3438da12f9010263ea5fcafbde2579db2f6b58f911d593d5f79fb05fe3596e3fa80ff2f761d1b0e57080055c118c53e53cdb63055261d7c9b2b39bd90acc32520cbbdbda2c4fd8856dbcee173132a2679198daf83007a9b5c51511ae49766c792a29520388444ebefe28256fb33d4260439cba73a9479ee00c63,29124752ccd4ac724a9c3d53b0b352af2dbd76729f8c5c648b1e9d77819f32e2a7de0e15286478a24df9bb370f855c1c +836b34b515476f613fe447a4e0c3f3b8f20910ac89a3977055c960d2d5d2b72bd8acc715a9035321b86703a411dde0466d58a59769672aa60ad587b8481de4bba552a1645779789501ec53d540b904821f32b0bd1855b04e4848f9f8cfe9ebd8911be95781a759d7ad9724a7102dbe576776b7c632bc39b9b5e19057e226552a5994c1dbb3b5c7871a11f5537011044c53,faeab5687f39ec9894c5ccffb57e82a84bbb7d493cc6afc03d07ac7b4f181e61639b9a4771c99985ed7fa1773e1ca3f4 +cc7784a4912a7ab5ad3620aab29ba87077cd3cb83636adc9f3dc94f51edf521b2161ef108f21a0a298557981c0e53ce6ced45bdf782c1ef200d29bab81dd6460586964edab7cebdbbec75fd7925060f7da2b853b2b089588fa0f8c16ec6498b14c55dcee335cb3a91d698e4d393ab8e8eac0825f8adebeee196df41205c011674e53426caa453f8de1cbb57932b0b741d4c6,e4e352b1d2d987a37c831629fe0c6ab9eab2c35e401d1b5f443adc54a96ef3c91d0876ccf46adef819c460369136da87 +7639b461fff270b2455ac1d1afce782944aea5e9087eb4a39eb96bb5c3baaf0e868c8526d3404f9405e79e77bfac5ffb89bf1957b523e17d341d7323c302ea7083872dd5e8705694acdda36d5a1b895aaa16eca6104c82688532c8bfe1790b5dc9f4ec5fe95baed37e1d287be710431f1e5e8ee105bc42ed37d74b1e55984bf1c09fe6a1fa13ef3b96faeaed6a2a1950a12153,6c288fe4a74f0ed1b36d12f2db697fbc44017bb57d38c9ebd45f5a8b4feb59148060ae4ba1ffa162e10e6916cea1a794 +eb6513fc61b30cfba58d4d7e80f94d14589090cf1d80b1df2e68088dc6104959ba0d583d585e9578ab0aec0cf36c48435eb52ed9ab4bbce7a5abe679c97ae2dbe35e8cc1d45b06dda3cf418665c57cbee4bbb47fa4caf78f4ee656fec237fe4eebbafa206e1ef2bd0ee4ae71bd0e9b2f54f91daadf1febfd7032381d636b733dcb3bf76fb14e23aff1f68ed3dbcf75c9b99c6f26,e1b6dac3f138b5f336f1f75894f825ffc197836c92bf359b55bb2a78239f24f9c4aa1e063c9c2b273b9cfa766fbfbae5 +1594d74bf5dde444265d4c04dad9721ff3e34cbf622daf341fe16b96431f6c4df1f760d34f296eb97d98d560ad5286fec4dce1724f20b54fd7df51d4bf137add656c80546fb1bf516d62ee82baa992910ef4cc18b70f3f8698276fcfb44e0ec546c2c39cfd8ee91034ff9303058b4252462f86c823eb15bf481e6b79cc3a02218595b3658e8b37382bd5048eaed5fd02c37944e73b,6e07b59e93b22475633b5ba1aa6891119cff690697ac679e9349e8694c654074d965f0c32ff517b10ee8f6993f6e4646 +4cfa1278903026f66fedd41374558be1b585d03c5c55dac94361df286d4bd39c7cb8037ed3b267b07c346626449d0cc5b0dd2cf221f7e4c3449a4be99985d2d5e67bff2923357ddeab5abcb4619f3a3a57b2cf928a022eb27676c6cf805689004fca4d41ea6c2d0a4789c7605f7bb838dd883b3ad3e6027e775bcf262881428099c7fff95b14c095ea130e0b9938a5e22fc52650f591,19eb2e15262a839538846f7252676971207913279b9ae9b6ba3650d8f3a8e558b13c35b31f1ab7429e376255338c4aa2 +d3e65cb92cfa79662f6af493d696a07ccf32aaadcceff06e73e8d9f6f909209e66715d6e978788c49efb9087b170ecf3aa86d2d4d1a065ae0efc8924f365d676b3cb9e2bec918fd96d0b43dee83727c9a93bf56ca2b2e59adba85696546a815067fc7a78039629d4948d157e7b0d826d1bf8e81237bab7321312fdaa4d521744f988db6fdf04549d0fdca393d639c729af716e9c8bba48,f4da80b26fb5e6f7e5dfe47128eee095d46d9acefbe76f74efbc8a1ad68e8456634e9376025648ef7a3350299f366e29 +842cc583504539622d7f71e7e31863a2b885c56a0ba62db4c2a3f2fd12e79660dc7205ca29a0dc0a87db4dc62ee47a41db36b9ddb3293b9ac4baae7df5c6e7201e17f717ab56e12cad476be49608ad2d50309e7d48d2d8de4fa58ac3cfeafeee48c0a9eec88498e3efc51f54d300d828dddccb9d0b06dd021a29cf5cb5b2506915beb8a11998b8b886e0f9b7a80e97d91a7d01270f9a7717,bdba7838a1e7a601d559f49ec1323b7c5fabe1e109fdcaff3f7865f9af4196abbf60ac123097a7b860fe438684355eb0 +6c4b0a0719573e57248661e98febe326571f9a1ca813d3638531ae28b4860f23c3a3a8ac1c250034a660e2d71e16d3acc4bf9ce215c6f15b1c0fc7e77d3d27157e66da9ceec9258f8f2bf9e02b4ac93793dd6e29e307ede3695a0df63cbdc0fc66fb770813eb149ca2a916911bee4902c47c7802e69e405fe3c04ceb5522792a5503fa829f707272226621f7c488a7698c0d69aa561be9f378,96dfe9996bffa5e5d83c39b11f47f12d11210f7d4300b7180d1891eaaa7fe4809f9489b1e2407ff87fb2628ddf1fc020 +51b7dbb7ce2ffeb427a91ccfe5218fd40f9e0b7e24756d4c47cd55606008bdc27d16400933906fd9f30effdd4880022d081155342af3fb6cd53672ab7fb5b3a3bcbe47be1fd3a2278cae8a5fd61c1433f7d350675dd21803746cadca574130f01200024c6340ab0cc2cf74f2234669f34e9009ef2eb94823d62b31407f4ba46f1a1eec41641e84d77727b59e746b8a671bef936f05be820759fa,79cf2a3017f82693c0a531a367186d055fce63081edf980c6a0b967b6ecce75d635b98485e9b6b285b08336ff34e61c9 +83599d93f5561e821bd01a472386bc2ff4efbd4aed60d5821e84aae74d8071029810f5e286f8f17651cd27da07b1eb4382f754cd1c95268783ad09220f5502840370d494beb17124220f6afce91ec8a0f55231f9652433e5ce3489b727716cf4aeba7dcda20cd29aa9a859201253f948dd94395aba9e3852bd1d60dda7ae5dc045b283da006e1cbad83cc13292a315db5553305c628dd091146597,0ed3ca1620ce3a923a22e9d13bbf7543acee05f66b67e6d6f435bc513f4698949c27528068f892f0871916fe2d0433c3 +2be9bf526c9d5a75d565dd11ef63b979d068659c7f026c08bea4af161d85a462d80e45040e91f4165c074c43ac661380311a8cbed59cc8e4c4518e80cd2c78ab1cabf66bff83eab3a80148550307310950d034a6286c93a1ece8929e6385c5e3bb6ea8a7c0fb6d6332e320e71cc4eb462a2a62e2bfe08f0ccad93e61bedb5dd0b786a728ab666f07e0576d189c92bf9fb20dca49ac2d3956d47385e2,69a27bbf080e015592893d3b55d1957d267784569923a466165a6fb129613d8ea6f610f3760e349d46b09277cb854546 +ca76d3a12595a817682617006848675547d3e8f50c2210f9af906c0e7ce50b4460186fe70457a9e879e79fd4d1a688c70a347361c847ba0dd6aa52936eaf8e58a1be2f5c1c704e20146d366aeb3853bed9de9befe9569ac8aaea37a9fb7139a1a1a7d5c748605a8defb297869ebedd71d615a5da23496d11e11abbb126b206fa0a7797ee7de117986012d0362dcef775c2fe145ada6bda1ccb326bf644,e9c8830140629669a1dc5c8ee27be669b7122f4dc88224635cde334ad99615f3fdc4869e56263e3c7f4420736f714e26 +f76b85dc67421025d64e93096d1d712b7baf7fb001716f02d33b2160c2c882c310ef13a576b1c2d30ef8f78ef8d2f465007109aad93f74cb9e7d7bef7c9590e8af3b267c89c15db238138c45833c98cc4a471a7802723ef4c744a853cf80a0c2568dd4ed58a2c9644806f42104cee53628e5bdf7b63b0b338e931e31b87c24b146c6d040605567ceef5960df9e022cb469d4c787f4cba3c544a1ac91f95f,4df060276105bf002f8e9f3f08d5b51f7c2adfe5aab9a1a683c053e045c89a883028b1093461368262ea85f5239ac7b1 +25b8c9c032ea6bcd733ffc8718fbb2a503a4ea8f71dea1176189f694304f0ff68e862a8197b839957549ef243a5279fc2646bd4c009b6d1edebf24738197abb4c992f6b1dc9ba891f570879accd5a6b18691a93c7d0a8d38f95b639c1daeb48c4c2f15ccf5b9d508f8333c32de78781b41850f261b855c4bebcc125a380c54d501c5d3bd07e6b52102116088e53d76583b0161e2a58d0778f091206aabd5a1,816aa6db9b663288e5f932f0feaff0ee7875c3b3e6fbac0cddc458bd646371969cf50d2d0942fcc7403573b01b05b455 +21cfdc2a7ccb7f331b3d2eefff37e48ad9fa9c788c3f3c200e0173d99963e1cbca93623b264e920394ae48bb4c3a5bb96ffbc8f0e53f30e22956adabc2765f57fb761e147ecbf8567533db6e50c8a1f894310a94edf806dd8ca6a0e141c0fa7c9fae6c6ae65f18c93a8529e6e5b553bf55f25be2e80a9882bd37f145fecbeb3d447a3c4e46c21524cc55cdd62f521ab92a8ba72b897996c49bb273198b7b1c9e,125b51c253391677c59c0332c6a13d07de55eab80857593f0839a56fa678c5e2f7cb2f934abe5e5887804aab5d8f13e1 +4e452ba42127dcc956ef4f8f35dd68cb225fb73b5bc7e1ec5a898bba2931563e74faff3b67314f241ec49f4a7061e3bd0213ae826bab380f1f14faab8b0efddd5fd1bb49373853a08f30553d5a55ccbbb8153de4704f29ca2bdeef0419468e05dd51557ccc80c0a96190bbcc4d77ecff21c66bdf486459d427f986410f883a80a5bcc32c20f0478bb9a97a126fc5f95451e40f292a4614930d054c851acd019ccf,130c4b06a55f11c80c41608adfd7b4ce8795871bcf16900f20d2751e123b41d3b2048fd05267c2f9653ece3630bdd330 +fa85671df7dadf99a6ffee97a3ab9991671f5629195049880497487867a6c446b60087fac9a0f2fcc8e3b24e97e42345b93b5f7d3691829d3f8ccd4bb36411b85fc2328eb0c51cb3151f70860ad3246ce0623a8dc8b3c49f958f8690f8e3860e71eb2b1479a5cea0b3f8befd87acaf5362435eaeccb52f38617bc6c5c2c6e269ead1fbd69e941d4ad2012da2c5b21bcfbf98e4a77ab2af1f3fda3233f046d38f1dc8,3ea0fa3fc035ea40cbbe9a3c1c6f7e5a437ba20f26736f2895f81d53bec92a186e74762910c4aa62565373d38b28d5fd +e90847ae6797fbc0b6b36d6e588c0a743d725788ca50b6d792352ea8294f5ba654a15366b8e1b288d84f5178240827975a763bc45c7b0430e8a559df4488505e009c63da994f1403f407958203cebb6e37d89c94a5eacf6039a327f6c4dbbc7a2a307d976aa39e41af6537243fc218dfa6ab4dd817b6a397df5ca69107a9198799ed248641b63b42cb4c29bfdd7975ac96edfc274ac562d0474c60347a078ce4c25e88,7c1f1a46e409046b5a314767e8b7e7b1d9a92931443c5d02a581371b380afa1867e554c3f7df2e4557acfd9f8e230c44 +f6d5c2b6c93954fc627602c00c4ca9a7d3ed12b27173f0b2c9b0e4a5939398a665e67e69d0b12fb7e4ceb253e8083d1ceb724ac07f009f094e42f2d6f2129489e846eaff0700a8d4453ef453a3eddc18f408c77a83275617fabc4ea3a2833aa73406c0e966276079d38e8e38539a70e194cc5513aaa457c699383fd1900b1e72bdfb835d1fd321b37ba80549b078a49ea08152869a918ca57f5b54ed71e4fd3ac5c06729,2ad23817002c8f0089d423760f5569eb67cbeed2f0f2aa12f8ede7856ee22aa6eb684f86ae91741a4aa3c80ac97c4a0b +cf8562b1bed89892d67ddaaf3deeb28246456e972326dbcdb5cf3fb289aca01e68da5d59896e3a6165358b071b304d6ab3d018944be5049d5e0e2bb819acf67a6006111089e6767132d72dd85beddcbb2d64496db0cc92955ab4c6234f1eea24f2d51483f2e209e4589bf9519fac51b4d061e801125e605f8093bb6997bc163d551596fe4ab7cfae8fb9a90f6980480ce0c229fd1675409bd788354daf316240cfe0af93eb,d34974759c6a4aa9d1a4ed3de341a2ba022df127be92eb0bbc1900eb5ac7b8afe909b52da5714668c3c4b7db939f2436 +2ace31abb0a2e3267944d2f75e1559985db7354c6e605f18dc8470423fca30b7331d9b33c4a4326783d1caae1b4f07060eff978e4746bf0c7e30cd61040bd5ec2746b29863eb7f103ebda614c4291a805b6a4c8214230564a0557bc7102e0bd3ed23719252f7435d64d210ee2aafc585be903fa41e1968c50fd5d5367926df7a05e3a42cf07e656ff92de73b036cf8b19898c0cb34557c0c12c2d8b84e91181af467bc75a9d1,0fb38ae233520d4f57469463e1e68d5518ea4e965755c03ad458dd285afb2df518c3d389bd361cbdce46b654631a18c2 +0d8d09aed19f1013969ce5e7eb92f83a209ae76be31c754844ea9116ceb39a22ebb6003017bbcf26555fa6624185187db8f0cb3564b8b1c06bf685d47f3286eda20b83358f599d2044bbf0583fab8d78f854fe0a596183230c5ef8e54426750eaf2cc4e29d3bdd037e734d863c2bd9789b4c243096138f7672c232314effdfc6513427e2da76916b5248933be312eb5dde4cf70804fb258ac5fb82d58d08177ac6f4756017fff5,cb8f1cc9eb72465176b97b6226a87e69d77c65190114cce1f830a3dfefa5a8a278d5cf594b173ac58c06ec74958ff8c6 +c3236b73deb7662bf3f3daa58f137b358ba610560ef7455785a9befdb035a066e90704f929bd9689cef0ce3bda5acf4480bceb8d09d10b098ad8500d9b6071dfc3a14af6c77511d81e3aa8844986c3bea6f469f9e02194c92868cd5f51646256798ff0424954c1434bdfed9facb390b07d342e992936e0f88bfd0e884a0ddb679d0547ccdec6384285a45429d115ac7d235a717242021d1dc35641f5f0a48e8445dba58e6cb2c8ea,87776d7022dc18592b578c534e2fcf57946e0f74c47df85612f89c6593fd50a9e445c048d6cda9a1d1d10ea3b3c973d0 +b39feb8283eadc63e8184b51df5ae3fd41aac8a963bb0be1cd08aa5867d8d910c669221e73243360646f6553d1ca05a84e8dc0de05b6419ec349ca994480193d01c92525f3fb3dcefb08afc6d26947bdbbfd85193f53b50609c6140905c53a6686b58e53a319a57b962331ede98149af3de3118a819da4d76706a0424b4e1d2910b0ed26af61d150ebcb46595d4266a0bd7f651ba47d0c7f179ca28545007d92e8419d48fdfbd744ce,83f4442147fefc8e5bad3e9ee4c6661a771ae8c87458ab67153decd35daf6756eef28e4ae72e65ebfae08886a6e773e0 +a983d54f503803e8c7999f4edbbe82e9084f422143a932ddddc47a17b0b7564a7f37a99d0786e99476428d29e29d3c197a72bfab1342c12a0fc4787fd7017d7a6174049ea43b5779169ef7472bdbbd941dcb82fc73aac45a8a94c9f2bd3477f61fd3b796f02a1b8264a214c6fea74b7051b226c722099ec7883a462b83b6afdd4009248b8a237f605fe5a08fe7d8b45321421ebba67bd70a0b00ddbf94baab7f359d5d1eea105f28dcfb,51358159074d960c0b9d73d5f12afdafb8f5d7905bda62379a6e0d6727d03efd26eea51b434368e2e566cb4747d0ba35 +e4d1c1897a0a866ce564635b74222f9696bf2c7f640dd78d7e2aca66e1b61c642bb03ea7536aae597811e9bf4a7b453ede31f97b46a5f0ef51a071a2b3918df16b152519ae3776f9f1edab4c2a377c3292e96408359d3613844d5eb393000283d5ad3401a318b12fd1474b8612f2bb50fb6a8b9e023a54d7dde28c43d6d8854c8d9d1155935c199811dbfc87e9e0072e90eb88681cc7529714f8fb8a2c9d88567adfb974ee205a9bf7b848,3ecea8caf0d8efa42d54ac5ef36e624237d9f5508ed6fcb6434d67f3fb788c538c635798f52b2f073a4a7376fd31c4a3 +b10c59723e3dcadd6d75df87d0a1580e73133a9b7d00cb95ec19f5547027323be75158b11f80b6e142c6a78531886d9047b08e551e75e6261e79785366d7024bd7cd9cf322d9be7d57fb661069f2481c7bb759cd71b4b36ca2bc2df6d3a328faebdb995a9794a8d72155ed551a1f87c80bf6059b43fc764900b18a1c2441f7487743cf84e565f61f8dd2ece6b6ccc9444049197aaaf53e926fbee3bfca8be588ec77f29d211be89de18b15f6,a8876fe4652acf72dcc8fd5133e5d4ca4e3766ab987cf66eae5e3770e252d2fd2a890525016623ee69064690828c727b +db11f609baba7b0ca634926b1dd539c8cbada24967d7add4d9876f77c2d80c0f4dcefbd7121548373582705cca2495bd2a43716fe64ed26d059cfb566b3364bd49ee0717bdd9810dd14d8fad80dbbdc4cafb37cc60fb0fe2a80fb4541b8ca9d59dce457738a9d3d8f641af8c3fd6da162dc16fc01aac527a4a0255b4d231c0be50f44f0db0b713af03d968fe7f0f61ed0824c55c4b5265548febd6aad5c5eedf63efe793489c39b8fd29d104ce,6a09735736780f199d75c60903aa24d7f8aa17516690854f7522ef0bbf47d41cbdc8bdb2cb2f3c5596510539677607e9 +bebd4f1a84fc8b15e4452a54bd02d69e304b7f32616aadd90537937106ae4e28de9d8aab02d19bc3e2fde1d651559e296453e4dba94370a14dbbb2d1d4e2022302ee90e208321efcd8528ad89e46dc839ea9df618ea8394a6bff308e7726bae0c19bcd4be52da6258e2ef4e96aa21244429f49ef5cb486d7ff35cac1bacb7e95711944bccb2ab34700d42d1eb38b5d536b947348a458ede3dc6bd6ec547b1b0cae5b257be36a7124e1060c170ffa,83fc2b91ab81d4b15363f15e53bf639063bac55502b4421cf9a53bcab9ff47fd77de5ac6934f67a412ea1910fad67768 +5aca56a03a13784bdc3289d9364f79e2a85c12276b49b92db0adaa4f206d5028f213f678c3510e111f9dc4c1c1f8b6acb17a6413aa227607c515c62a733817ba5e762cc6748e7e0d6872c984d723c9bb3b117eb8963185300a80bfa65cde495d70a46c44858605fccbed086c2b45cef963d33294dbe9706b13af22f1b7c4cd5a001cfec251fba18e722c6e1c4b1166918b4f6f48a98b64b3c07fc86a6b17a6d0480ab79d4e6415b520f1c484d675b1,77c0480b91f32ef809d8c23ab236581f0bca8b9447a4d36228052b3abb6ab69c61d19d720486a3ff497a4673b84cb951 +a5aad0e4646a32c85cfcac73f02fc5300f1982fabb2f2179e28303e447854094cdfc854310e5c0f60993ceff54d84d6b46323d930adb07c17599b35b505f09e784bca5985e0172257797fb53649e2e9723efd16865c31b5c3d5113b58bb0bfc8920fabdda086d7537e66d709d050bd14d0c960873f156fad5b3d3840cdfcdc9be6af519db262a27f40896ab25cc39f96984d650611c0d5a3080d5b3a1bf186abd42956588b3b58cd948970d298776060,781466e257d2fa594e39dc220a260c7478d2158bb70e426f9e9587f5a51a7c29fdc7af23e7ab9c774e33c08ab38cedb7 +06cbbe67e94a978203ead6c057a1a5b098478b4b4cbef5a97e93c8e42f5572713575fc2a884531d7622f8f879387a859a80f10ef02708cd8f7413ab385afc357678b9578c0ebf641ef076a1a30f1f75379e9dcb2a885bdd295905ee80c0168a62a9597d10cf12dd2d8cee46645c7e5a141f6e0e23aa482abe5661c16e69ef1e28371e2e236c359ba4e92c25626a7b7ff13f6ea4ae906e1cfe163e91719b1f750a96cbde5fbc953d9e576cd216afc90323a,51bebfb5aafe777f390e2851b7eb9aa3809194fe3ba1689abee7e43d44a5874e0c252793dfd42c1270c63c407aef6780 +f1c528cf7739874707d4d8ad5b98f7c77169de0b57188df233b2dc8a5b31eda5db4291dd9f68e6bad37b8d7f6c9c0044b3bf74bbc3d7d1798e138709b0d75e7c593d3cccdc1b20c7174b4e692add820ace262d45ccfae2077e878796347168060a162ecca8c38c1a88350bd63bb539134f700fd4addd5959e255337daa06bc86358fabcbefdfb5bc889783d843c08aadc6c4f6c36f65f156e851c9a0f917e4a367b5ad93d874812a1de6a7b93cd53ad97232,fcdf0032f34ba6c42d679b182d07b10f4dff2189b0a5ef6642fbb71b16f910e3240ed9b502b1c6b395bee74ad0fb4191 +9d9f3a7ecd51b41f6572fd0d0881e30390dfb780991dae7db3b47619134718e6f987810e542619dfaa7b505c76b7350c6432d8bf1cfebdf1069b90a35f0d04cbdf130b0dfc7875f4a4e62cdb8e525aadd7ce842520a482ac18f09442d78305fe85a74e39e760a4837482ed2f437dd13b2ec1042afcf9decdc3e877e50ff4106ad10a525230d11920324a81094da31deab6476aa42f20c84843cfc1c58545ee80352bdd3740dd6a16792ae2d86f11641bb717c2,92aadc02bb9795a48b031034ee6ab873df481d232932fb5fd6c3762e50e58da46d1f5e5e874597f15c83127f0a3042b1 +5179888724819fbad3afa927d3577796660e6a81c52d98e9303261d5a4a83232f6f758934d50aa83ff9e20a5926dfebaac49529d006eb923c5ae5048ed544ec471ed7191edf46363383824f915769b3e688094c682b02151e5ee01e510b431c8865aff8b6b6f2f59cb6d129da79e97c6d2b8fa6c6da3f603199d2d1bcab547682a81cd6cf65f6551121391d78bcc23b5bd0e922ec6d8bf97c952e84dd28aef909aba31edb903b28fbfc33b7703cd996215a11238,0d0ccdbfeb0a933f211eaa94eb452900324340505ccf8db7ad93e976271f812fb8907805f6313d0b0931f5c9203bdba5 +576ef3520d30b7a4899b8c0d5e359e45c5189add100e43be429a02fb3de5ff4f8fd0e79d9663acca72cd29c94582b19292a557c5b1315297d168fbb54e9e2ecd13809c2b5fce998edc6570545e1499dbe7fb74d47cd7f35823b212b05bf3f5a79caa34224fdd670d335fcb106f5d92c3946f44d3afcbae2e41ac554d8e6759f332b76be89a0324aa12c5482d1ea3ee89ded4936f3e3c080436f539fa137e74c6d3389bdf5a45074c47bc7b20b0948407a66d855e2f,fef6b1f27b0cebc4568588e627d28dd569a58a8f9a51a1d2887b40f5547b2c67c71917be998d1987ac78e9077cc790ab +0df2152fa4f4357c8741529dd77e783925d3d76e95bafa2b542a2c33f3d1d117d159cf473f82310356fee4c90a9e505e70f8f24859656368ba09381fa245eb6c3d763f3093f0c89b972e66b53d59406d9f01aea07f8b3b615cac4ee4d05f542e7d0dab45d67ccccd3a606ccbeb31ea1fa7005ba07176e60dab7d78f6810ef086f42f08e595f0ec217372b98970cc6321576d92ce38f7c397a403bada1548d205c343ac09deca86325373c3b76d9f32028fea8eb32515,e9957732e7dab64550f003ee6d0353ae89bdc6d69d05766024cff189e4fc8faa41db72954e8e5ac0b29265c8f785e737 +3e15350d87d6ebb5c8ad99d42515cfe17980933c7a8f6b8bbbf0a63728cefaad2052623c0bd5931839112a48633fb3c2004e0749c87a41b26a8b48945539d1ff41a4b269462fd199bfecd45374756f55a9116e92093ac99451aefb2af9fd32d6d7f5fbc7f7a540d5097c096ebc3b3a721541de073a1cc02f7fb0fb1b9327fb0b1218ca49c9487ab5396622a13ae546c97abdef6b56380dda7012a8384091b6656d0ab272d363cea78163ff765cdd13ab1738b940d16cae,98d73b3555f003058f7b5a145d89faec46c17099a354ef3834a20142dbd50a0e8054598ce7941bf5dd4df7ccf218f02f +c38d6b0b757cb552be40940ece0009ef3b0b59307c1451686f1a22702922800d58bce7a636c1727ee547c01b214779e898fc0e560f8ae7f61bef4d75eaa696b921fd6b735d171535e9edd267c192b99880c87997711002009095d8a7a437e258104a41a505e5ef71e5613ddd2008195f0c574e6ba3fe40099cfa116e5f1a2fa8a6da04badcb4e2d5d0de31fdc4800891c45781a0aac7c907b56d631fca5ce8b2cde620d11d1777ed9fa603541de794ddc5758fcd5fad78c0,3795de490f43b9899947c1c305c30e26331ba0e611dce7961172b2e4299932147bc9e241c32e61fa964d4f436eccfd37 +8d2de3f0b37a6385c90739805b170057f091cd0c7a0bc951540f26a5a75b3e694631bb64c7635eed316f51318e9d8de13c70a2aba04a14836855f35e480528b776d0a1e8a23b547c8b8d6a0d09b241d3be9377160cca4e6793d00a515dc2992cb7fc741daca171431da99cce6f7789f129e2ac5cf65b40d703035cd2185bb936c82002daf8cbc27a7a9e554b06196630446a6f0a14ba155ed26d95bd627b7205c072d02b60db0fd7e49ea058c2e0ba202daff0de91e845cf79,e9f289e671541fec4599915a0d9935bf5c20a12c203bcde88a46eaf5cab2d437f9fcdef67b98768bb80c9a874b3f46c7 +c464bbdad275c50dcd983b65ad1019b9ff85a1e71c807f3204bb2c921dc31fbcd8c5fc45868ae9ef85b6c9b83bba2a5a822201ed68586ec5ec27fb2857a5d1a2d09d09115f22dcc39fe61f5e1ba0ff6e8b4acb4c6da748be7f3f0839739394ff7fa8e39f7f7e84a33c3866875c01bcb1263c9405d91908e9e0b50e7459fabb63d8c6bbb73d8e3483c099b55bc30ff092ff68b6adedfd477d63570c9f5515847f36e24ba0b705557130cec57ebad1d0b31a378e91894ee26e3a04,88c23be040be64d23aee8d7ee962228a6f07831b0e05fbe2f25f07729f00c2c617eb6975f57b3f17dd540e8ebca654a9 +8b8d68bb8a75732fe272815a68a1c9c5aa31b41dedc8493e76525d1d013d33cebd9e21a5bb95db2616976a8c07fcf411f5f6bc6f7e0b57aca78cc2790a6f9b898858ac9c79b165ff24e66677531e39f572be5d81eb3264524181115f32780257bfb9aeec6af12af28e587cac068a1a2953b59ad680f4c245b2e3ec36f59940d37e1d3db38e13edb29b5c0f404f6ff87f80fc8be7a225ff22fbb9c8b6b1d7330c57840d24bc75b06b80d30dad6806544d510af6c4785e823ac3e0b8,6c42dee61cd97c50f5340cf4dc4f7e319fb5fac7a26b41dee66d789804bd1fef1ef2911643c9c1e2c0485c979b36d927 +6b018710446f368e7421f1bc0ccf562d9c1843846bc8d98d1c9bf7d9d6fcb48bfc3bf83b36d44c4fa93430af75cd190bde36a7f92f867f58a803900df8018150384d85d82132f123006ac2aeba58e02a037fe6afbd65eca7c44977dd3dc74f48b6e7a1bfd5cc4dcf24e4d52e92bd4455848e4928b0eac8b7476fe3cc03e862aa4dff4470dbfed6de48e410f25096487ecfc32a27277f3f5023b2725ade461b1355889554a8836c9cf53bd767f5737d55184eea1ab3f53edd0976c485,720150fd5a1cf94a42f922efcbb723ff948f74ca6d0a3f399ac54da8b3bc07f39e6e2979c16c875866cf2f584ca7f2db +c9534a24714bd4be37c88a3da1082eda7cabd154c309d7bd670dccd95aa535594463058a29f79031d6ecaa9f675d1211e9359be82669a79c855ea8d89dd38c2c761ddd0ec0ce9e97597432e9a1beae062cdd71edfdfd464119be9e69d18a7a7fd7ce0e2106f0c8b0abf4715e2ca48ef9f454dc203c96656653b727083513f8efb86e49c513bb758b3b052fe21f1c05bb33c37129d6cc81f1aef6adc45b0e8827a830fe545cf57d0955802c117d23ccb55ea28f95c0d8c2f9c5a242b33f,fa6f90935843d4f58e77cabe4ba662b4fabc1732725faf952eeed70fa0aad6a98fe67f3b6736a1c8f7c5bed4d9b017e0 +07906c87297b867abf4576e9f3cc7f82f22b154afcbf293b9319f1b0584da6a40c27b32e0b1b7f412c4f1b82480e70a9235b12ec27090a5a33175a2bb28d8adc475cefe33f7803f8ce27967217381f02e67a3b4f84a71f1c5228e0c2ad971373f6f672624fcea8d1a9f85170fad30fa0bbd25035c3b41a6175d467998bd1215f6f3866f53847f9cf68ef3e2fbb54bc994de2302b829c5eea68ec441fcbafd7d16ae4fe9fff98bf00e5bc2ad54dd91ff9fda4dd77b6c754a91955d1fbaad0,4e2832fee290d1917c15b31893f6578c1299445b99bc48708e13348a11eb2f27fe217a63f532583793d18cdeccaa78b9 +588e94b9054abc2189df69b8ba34341b77cdd528e7860e5defcaa79b0c9a452ad4b82aa306be84536eb7cedcbe058d7b84a6aef826b028b8a0271b69ac3605a9635ea9f5ea0aa700f3eb7835bc54611b922964300c953efe7491e3677c2cebe0822e956cd16433b02c68c4a23252c3f9e151a416b4963257b783e038f6b4d5c9f110f871652c7a649a7bcedcbccc6f2d0725bb903cc196ba76c76aa9f10a190b1d1168993baa9ffc96a1655216773458bec72b0e39c9f2c121378feab4e76a,1fb97d6f42480e9f13c934c4a874877a808f1d73314c544d8570c0749f20fa35f53a0c0bda1f10d1a10a029abbb50bc7 +08959a7e4baae874928813364071194e2939772f20db7c3157078987c557c2a6d5abe68d520eef3dc491692e1e21bcd880adebf63bb4213b50897fa005256ed41b5690f78f52855c8d9168a4b666fce2da2b456d7a7e7c17ab5f2fb1ee90b79e698712e963715983fd07641ae4b4e9dc73203fac1ae11fa1f8c7941fcc82eab247addb56e2638447e9d609e610b60ce086656aaebf1da3c8a231d7d94e2fd0afe46b391ff14a72eaeb3f44ad4df85866def43d4781a0b3578bc996c87970b132,86b3c81aa398c8819afc4f282dfbce24f4192b2530c267a78373d253c35c1dcc4f40835529563fd42a33fd2cbd680515 +cb2a234f45e2ecd5863895a451d389a369aab99cfef0d5c9ffca1e6e63f763b5c14fb9b478313c8e8c0efeb3ac9500cf5fd93791b789e67eac12fd038e2547cc8e0fc9db591f33a1e4907c64a922dda23ec9827310b306098554a4a78f050262db5b545b159e1ff1dca6eb734b872343b842c57eafcfda8405eedbb48ef32e99696d135979235c3a05364e371c2d76f1902f1d83146df9495c0a6c57d7bf9ee77e80f9787aee27be1fe126cdc9ef893a4a7dcbbc367e40fe4e1ee90b42ea25af01,a6bf548ab19ff60d6a8729fa62fdc9b59237843739afff877233ed374bcf70a017126974c2d1a3222d8d906be850a25d +d16beadf02ab1d4dc6f88b8c4554c51e866df830b89c06e786a5f8757e8909310af51c840efe8d20b35331f4355d80f73295974653ddd620cdde4730fb6c8d0d2dcb2b45d92d4fbdb567c0a3e86bd1a8a795af26fbf29fc6c65941cddb090ff7cd230ac5268ab4606fccba9eded0a2b5d014ee0c34f0b2881ac036e24e151be89eeb6cd9a7a790afccff234d7cb11b99ebf58cd0c589f20bdac4f9f0e28f75e3e04e5b3debce607a496d848d67fa7b49132c71b878fd5557e082a18eca1fbda94d4b,ba7d3b6af5966c8c2723b1318820505d040da810126abc3e65088dc421e46d3e54dd31777c539ae083b7b8a4e2303836 +8f65f6bc59a85705016e2bae7fe57980de3127e5ab275f573d334f73f8603106ec3553016608ef2dd6e69b24be0b7113bf6a760ba6e9ce1c48f9e186012cf96a1d4849d75df5bb8315387fd78e9e153e76f8ba7ec6c8849810f59fb4bb9b004318210b37f1299526866f44059e017e22e96cbe418699d014c6ea01c9f0038b10299884dbec3199bb05adc94e955a1533219c1115fed0e5f21228b071f40dd57c4240d98d37b73e412fe0fa4703120d7c0c67972ed233e5deb300a22605472fa3a3ba86,48ca5912c111db667a77be7c77f841e8b37130248377a19cd2fa3cd2eec48b337cfe07c290f2690ad49e79ce3a9f9e53 +84891e52e0d451813210c3fd635b39a03a6b7a7317b221a7abc270dfa946c42669aacbbbdf801e1584f330e28c729847ea14152bd637b3d0f2b38b4bd5bf9c791c58806281103a3eabbaede5e711e539e6a8b2cf297cf351c078b4fa8f7f35cf61bebf8814bf248a01d41e86c5715ea40c63f7375379a7eb1d78f27622fb468ab784aaaba4e534a6dfd1df6fa15511341e725ed2e87f98737ccb7b6a6dfae416477472b046bf1811187d151bfa9f7b2bf9acdb23a3be507cdf14cfdf517d2cb5fb9e4ab6,4b3849b0916dd445b1856e1b908c414c752d280de2183dd1f0193e73fd1bc02198599502391e8ca48d65e610d6edcd8e +fdd7a9433a3b4afabd7a3a5e3457e56debf78e84b7a0b0ca0e8c6d53bd0c2dae31b2700c6128334f43981be3b213b1d7a118d59c7e6b6493a86f866a1635c12859cfb9ad17460a77b4522a5c1883c3d6acc86e6162667ec414e9a104aa892053a2b1d72165a855bacd8faf8034a5dd9b716f47a0818c09bb6baf22aa503c06b4ca261f557761989d2afbd88b6a678ad128af68672107d0f1fc73c5ca740459297b3292b281e93bceb761bde7221c3a55708e5ec84472cddcaa84ecf23723cc0991355c6280,02c90820d5fa9a91072991e87bfeec7f18315f8ca1908edbf19886c4ca5bd54ab9ec96a6ab7b815b58538f088867030f +70a40bfbef92277a1aad72f6b79d0177197c4ebd432668cfec05d099accb651062b5dff156c0b27336687a94b26679cfdd9daf7ad204338dd9c4d14114033a5c225bd11f217b5f4732da167ee3f939262d4043fc9cba92303b7b5e96aea12adda64859df4b86e9ee0b58e39091e6b188b408ac94e1294a8911245ee361e60e601eff58d1d37639f3753bec80ebb4efde25817436076623fc65415fe51d1b0280366d12c554d86743f3c3b6572e400361a60726131441ba493a83fbe9afda90f7af1ae717238d,75967501ff781efc3c9d597179c8ccaee4373d9bf6aa6a5bed5118303edc8b7478a47f2ceaf0a6b5b7224e53d5f1cdb3 +74356e449f4bf8644f77b14f4d67cb6bd9c1f5ae357621d5b8147e562b65c66585caf2e491b48529a01a34d226d436959153815380d5689e30b35357cdac6e08d3f2b0e88e200600d62bd9f5eaf488df86a4470ea227006182e44809009868c4c280c43d7d64a5268fa719074960087b3a6abc837882f882c837834535929389a12b2c78187e2ea07ef8b8eef27dc85002c3ae35f1a50bee6a1c48ba7e175f3316670b27983472aa6a61eed0a683a39ee323080620ea44a9f74411ae5ce99030528f9ab49c79f2,298387ba8a3eb88ee36b4206e54193bc5857f2a303ce41dff7c3bd53ef7ee3d34ae7e0c714311a7bd8d25502cab414b7 +8c3798e51bc68482d7337d3abb75dc9ffe860714a9ad73551e120059860dde24ab87327222b64cf774415a70f724cdf270de3fe47dda07b61c9ef2a3551f45a5584860248fabde676e1cd75f6355aa3eaeabe3b51dc813d9fb2eaa4f0f1d9f834d7cad9c7c695ae84b329385bc0bef895b9f1edf44a03d4b410cc23a79a6b62e4f346a5e8dd851c2857995ddbf5b2d717aeb847310e1f6a46ac3d26a7f9b44985af656d2b7c9406e8a9e8f47dcb4ef6b83caacf9aefb6118bfcff7e44bef6937ebddc89186839b77,27cef65d1aecb7051bad55da0d601bc9d7a16d938a5715374a43109dd41b5c27d26c91cb44e4b47002d9b90aba0584d1 +fa56bf730c4f8395875189c10c4fb251605757a8fecc31f9737e3c2503b02608e6731e85d7a38393c67de516b85304824bfb135e33bf22b3a23b913bf6acd2b7ab85198b8187b2bcd454d5e3318cacb32fd6261c31ae7f6c54ef6a7a2a4c9f3ecb81ce3555d4f0ad466dd4c108a90399d70041997c3b25345a9653f3c9a6711ab1b91d6a9d2216442da2c973cbd685ee7643bfd77327a2f7ae9cb283620a08716dfb462e5c1d65432ca9d56a90e811443cd1ecb8f0de179c9cb48ba4f6fec360c66f252f6e64edc96b,4ac9bdfd9f717d01598908ba457627d3af7c8123f7110dd7fdb40e91ee6cac201a8b728a384e663890847dfd4de7fa76 +b6134f9c3e91dd8000740d009dd806240811d51ab1546a974bcb18d344642baa5cd5903af84d58ec5ba17301d5ec0f10ccd0509cbb3fd3fff9172d193af0f782252fd1338c7244d40e0e42362275b22d01c4c3389f19dd69bdf958ebe28e31a4ffe2b5f18a87831cfb7095f58a87c9fa21db72ba269379b2dc2384b3da953c7925761fed324620acea435e52b424a7723f6a2357374157a34cd8252351c25a1b232826cefe1bd3e70ffc15a31e7c0598219d7f00436294d11891b82497bc78aa5363892a2495df8c1eef,f03fa03e4cf9c23443d7dbdbb66d9abbafefb6500143ff0bfb5d7d6ca2bf1d7cd043a7ba7efb48f15ebc68d1f94598e7 +c941cdb9c28ab0a791f2e5c8e8bb52850626aa89205bec3a7e22682313d198b1fa33fc7295381354858758ae6c8ec6fac3245c6e454d16fa2f51c4166fab51df272858f2d603770c40987f64442d487af49cd5c3991ce858ea2a60dab6a65a34414965933973ac2457089e359160b7cdedc42f29e10a91921785f6b7224ee0b349393cdcff6151b50b377d609559923d0984cda6000829b916ab6896693ef6a2199b3c22f7dc5500a15b8258420e314c222bc000bc4e5413e6dd82c993f8330f5c6d1be4bc79f08a1a0a46,9c779d981f9b7e491ff868be22b37fa9df72de55672a0226a821b29c045df4ff788fa7271d557ef6025eea255809f241 +4499efffac4bcea52747efd1e4f20b73e48758be915c88a1ffe5299b0b005837a46b2f20a9cb3c6e64a9e3c564a27c0f1c6ad1960373036ec5bfe1a8fc6a435c2185ed0f114c50e8b3e4c7ed96b06a036819c9463e864a58d6286f785e32a804443a56af0b4df6abc57ed5c2b185ddee8489ea080deeee66aa33c2e6dab36251c402682b6824821f998c32163164298e1fafd31babbcffb594c91888c6219079d907fdb438ed89529d6d96212fd55abe20399dbefd342248507436931cdead496eb6e4a80358acc78647d043,2c0bc54a67b00ad703fc595751074c4e447efde00caaf8c8fcadf5768c330b6c7f1918f044f5c5c55810d078534a7bb3 +eecbb8fdfa4da62170fd06727f697d81f83f601ff61e478105d3cb7502f2c89bf3e8f56edd469d049807a38882a7eefbc85fc9a950952e9fa84b8afebd3ce782d4da598002827b1eb98882ea1f0a8f7aa9ce013a6e9bc462fb66c8d4a18da21401e1b93356eb12f3725b6db1684f2300a98b9a119e5d27ff704affb618e12708e77e6e5f34139a5a41131fd1d6336c272a8fc37080f041c71341bee6ab550cb4a20a6ddb6a8e0299f2b14bc730c54b8b1c1c487b494bdccfd3a53535ab2f231590bf2c4062fd2ad58f906a2d0d,2db19ca557723cd3c17e7d8140ca301a5a2cb77e3f1f595f5b850a78943c7f36fc37056dcf2badb90dda77bfa969c0aa +e64f3e4ace5c8418d65fec2bc5d2a303dd458034736e3b0df719098be7a206deaf52d6ba82316caf330ef852375188cde2b39cc94aa449578a7e2a8e3f5a9d68e816b8d16889fbc0ebf0939d04f63033ae9ae2bdab73b88c26d6bd25ee460ee1ef58fb0afa92cc539f8c76d3d097e7a6a63ebb9b5887edf3cf076028c5bbd5b9db3211371ad3fe121d4e9bf44229f4e1ecf5a0f9f0eba4d5ceb72878ab22c3f0eb5a625323ac66f7061f4a81fac834471e0c59553f108475fe290d43e6a055ae3ee46fb67422f814a68c4be3e8c9,71e5dd0755cf8b82bc79aed6fb61c9e4ff8361c9afc5ad980808a8bc480e09d59b234074472851080714e0275ce72dc5 +d2cb2d733033f9e91395312808383cc4f0ca974e87ec68400d52e96b3fa6984ac58d9ad0938dde5a973008d818c49607d9de2284e7618f1b8aed8372fbd52ed54557af4220fac09dfa8443011699b97d743f8f2b1aef3537ebb45dcc9e13dfb438428ee190a4efdb3caeb7f3933117bf63abdc7e57beb4171c7e1ad260ab0587806c4d137b6316b50abc9cce0dff3acada47bbb86be777e617bbe578ff4519844db360e0a96c6701290e76bb95d26f0f804c8a4f2717eac4e7de9f2cff3bbc55a17e776c0d02856032a6cd10ad2838,51f951b8f1013ba9bced90478e248cd89d4debc6a19ceb6ef81ba1a5d8d3339d426d50a94c7ce3d143c45deccef94965 +f2998955613dd414cc111df5ce30a995bb792e260b0e37a5b1d942fe90171a4ac2f66d4928d7ad377f4d0554cbf4c523d21f6e5f379d6f4b028cdcb9b1758d3b39663242ff3cb6ede6a36a6f05db3bc41e0d861b384b6dec58bb096d0a422fd542df175e1be1571fb52ae66f2d86a2f6824a8cfaacbac4a7492ad0433eeb15454af8f312b3b2a577750e3efbd370e8a8cac1582581971fba3ba4bd0d76e718dacf8433d33a59d287f8cc92234e7a271041b526e389efb0e40b6a18b3aaf658e82ed1c78631fd23b4c3eb27c3faec8685,210ebc1556e31a27eaf60a5fe3e181135c5ea117e3ff21af2d04beab9a243ffff632e3d7778f9a6d0304c1acf3659a3c +447797e2899b72a356ba55bf4df3acca6cdb1041eb477bd1834a9f9acbc340a294d729f2f97df3a610be0ff15edb9c6d5db41644b9874360140fc64f52aa03f0286c8a640670067a84e017926a70438db1bb361defee7317021425f8821def26d1efd77fc853b818545d055adc9284796e583c76e6fe74c9ac2587aa46aa8f8804f2feb5836cc4b3ababab8429a5783e17d5999f32242eb59ef30cd7adabc16d72dbdb097623047c98989f88d14eaf02a7212be16ec2d07981aaa99949ddf89ecd90333a77bc4e1988a82abf7c7caf3291,f5f659f6999bad8cdc77c42901a8d64c1fa827f7848985136140bf5d4b3bbb3d964d2d8156f9fd02b6d382bc8410a88e +9f2c18ade9b380c784e170fb763e9aa205f64303067eb1bcea93df5dac4bf5a2e00b78195f808df24fc76e26cb7be31dc35f0844cded1567bba29858cffc97fb29010331b01d6a3fb3159cc1b973d255da9843e34a0a4061cabdb9ed37f241bfabb3c20d32743f4026b59a4ccc385a2301f83c0b0a190b0f2d01acb8f0d41111e10f2f4e149379275599a52dc089b35fdd5234b0cfb7b6d8aebd563ca1fa653c5c021dfd6f5920e6f18bfafdbecbf0ab00281333ed50b9a999549c1c8f8c63d7626c48322e9791d5ff72294049bde91e73f8,b151bf98c52f63f294a4b1e990c86cb73c4bdd476b25c138ca66b2ba08447540b0a787dfddaa3d38af44ca8ebbed74d8 +ae159f3fa33619002ae6bcce8cbbdd7d28e5ed9d61534595c4c9f43c402a9bb31f3b301cbfd4a43ce4c24cd5c9849cc6259eca90e2a79e01ffbac07ba0e147fa42676a1d668570e0396387b5bcd599e8e66aaed1b8a191c5a47547f61373021fa6deadcb55363d233c24440f2c73dbb519f7c9fa5a8962efd5f6252c0407f190dfefad707f3c7007d69ff36b8489a5b6b7c557e79dd4f50c06511f599f56c896b35c917b63ba35c6ff8092baf7d1658e77fc95d8a6a43eeb4c01f33f03877f92774be89c1114dd531c011e53a34dc248a2f0e6,47d74fdd9a19a5389313610643fa859ff0bd7b583b099fddb9c980dcc000afeb639dd99071ea31976da35b7bc949bd4e +3b8e97c5ffc2d6a40fa7de7fcefc90f3b12c940e7ab415321e29ee692dfac799b009c99dcddb708fce5a178c5c35ee2b8617143edc4c40b4d313661f49abdd93cea79d117518805496fe6acf292c4c2a1f76b403a97d7c399daf85b46ad84e16246c67d6836757bde336c290d5d401e6c1386ab32797af6bb251e9b2d8fe754c47482b72e0b394eab76916126fd68ea7d65eb93d59f5b4c5ac40f7c3b37e7f3694f29424c24af8c8f0ef59cd9dbf1d28e0e10f799a6f78cad1d45b9db3d7dee4a7059abe99182714983b9c9d44d7f5643596d4f3,9b809198dcce24175e33098331d3a402a821ae9326e72775aae34d1a9bb53d2b57863905cfd60543bbc42b454007c315 +3434ec31b10fafdbfeec0dd6bd94e80f7ba9dca19ef075f7eb017512af66d6a4bcf7d16ba0819a1892a6372f9b35bcc7ca8155ee19e8428bc22d214856ed5fa9374c3c09bde169602cc219679f65a1566fc7316f4cc3b631a18fb4449fa6afa16a3db2bc4212eff539c67cf184680826535589c7111d73bffce431b4c40492e763d9279560aaa38eb2dc14a212d723f994a1fe656ff4dd14551ce4e7c621b2aa5604a10001b2878a897a28a08095c325e10a26d2fb1a75bfd64c250309bb55a44f23bbac0d5516a1c687d3b41ef2fbbf9cc56d4739,93c9834501fc728508a15eb9205e678983f3bdb0ba447ee739ae5082db37f2f2d485088130e0b1cbf0039d18bdf429f7 +7c7953d81c8d208fd1c97681d48f49dd003456de60475b84070ef4847c333b74575b1fc8d2a186964485a3b8634feaa3595aaa1a2f4595a7d6b6153563dee31bbac443c8a33eed6d5d956a980a68366c2527b550ee950250dfb691eacbd5d56ae14b970668be174c89df2fea43ae52f13142639c884fd62a3683c0c3792f0f24ab1318bcb27e21f4737fab62c77ea38bc8fd1cf41f7dab64c13febe7152bf5bb7ab5a78f5346d43cc741cb6f72b7b8980f268b68bf62abdfb1577a52438fe14b591498cc95f071228460c7c5d5ceb4a7bde588e7f21c,c0ad8c3e7ea595104d4bc0a08dcbc85042ed50dd8d9b01ab47c9f066f91ad3bffede4107f1eb1f5b61ca7d4091d68327 +7a6a4f4fdc59a1d223381ae5af498d74b7252ecf59e389e49130c7eaee626e7bd9897effd92017f4ccde66b0440462cdedfd352d8153e6a4c8d7a0812f701cc737b5178c2556f07111200eb627dbc299caa792dfa58f35935299fa3a3519e9b03166dffa159103ffa35e8577f7c0a86c6b46fe13db8e2cdd9dcfba85bdddcce0a7a8e155f81f712d8e9fe646153d3d22c811bd39f830433b2213dd46301941b59293fd0a33e2b63adbd95239bc01315c46fdb678875b3c81e053a40f581cfbec24a1404b1671a1b88a6d06120229518fb13a74ca0ac5ae,aa8daa02abcbc5a4b3003bff5cbc2c84594c5a0f84bd449a1a56be59566e13ec6803010d422a4c244b99812f4537c93d +d9faa14cebe9b7de551b6c0765409a33938562013b5e8e0e1e0a6418df7399d0a6a771fb81c3ca9bd3bb8e2951b0bc792525a294ebd1083688806fe5e7f1e17fd4e3a41d00c89e8fcf4a363caedb1acb558e3d562f1302b3d83bb886ed27b76033798131dab05b4217381eaaa7ba15ec820bb5c13b516dd640eaec5a27d05fdfca0f35b3a5312146806b4c0275bcd0aaa3b2017f346975db566f9b4d137f4ee10644c2a2da66deeca5342e236495c3c6280528bfd32e90af4cd9bb908f34012b52b4bc56d48cc8a6b59bab014988eabd12e1a0a1c2e170e7,caeb4f829a925679416f7cb177ed4c99721b851ab59d52979bfec6d2aaa1e602f4310b15624f9d7bf2d351db73bfb5ea +2d8427433d0c61f2d96cfe80cf1e932265a191365c3b61aaa3d6dcc039f6ba2ad52a6a8cc30fc10f705e6b7705105977fa496c1c708a277a124304f1fc40911e7441d1b5e77b951aad7b01fd5db1b377d165b05bbf898042e39660caf8b279fe5229d1a8db86c0999ed65e53d01ccbc4b43173ccf992b3a14586f6ba42f5fe30afa8ae40c5df29966f9346da5f8b35f16a1de3ab6de0f477d8d8660918060e88b9b9e9ca6a4207033b87a812dbf5544d39e4882010f82b6ce005f8e8ff6fe3c3806bc2b73c2b83afb704345629304f9f86358712e9fae3ca3e,fc1fc7f19f6c9d0ad1462b24c121c89b01b4e083edad02a8dbdeb990d98cafe0afe01e2eba646872cd816b5203ee8a87 +5e19d97887fcaac0387e22c6f803c34a3dacd2604172433f7a8a7a526ca4a2a1271ecfc5d5d7be5ac0d85d921095350dfc65997d443c21c8094e0a3fefd2961bcb94aed03291ae310ccda75d8ace4bc7d89e7d3e5d1650bda5d668b8b50bfc8e608e184f4d3a9a2badc4ff5f07e0c0bc8a9f2e0b2a26fd6d8c550008faaab75fd71af2a424bec9a7cd9d83fad4c8e9319115656a8717d3b523a68ff8004258b9990ed362308461804ba3e3a7e92d8f2ffae5c2fba55ba5a3c27c0a2f71bd711d2fe1799c2adb31b200035481e9ee5c4adf2ab9c0fa50b23975cf,84803e50dec901ff930c8a76ebc1f98ec72874deef0d249020b1dbeb4ea7d8c7da4761ede077158460e054a7f71d1994 +c8e976ab4638909387ce3b8d4e510c3230e5690e02c45093b1d297910abc481e56eea0f296f98379dfc9080af69e73b2399d1c143bee80ae1328162ce1ba7f6a8374679b20aacd380eb4e61382c99998704d62701afa914f9a2705cdb065885f50d086c3eb5753700c387118bb142f3e6da1e988dfb31ac75d7368931e45d1391a274b22f83ceb072f9bcabc0b216685bfd789f5023971024b1878a205442522f9ea7d8797a4102a3df41703768251fd5e017c85d1200a464118aa35654e7ca39f3c375b8ef8cbe7534dbc64bc20befb417cf60ec92f63d9ee7397,05586bcb8077e19f3f43015216d623b1439c49ecdd3c53255553e9133fd1a9008891520d2eebe5684c546028ca2cddfe +7145fa124b7429a1fc2231237a949ba7201bcc1822d3272de005b682398196c25f7e5cc2f289fbf44415f699cb7fe6757791b1443410234ae061edf623359e2b4e32c19bf88450432dd01caa5eb16a1dc378f391ca5e3c4e5f356728bddd4975db7c890da8bbc84cc73ff244394d0d48954978765e4a00b593f70f2ca082673a261ed88dbcef1127728d8cd89bc2c597e9102ced6010f65fa75a14ebe467fa57ce3bd4948b6867d74a9df5c0ec6f530cbf2ee61ce6f06bc8f2864dff5583776b31df8c7ffcb61428a56bf7bd37188b4a5123bbf338393af46eda85e6,a200d8ef3d120b917561edc8420bde022b3ace792925c8fabf25ad9b0fa676d2260abd8098f383c0f93043d5d3f56c47 +7fdfadcc9d29bad23ae038c6c65cda1aef757221b8872ed3d75ff8df7da0627d266e224e812c39f7983e4558bfd0a1f2bef3feb56ba09120ef762917b9c093867948547aee98600d10d87b20106878a8d22c64378bf634f7f75900c03986b077b0bf8b740a82447b61b99fee5376c5eb6680ec9e3088f0bdd0c56883413d60c1357d3c811950e5890e7600103c916341b80c743c6a852b7b4fb60c3ba21f3bc15b8382437a68454779cf3cd7f9f90ccc8ef28d0b706535b1e4108eb5627bb45d719cb046839aee311ca1abdc8319e050d67972cb35a6b1601b25dbf487,a8905d1e9f4fc96f2d769d31c9a120de43a0b20115c8d17bf0313206eb9cd87ae41df2d444c9d75f9366998263d61c07 +988638219fd3095421f826f56e4f09e356296b628c3ce6930c9f2e758fd1a80c8273f2f61e4daae65c4f110d3e7ca0965ac7d24e34c0dc4ba2d6ff0bf5bbe93b3585f354d7543cb542a1aa54674d375077f2d360a8f4d42f3db131c3b7ab7306267ba107659864a90c8c909460a73621d1f5d9d3fd95beb19b23db1cb6c0d0fba91d36891529b8bd8263caa1bab56a4affaed44962df096d8d5b1eb845ef31188b3e10f1af811a13f156beb7a288aae593ebd1471b624aa1a7c6adf01e2200b3d72d88a3aed3100c88231e41efc376906f0b580dc895f080fda5741db1cb,88249af84a7f1e49d144869a3d4fe8aa6e1a4874ee467bc99e9c33e2105af2d097417d6b78537925392db2c5cb1e0b92 +5aab62756d307a669d146aba988d9074c5a159b3de85151a819b117ca1ff6597f6156e80fdd28c9c3176835164d37da7da11d94e09add770b68a6e081cd22ca0c004bfe7cd283bf43a588da91f509b27a6584c474a4a2f3ee0f1f56447379240a5ab1fb77fdca49b305f07ba86b62756fb9efb4fc225c86845f026ea542076b91a0bc2cdd136e122c659be259d98e5841df4c2f60330d4d8cdee7bf1a0a244524eecc68ff2aef5bf0069c9e87a11c6e519de1a4062a10c83837388f7ef58598a3846f49d499682b683c4a062b421594fafbc1383c943ba83bdef515efcf10d,c46122d00b61e79df025a4d525b8a602c7ac004304a993872e3a8aa37fc0e8eaae5fad9a220c5c6afbd5a4783680013a +47b8216aa0fbb5d67966f2e82c17c07aa2d6327e96fcd83e3de7333689f3ee79994a1bf45082c4d725ed8d41205cb5bcdf5c341f77facb1da46a5b9b2cbc49eadf786bcd881f371a95fa17df73f606519aea0ff79d5a11427b98ee7f13a5c00637e2854134691059839121fea9abe2cd1bcbbbf27c74caf3678e05bfb1c949897ea01f56ffa4dafbe8644611685c617a3206c7a7036e4ac816799f693dafe7f19f303ce4eba09d21e03610201bfc665b72400a547a1e00fa9b7ad8d84f84b34aef118515e74def11b9188bd1e1f97d9a12c30132ec2806339bdadacda2fd8b78,aba0ee3c16d3dc753f6e466c33a998a73282c0dbeaf51324979a58437636886e5521b567c9a62d405ee558ffebae91bc +8cff1f67fe53c098896d9136389bd8881816ccab34862bb67a656e3d98896f3ce6ffd4da73975809fcdf9666760d6e561c55238b205d8049c1cedeef374d1735daa533147bfa960b2cce4a4f254176bb4d1bd1e89654432b8dbe1a135c42115b394b024856a2a83dc85d6782be4b444239567ccec4b184d4548eae3ff6a192f343292ba2e32a0f267f31cc26719eb85245d415fb897ac2da433ee91a99424c9d7f1766a44171d1651001c38fc79294accc68ceb5665d36218454d3ba169ae058a831338c17743603f81ee173bfc0927464f9bd728dee94c6aeab7aae6ee3a627e8,28b37125f233ba8d527e5284a16e6efe9ae84d3ebc6ee4c88aee0ab165c111a32ff2cdcc4213ac3267b0546dc0d74c84 +eacd07971cff9b9939903f8c1d8cbb5d4db1b548a85d04e037514a583604e787f32992bf2111b97ac5e8a938233552731321522ab5e8583561260b7d13ebeef785b23a41fd8576a6da764a8ed6d822d4957a545d5244756c18aa80e1aad4d1f9c20d259dee1711e2cc8fd013169fb7cc4ce38b362f8e0936ae9198b7e838dcea4f7a5b9429bb3f6bbcf2dc92565e3676c1c5e6eb3dd2a0f86aa23edd3d0891f197447692794b3dfa269611ad97f72b795602b4fdb198f3fd3eb41b415064256e345e8d8c51c555dc8a21904a9b0f1ad0effab7786aac2da3b196507e9f33ca356427,258988e54d66e0c53b263ba68d9e3aa47d278df87c51219cce6f2547281ea6581540e28c1d7e069254791f0d385ea694 +23ac4e9a42c6ef45c3336ce6dfc2ff7de8884cd23dc912fef0f7756c09d335c189f3ad3a23697abda851a81881a0c8ccafc980ab2c702564c2be15fe4c4b9f10dfb2248d0d0cb2e2887fd4598a1d4acda897944a2ffc580ff92719c95cf2aa42dc584674cb5a9bc5765b9d6ddf5789791d15f8dd925aa12bffafbce60827b490bb7df3dda6f2a143c8bf96abc903d83d59a791e2d62814a89b8080a28060568cf24a80ae61179fe84e0ffad00388178cb6a617d37efd54cc01970a4a41d1a8d3ddce46edbba4ab7c90ad565398d376f431189ce8c1c33e132feae6a8cd17a61c630012,f6a9399b482a3a5ea6fe79a2db7bae7e588c9b7da03dd85c120112fdbc234350529a1f37abbebeb770299e141eea7ba3 +0172df732282c9d488669c358e3492260cbe91c95cfbc1e3fea6c4b0ec129b45f242ace09f152fc6234e1bee8aab8cd56e8b486e1dcba9c05407c2f95da8d8f1c0af78ee2ed82a3a79ec0cb0709396ee62aadb84f8a4ee8a7ccca3c1ee84e302a09ea802204afecf04097e67d0f8e8a9d2651126c0a598a37081e42d168b0ae8a71951c524259e4e2054e535b779679bdade566fe55700858618e626b4a0faf895bcce9011504a49e05fd56127eae3d1f8917afb548ecadabda1020111fec9314c413498a360b08640549a22cb23c731ace743252a8227a0d2689d4c6001606678dfb921,c0f957e52e40f9b8ea945d40779286f7257ad463a934b049df40c31d3547aef41aea2dd981fd2579327229b54ee04e66 +3875b9240cf3e0a8b59c658540f26a701cf188496e2c2174788b126fd29402d6a75453ba0635284d08835f40051a2a9683dc92afb9383719191231170379ba6f4adc816fecbb0f9c446b785bf520796841e58878b73c58d3ebb097ce4761fdeabe15de2f319dfbaf1742cdeb389559c788131a6793e193856661376c81ce9568da19aa6925b47ffd77a43c7a0e758c37d69254909ff0fbd415ef8eb937bcd49f91468b49974c07dc819abd67395db0e05874ff83dddab895344abd0e7111b2df9e58d76d85ad98106b36295826be04d435615595605e4b4bb824b33c4afeb5e7bb0d19f909,779eecf39311318051bf73c441fb799708912049e28df3fadde449e4cd820cc4ca1bd0f8513927d9a64f5d34faaba039 +747cc1a59fefba94a9c75ba866c30dc5c1cb0c0f8e9361d98484956dd5d1a40f6184afbe3dac9f76028d1caeccfbf69199c6ce2b4c092a3f4d2a56fe5a33a00757f4d7dee5dfb0524311a97ae0668a47971b95766e2f6dd48c3f57841f91f04a00ad5ea70f2d479a2620dc5cd78eaab3a3b011719b7e78d19ddf70d9423798af77517ebc55392fcd01fc600d8d466b9e7a7a85bf33f9cc5419e9bd874ddfd60981150ddaf8d7febaa4374f0872a5628d318000311e2f5655365ad4d407c20e5c04df17a222e7deec79c5ab1116d8572f91cd06e1ccc7ced53736fc867fd49ecebe6bf8082e8a,3d6495eb3da4e81d3470a050f416e2c8abf657a26d4fd64af35735b5782b611fb798a72fe7a61ce79d0496f69654cc80 +57af971fccaec97435dc2ec9ef0429bcedc6b647729ea168858a6e49ac1071e706f4a5a645ca14e8c7746d65511620682c906c8b86ec901f3dded4167b3f00b06cbfac6aee3728051b3e5ff10b4f9ed8bd0b8da94303c833755b3ca3aeddf0b54bc8d6632138b5d25bab03d17b3458a9d782108006f5bb7de75b5c0ba854b423d8bb801e701e99dc4feaad59bc1c7112453b04d33ea3635639fb802c73c2b71d58a56bbd671b18fe34ed2e3dca38827d63fdb1d4fb3285405004b2b3e26081a8ff08cd6d2b08f8e7b7e90a2ab1ed7a41b1d0128522c2f8bff56a7fe67969422ce839a9d4608f03,f8188eafd0e2f9c7f44e70b38db1fe3e12b1469739ca6a13ed5a8661673a318296ffaf8d37f6fcec22a2d00eee2abeba +04e16dedc1227902baaf332d3d08923601bdd64f573faa1bb7201918cfe16b1e10151dae875da0c0d63c59c3dd050c4c6a874011b018421afc4623ab0381831b2da2a8ba42c96e4f70864ac44e106f94311051e74c77c1291bf5db9539e69567bf6a11cf6932bbbad33f8946bf5814c066d851633d1a513510039b349939bfd42b858c21827c8ff05f1d09b1b0765dc78a135b5ca4dfba0801bcaddfa175623c8b647eacfb4444b85a44f73890607d06d507a4f8393658788669f6ef4deb58d08c50ca0756d5e2f49d1a7ad73e0f0b3d3b5f090acf622b1878c59133e4a848e05153592ea81c6fbf,7d83c3f2265c90fef4bc6bd0d17a218f0e196489cb2d8455bbee80ab989ffea46de753346edbd5c88448fedb0d4aad4d +7c815c384eee0f288ece27cced52a01603127b079c007378bc5d1e6c5e9e6d1c735723acbbd5801ac49854b2b569d4472d33f40bbb8882956245c366dc3582d71696a97a4e19557e41e54dee482a14229005f93afd2c4a7d8614d10a97a9dfa07f7cd946fa45263063ddd29db8f9e34db60daa32684f0072ea2a9426ecebfa5239fb67f29c18cbaa2af6ed4bf4283936823ac1790164fec5457a9cba7c767ca59392d94cab7448f50eb34e9a93a80027471ce59736f099c886dea1ab4cba4d89f5fc7ae2f21ccd27f611eca4626b2d08dc22382e92c1efb2f6afdc8fdc3d2172604f5035c46b8197d3,fcc5fcfef5ba874a317b73c9b1b4cf6877373d41f0b8080a5d4f021e0d67f3b9f8ccaacfd4244fc10ba58b3a470db48b +e29d505158dbdd937d9e3d2145658ee6f5992a2fc790f4f608d9cdb44a091d5b94b88e81fac4fdf5c49442f13b911c55886469629551189eaff62488f1a479b7db11a1560e198ddccccf50159093425ff7f1cb8d1d1246d0978764087d6bac257026b090efae8cec5f22b6f21c59ace1ac7386f5b8837ca6a12b6fbf5534dd0560ef05ca78104d3b943ddb220feaec89aa5e692a00f822a2ab9a2fe60350d75e7be16ff2526dc643872502d01f42f188abed0a6e9a6f5fd0d1ce7d5755c9ffa66b0af0b20bd806f08e06156690d81ac811778ca3dac2c249b96002017fce93e507e3b953acf99964b847,9b336b4c2b530f65c01af3f0a46cf1b626d5dbf1b2e50f790b9f34cca367315fdfbf7d9619cda4da22e39f9315303816 +d85588696f576e65eca0155f395f0cfacd83f36a99111ed5768df2d116d2121e32357ba4f54ede927f189f297d3a97fad4e9a0f5b41d8d89dd7fe20156799c2b7b6bf9c957ba0d6763f5c3bc5129747bbb53652b49290cff1c87e2cdf2c4b95d8aaee09bc8fbfa6883e62d237885810491bfc101f1d8c636e3d0ede838ad05c207a3df4fad76452979eb99f29afaecedd1c63b8d36cf378454a1bb67a741c77ac6b6b3f95f4f02b64dabc15438613ea49750df42ee90101f115aa9abb9ff64324dde9dabbb01054e1bd6b4bcdc7930a44c2300d87ca78c06924d0323ad7887e46c90e8c4d100acd9eed21e,cac442227f10c4935d42c2914043167890c3ee1f4556d38d20767e8402aec4d70111f2034276e90f28102de634e26afd +3a12f8508b40c32c74492b66323375dcfe49184c78f73179f3314b79e63376b8ac683f5a51f1534bd729b02b04d002f55cbd8e8fc9b5ec1ea6bbe6a0d0e7431518e6ba45d124035f9d3dce0a8bb7bf1430a9f657e0b4ea9f20eb20c786a58181a1e20a96f1628f8728a13bdf7a4b4b32fc8aa7054cc4881ae7fa19afa65c6c3ee1b3ade3192af42054a8a911b8ec1826865d46d93f1e7c5e2b7813c92a506e53886f3d4701bb93d2a681ad109c845904bb861af8af0646b6e399b38b614051d34f6842563a0f37ec00cb3d865fc5d746c4987de2a65071100883a2a9c7a2bfe1e2dd603d9ea24dc7c5fd06be,05e3fb83ee8d609874d5935283702f29e5e896bb090c48033489295989c45dd2c06f5bd558b6bc786ab1251f75664b06 +1861edce46fa5ad17e1ff1deae084dec580f97d0a67885dfe834b9dfac1ae076742ce9e267512ca51f6df5a455af0c5fd6abf94acea103a3370c354485a7846fb84f3ac7c2904b5b2fbf227002ce512133bb7e1c4e50057bfd1e44db33c7cdb969a99e284b184f50a14b068a1fc5009d9b298dbe92239572a7627aac02abe8f3e3b473417f36d4d2505d16b7577f4526c9d94a270a2dfe450d06da8f6fa956879a0a55cfe99e742ea555ea477ba3e9b44ccd508c375423611af92e55345dc215779b2d5119eba49c71d49b9fe3f1569fa24e5ca3e332d042422a8b8158d3ec66a80012976f31ffdf305f0c9c5e,6e463c7fb5cf436b1444921afe76d2fa4e7a23edfc9d496af1dc7e78a0173d797eff80f2bb32cfd34daf5633c4e6bcd6 +08d0ffde3a6e4ef65608ea672e4830c12943d7187ccff08f4941cfc13e545f3b9c7ad5eebbe2b01642b486caf855c2c73f58c1e4e3391da8e2d63d96e15fd84953ae5c231911b00ad6050cd7aafdaac9b0f663ae6aab45519d0f5391a541707d479034e73a6ad805ae3598096af078f1393301493d663dd71f83869ca27ba508b7e91e81e128c1716dc3acfe3084b2201e04cf8006617eecf1b640474a5d45cfde9f4d3ef92d6d055b909892194d8a8218db6d8203a84261d200d71473d7488f3427416b6896c137d455f231071cacbc86e0415ab88aec841d96b7b8af41e05bb461a40645bf176601f1e760de5f,90457e3d33fce103420056a1c712441e04856b17cf37a4e133841e6d9a944b5ebef98cb1c1ccd575632cd3b5c177669e +d782abb72a5be3392757be02d3e45be6e2099d6f000d042c8a543f50ed6ebc055a7f133b0dd8e9bc348536edcaae2e12ec18e8837df7a1b3c87ec46d50c241dee820fd586197552dc20beea50f445a07a38f1768a39e2b2ff05dddedf751f1def612d2e4d810daa3a0cc904516f9a43af660315385178a529e51f8aae141808c8bc5d7b60cac26bb984ac1890d0436ef780426c547e94a7b08f01acbfc4a3825eae04f520a9016f2fb8bf5165ed12736fc71e36a49a73614739eaa3ec834069b1b40f1350c2b3ab885c02c640b9f7686ed5f99527e41cfcd796fe4c256c9173186c226169ff257954ebda81c0e5f99,e5fc73c70028d1b82a9aa976d34f5fc72916839027038e79df2e29149e861f09a41a8203ce922203f710964b4f5bec2e +5fce8109a358570e40983e1184e541833bb9091e280f258cfb144387b05d190e431cb19baa67273ba0c58abe91308e1844dcd0b3678baa42f335f2fa05267a0240b3c718a5942b3b3e3bfa98a55c25a1466e8d7a603722cb2bbf03afa54cd769a99f310735ee5a05dae2c22d397bd95635f58c48a67f90e1b73aafcd3f82117f0166657838691005b18da6f341d6e90fc1cdb352b30fae45d348294e501b63252de14740f2b85ae5299ddec3172de8b6d0ba219a20a23bb5e10ff434d39db3f583305e9f5c039d98569e377b75a70ab837d1df269b8a4b566f40bb91b577455fd3c356c914fa06b9a7ce24c7317a172d,b0a1bba912daa6d80edc6519b501b629456394d7bda24d46afc9fc1d93a0b5962fa4f95214273290d32b3eaeff6f9dfe +6172f1971a6e1e4e6170afbad95d5fec99bf69b24b674bc17dd78011615e502de6f56b86b1a71d3f4348087218ac7b7d09302993be272e4a591968aef18a1262d665610d1070ee91cc8da36e1f841a69a7a682c580e836941d21d909a3afc1f0b963e1ca5ab193e124a1a53df1c587470e5881fb54dae1b0d840f0c8f9d1b04c645ba1041c7d8dbf22030a623aa15638b3d99a2c400ff76f3252079af88d2b37f35ee66c1ad7801a28d3d388ac450b97d5f0f79e4541755356b3b1a5696b023f39ab7ab5f28df4202936bc97393b93bc915cb159ea1bd7a0a414cb4b7a1ac3af68f50d79f0c9c7314e750f7d02faa58bfa,fce4637898ba0cbd9d7b636febddc02a435901cbbef8bf76d3e866d97d55354b71fc12e67a09e793d749316d714fe08c +5668ecd99dfbe215c4118398ac9c9eaf1a1433fab4ccdd3968064752b625ea944731f75d48a27d047d67547f14dd0ffaa55fa5e29f7af0d161d85eafc4f2029b717c918eab9d304543290bdba7158b68020c0ba4e079bc95b5bc0fc044a992b94b4ccd3bd66d0eabb5dbbab904d62e00752c4e3b0091d773bcf4c14b4377da3efff824b1cb2fa01b32d1e46c909e626ed2dae920f4c7dbeb635bc754facbd8d49beba3f23c1c41ccbfcd0ee0c114e69737f5597c0bf1d859f0c767e18002ae8e39c26261ffde2920d3d0baf0e906138696cfe5b7e32b600f45df3aaa39932f3a7df95b60fa8712a2271fcaf3911ce7b511b1,2b5471fae3805852f4cf39541f8a0a3774818f79fe50476e225d89b62e43be3255e96d19cbc334aef04192840f075c7d +03d625488354df30e3f875a68edfcf340e8366a8e1ab67f9d5c5486a96829dfac0578289082b2a62117e1cf418b43b90e0adc881fc6ae8105c888e9ecd21aea1c9ae1a4038dfd17378fed71d02ae492087d7cdcd98f746855227967cb1ab4714261ee3bead3f4db118329d3ebef4bc48a875c19ba763966da0ebea800e01b2f50b00e9dd4caca6dcb314d00184ef71ea2391d760c950710db4a70f9212ffc54861f9dc752ce18867b8ad0c48df8466ef7231e7ac567f0eb55099e622ebb86cb237520190a61c66ad34f1f4e289cb3282ae3eaac6152ed24d2c92bae5a7658252a53c49b7b02dfe54fdb2e90074b6cf310ac661,d4d3b49878aec72e2e7fafb687da7efe242cb60adf5c65c577c444cfc95a2a2ec670000c8a78898a07400e3502d73f27 +2edc282ffb90b97118dd03aaa03b145f363905e3cbd2d50ecd692b37bf000185c651d3e9726c690d3773ec1e48510e42b17742b0b0377e7de6b8f55e00a8a4db4740cee6db0830529dd19617501dc1e9359aa3bcf147e0a76b3ab70c4984c13e339e6806bb35e683af8527093670859f3d8a0fc7d493bcba6bb12b5f65e71e705ca5d6c948d66ed3d730b26db395b3447737c26fad089aa0ad0e306cb28bf0acf106f89af3745f0ec72d534968cca543cd2ca50c94b1456743254e358c1317c07a07bf2b0eca438a709367fafc89a57239028fc5fecfd53b8ef958ef10ee0608b7f5cb9923ad97058ec067700cc746c127a61ee3,fe1c2143f2957819df9c9dd05d004be0e557eed8c5a2b7ce457d5856132b1c43eecec36ad704a930a85485a34c3860fe +90b28a6aa1fe533915bcb8e81ed6cacdc10962b7ff82474f845eeb86977600cf70b07ba8e3796141ee340e3fce842a38a50afbe90301a3bdcc591f2e7d9de53e495525560b908c892439990a2ca2679c5539ffdf636777ad9c1cdef809cda9e8dcdb451abb9e9c17efa4379abd24b182bd981cafc792640a183b61694301d04c5b3eaad694a6bd4cc06ef5da8fa23b4fa2a64559c5a68397930079d250c51bcf00e2b16a6c49171433b0aadfd80231276560b80458dd77089b7a1bbcc9e7e4b9f881eacd6c92c4318348a13f4914eb27115a1cfc5d16d7fd94954c3532efaca2cab025103b2d02c6fd71da3a77f417d7932685888a,4d1f626688e6899b5fccd47faab45e96c61e169869cabef40283b2418dfb2888fb80cc9f2c526497c50c5244784f195c +2969447d175490f2aa9bb055014dbef2e6854c95f8d60950bfe8c0be8de254c26b2d31b9e4de9c68c9adf49e4ee9b1c2850967f29f5d08738483b417bb96b2a56f0c8aca632b552059c59aac3f61f7b45c966b75f1d9931ff4e596406378cee91aaa726a3a84c33f37e9cdbe626b5745a0b06064a8a8d56e53aaf102d23dd9df0a3fdf7a638509a6761a33fa42fa8ddbd8e16159c93008b53765019c3f0e9f10b144ce2ac57f5d7297f9c9949e4ff68b70d339f87501ce8550b772f32c6da8ad2ce2100a895d8b08fa1eead7c376b407709703c510b50f87e73e43f8e7348f87c3832a547ef2bbe5799abedcf5e1f372ea809233f006,a063d778b0a2a11d3a9cba425ee5938fcaa6e2bf1f30a665fa811601444d5749afa18766db5f0426c5b8392238b7862e +721645633a44a2c78b19024eaecf58575ab23c27190833c26875dc0f0d50b46aea9c343d82ea7d5b3e50ec700545c615daeaea64726a0f05607576dcd396d812b03fb6551c641087856d050b10e6a4d5577b82a98afb89cee8594c9dc19e79feff0382fcfd127f1b803a4b9946f4ac9a4378e1e6e041b1389a53e3450cd32d9d2941b0cbabdb50da8ea2513145164c3ab6bcbd251c448d2d4b087ac57a59c2285d564f16da4ed5e607ed979592146ffb0ef3f3db308fb342df5eb5924a48256fc763141a278814c82d6d6348577545870ae3a83c7230ac02a1540fe1798f7ef09e335a865a2ae0949b21e4f748fb8a51f44750e213a8fb,470ee6d35157846890a01b3809eb923cc45dfff2fca2826f458325466c983b1c64bea38bcaeca921c90dd00432eccf89 +6b860d39725a14b498bb714574b4d37ca787404768f64c648b1751b353ac92bac2c3a28ea909fdf0423336401a02e63ec24325300d823b6864bb701f9d7c7a1f8ec9d0ae3584aa6dd62ea1997cd831b4babd9a4da50932d4efda745c61e4130890e156aee6113716daf95764222a91187db2effea49d5d0596102d619bd26a616bbfda8335505fbb0d90b4c180d1a2335b91538e1668f9f9642790b4e55f9cab0fe2bdd2935d001ee6419abab5457880d0dbff20ed8758f4c20fe759efb33141cf0e892587fe8187e5fbc57786b7e8b089612c936dfc03d27efbbe7c8673f1606bd51d5ff386f4a7ab68edf59f385eb1291f117bfe717399,a8f0a3c89cf7e56acc18ace1638bcf133094fd9f75f05677c3cd0ed3614a593cbceb09c78c86e350fd07ff4429a6a165 +6a01830af3889a25183244decb508bd01253d5b508ab490d3124afbf42626b2e70894e9b562b288d0a2450cfacf14a0ddae5c04716e5a0082c33981f6037d23d5e045ee1ef2283fb8b6378a914c5d9441627a722c282ff452e25a7ea608d69cee4393a0725d17963d0342684f255496d8a18c2961145315130549311fc07f0312fb78e6077334f87eaa873bee8aa95698996eb21375eb2b4ef53c14401207deb4568398e5dd9a7cf97e8c9663e23334b46912f8344c19efcf8c2ba6f04325f1a27e062b62a58d0766fc6db4d2c6a1928604b0175d872d16b7908ebc041761187cc785526c2a3873feac3a642bb39f5351550af9770c328af7b,c8a9a24464f21b133ebe20ba421a81ee34dceacd5f04dcfb66d219f7f4145633692c572b63007834a406ecfb938a14f6 +b3c5e74b69933c2533106c563b4ca20238f2b6e675e8681e34a389894785bdade59652d4a73d80a5c85bd454fd1e9ffdad1c3815f5038e9ef432aac5c3c4fe840cc370cf86580a6011778bbedaf511a51b56d1a2eb68394aa299e26da9ada6a2f39b9faff7fba457689b9c1a577b2a1e505fdf75c7a0a64b1df81b3a356001bf0df4e02a1fc59f651c9d585ec6224bb279c6beba2966e8882d68376081b987468e7aed1ef90ebd090ae825795cdca1b4f09a979c8dfc21a48d8a53cdbb26c4db547fc06efe2f9850edd2685a4661cb4911f165d4b63ef25b87d0a96d3dff6ab0758999aad214d07bd4f133a6734fde445fe474711b69a98f7e2b,91bada31b57a4bf3d2eb19a34ff921db10bd6406191486d25d5ca4de5e00b5e2815dae741064e5b877ac57511b949f91 +83af34279ccb5430febec07a81950d30f4b66f484826afee7456f0071a51e1bbc55570b5cc7ec6f9309c17bf5befdd7c6ba6e968cf218a2b34bd5cf927ab846e38a40bbd81759e9e33381016a755f699df35d660007b5eadf292feefb735207ebf70b5bd17834f7bfa0e16cb219ad4af524ab1ea37334aa66435e5d397fc0a065c411ebbce32c240b90476d307ce802ec82c1c49bc1bec48c0675ec2a6c6f3ed3e5b741d13437095707c565e10d8a20b8c20468ff9514fcf31b4249cd82dcee58c0a2af538b291a87e3390d737191a07484a5d3f3fb8c8f15ce056e5e5f8febe5e1fb59d6740980aa06ca8a0c20f5712b4cde5d032e92ab89f0ae1,f310e80951c7bb6395ca168aae7ec42deff6c4cd3f5be9c8b49b85b405f731911ae8267ffebd543dbdf409ec20a858d2 +a7ed84749ccc56bb1dfba57119d279d412b8a986886d810f067af349e8749e9ea746a60b03742636c464fc1ee233acc52c1983914692b64309edfdf29f1ab912ec3e8da074d3f1d231511f5756f0b6eead3e89a6a88fe330a10face267bffbfc3e3090c7fd9a850561f363ad75ea881e7244f80ff55802d5ef7a1a4e7b89fcfa80f16df54d1b056ee637e6964b9e0ffd15b6196bdd7db270c56b47251485348e49813b4eb9ed122a01b3ea45ad5e1a929df61d5c0f3e77e1fdc356b63883a60e9cbb9fc3e00c2f32dbd469659883f690c6772e335f617bc33f161d6f6984252ee12e62b6000ac5231e0c9bc65be223d8dfd94c5004a101af9fd6c0fb,cfd05e080994fc6d7aef2d8c6e44d8a5e90f5a231676e0fae0d2b8ce162ca9d06712580c99997a7709a06180dd42fb91 +a6fe30dcfcda1a329e82ab50e32b5f50eb25c873c5d2305860a835aecee6264aa36a47429922c4b8b3afd00da16035830edb897831c4e7b00f2c23fc0b15fdc30d85fb70c30c431c638e1a25b51caf1d7e8b050b7f89bfb30f59f0f20fecff3d639abc4255b3868fc45dd81e47eb12ab40f2aac735df5d1dc1ad997cefc4d836b854cee9ac02900036f3867fe0d84afff37bde3308c2206c62c4743375094108877c73b87b2546fe05ea137bedfc06a2796274099a0d554da8f7d7223a48cbf31b7decaa1ebc8b145763e3673168c1b1b715c1cd99ecd3ddb238b06049885ecad9347c2436dff32c771f34a38587a44a82c5d3d137a03caa27e66c8ff6,8fa26dd5a54bf94a037a165ec5ce3ed86147a08dcfe3b48818b0c0beeefa33b145323b598f761de2b639d05127f1cf3e +83167ff53704c3aa19e9fb3303539759c46dd4091a52ddae9ad86408b69335989e61414bc20ab4d01220e35241eff5c9522b079fba597674c8d716fe441e566110b6211531ceccf8fd06bc8e511d00785e57788ed9a1c5c73524f01830d2e1148c92d0edc97113e3b7b5cd3049627abdb8b39dd4d6890e0ee91993f92b03354a88f52251c546e64434d9c3d74544f23fb93e5a2d2f1fb15545b4e1367c97335b0291944c8b730ad3d4789273fa44fb98d78a36c3c3764abeeac7c569c1e43a352e5b770c3504f87090dee075a1c4c85c0c39cf421bdcc615f9eff6cb4fe6468004aece5f30e1ecc6db22ad9939bb2b0ccc96521dfbf4ae008b5b46bc006e,283fd61d1e50572ef403bf9c554d76d694a54f902c49795d1cf506f0ee263e7ba994f72bdc4732531fa7194257f2dfda +3a3a819c48efde2ad914fbf00e18ab6bc4f14513ab27d0c178a188b61431e7f5623cb66b23346775d386b50e982c493adbbfc54b9a3cd383382336a1a0b2150a15358f336d03ae18f666c7573d55c4fd181c29e6ccfde63ea35f0adf5885cfc0a3d84a2b2e4dd24496db789e663170cef74798aa1bbcd4574ea0bba40489d764b2f83aadc66b148b4a0cd95246c127d5871c4f11418690a5ddf01246a0c80a43c70088b6183639dcfda4125bd113a8f49ee23ed306faac576c3fb0c1e256671d817fc2534a52f5b439f72e424de376f4c565cca82307dd9ef76da5b7c4eb7e085172e328807c02d011ffbf33785378d79dc266f6a5be6bb0e4a92eceebaeb1,128dc611762be9b135b3739484cfaadca7481d68514f3dfd6f5d78bb1863ae68130835cdc7061a7ed964b32f1db75ee1 +# EOF diff --git a/Lib/test/vectors/sha3_512.txt b/Lib/test/vectors/sha3_512.txt new file mode 100644 index 0000000000000000000000000000000000000000..97920c2d0d77aac1ba6ed5e024f7a8fb73c53256 --- /dev/null +++ b/Lib/test/vectors/sha3_512.txt @@ -0,0 +1,258 @@ +# ShortMsgKAT_SHA3-512.txt +,a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26 +cc,3939fcc8b57b63612542da31a834e5dcc36e2ee0f652ac72e02624fa2e5adeecc7dd6bb3580224b4d6138706fc6e80597b528051230b00621cc2b22999eaa205 +41fb,aa092865a40694d91754dbc767b5202c546e226877147a95cb8b4c8f8709fe8cd6905256b089da37896ea5ca19d2cd9ab94c7192fc39f7cd4d598975a3013c69 +1f877c,cb20dcf54955f8091111688beccef48c1a2f0d0608c3a575163751f002db30f40f2f671834b22d208591cfaf1f5ecfe43c49863a53b3225bdfd7c6591ba7658b +c1ecfdfc,d4b4bdfef56b821d36f4f70ab0d231b8d0c9134638fd54c46309d14fada92a2840186eed5415ad7cf3969bdfbf2daf8cca76abfe549be6578c6f4143617a4f1a +21f134ac57,584219a84e8796076bf1178b14b9d1e2f96a4b4ef11f10cc516fbe1a29639d6ba74fb92815f9e3c5192ed4dca20aea5b109d52237c9956401fd44b221f82ab37 +c6f50bb74e29,4345b92a2ab7eadb6a24ee1d175ac258ccf2f694ac09ec9d47399e4d96f61f30b322c5438c51bacd0d597d00471a41ed8e9c9f146bbc807e6bc385f850fbabfe +119713cc83eeef,50081c93bf73ecc54a5ffe43fc14f8baeedbe7da0302ac984c9e668389886bd064bab26ddcb616eb4e0e726042b19f3fd50bdd0d2c5b34892e00e6f399de254f +4a4f202484512526,150d787d6eb49670c2a4ccd17e6cce7a04c1fe30fce03d1ef2501752d92ae04cb345fd42e51038c83b2b4f8fd438d1b4b55cc588c6b913132f1a658fb122cb52 +1f66ab4185ed9b6375,a13c951c6c51f236a0197a29a8994b1c7294e17ba518ed1029d6f54ad739d8765920281bbb854d16fbb60e0385afd6e6e433e63aaa77e73b8bee7fde569d6875 +eed7422227613b6f53c9,5a566fb181be53a4109275537d80e5fd0f314d68884529ca66b8b0e9f240a673b64b28fffe4c1ec4a5cef0f430229c5757ebd172b4b0b68a81d8c58a9e96e164 +eaeed5cdffd89dece455f1,7c77e30ece98ef88964458683c5e0287b5896e166ccca71d2bfd8d8bbc6d6fe589a0225eb1d6aa7b220f1410c9a9ec0672ccddaa1732c3e2877fb5d232c2a428 +5be43c90f22902e4fe8ed2d3,f5df5952924e933330bd5bd7627a62c3672f24a4991dadaf78816e023769c91d1910537f9c19fcde60fa6de927982dd5f5970f74e30f2b040f67348a3394c48c +a746273228122f381c3b46e4f1,80a1317ec534ed48d8a813e0bca0cee04f705a2f86352306a932edc548b9a8f1cf79f95027f43bdada8213449c54f68f4dd800b15c4abad87ad7a3b371a7c918 +3c5871cd619c69a63b540eb5a625,54c274c3ddf26d824f5fdfcb349a600890057eb2e2022245cbb8bdc0d2240cfa8348f02191fabc0e10f9287185211c9f569132ee6dde4c396668b4bb50aefc3f +fa22874bcc068879e8ef11a69f0722,00767236a7352551b283a8ecf4c79274f8c4cea553ab43fc71cf22fb2f6865ad02c88bf0092f213057340c85a5318f62f4991c00c63cb0558cbcf13d6d84e73d +52a608ab21ccdd8a4457a57ede782176,001618372e75147af90c0cf16c3bbdaa069ddbc62483b392d028ded49f75084a5dfcc53aecd9f57ddbb73daa041fd71089d8fb5edf6cfaf6f1e4e25ad3de266c +82e192e4043ddcd12ecf52969d0f807eed,9644e3c90b67e22124e96dfedce53d33c460f132868f0975d18b22cfd59f637dd85aa405e39808a45570a498c0b8f2cba59f8e1437eaef89f20b88298adfa2de +75683dcb556140c522543bb6e9098b21a21e,4739994390728f4a938df7b3201cd63771858453f0ff1dde9a2b9c38a27a0f6c868460d00ee03ddcb0f063f5f8bb7cb0959b7a222259da0f2c57fa400b50985b +06e4efe45035e61faaf4287b4d8d1f12ca97e5,af69a46527c17117e6dff32cba289eddd1eecda13e5313e46678eb8006e7639854c3970dfeb4d907db1151c1c5ee25ca6f195b09ca5a5cc97a4d64ac4c75578e +e26193989d06568fe688e75540aea06747d9f851,191cef1c6aa009b1aba674be2b3f0da418fdf9e6a7ecf2be42ac14f7d6e07331425133a83b4e0161cc7debf9dcd7fe3787dcb6622a38475189edfe1de6b053d6 +d8dc8fdefbdce9d44e4cbafe78447bae3b5436102a,a60d7587424b7242d93bcce515f1c75ae2be7710f72ed3f4e5ea8bc2ba8d64099fe42b88a295e12fdafab441d772c4a9a7d794b27788edea271571a04305f253 +57085fd7e14216ab102d8317b0cb338a786d5fc32d8f,09fcad97ea3cb6b7fc61580de0968d238006b7e71f0bd58aba2aa9d4adb855d7606e7632138ccc0aa065ca0b92422262e029da17d73cd3011ff285706c7fc1ae +a05404df5dbb57697e2c16fa29defac8ab3560d6126fa0,f61faab080cf9a5f75407b081a03def4f49a601a2bb832e8c6401be0c98b3ceb3f75c922a91bd5060b3217f737404ef4612b9a009b69ca648b1e37b2ed49229d +aecbb02759f7433d6fcb06963c74061cd83b5b3ffa6f13c6,51de0a622fc6fc702c7c2db5ccb05ca0ddf792986e44b4d336a7a5daf19a20a371d9bf7dde822ecdd0a4ce28e4a0b46fe51a2aabefa7865807ef3d3b1887f14d +aafdc9243d3d4a096558a360cc27c8d862f0be73db5e88aa55,6286c3db87d3b45cfd4de85a7add18e07ae22f1f0f4675e1d4e1fc77633734d7962818a9f3b96b37fe774fc26dea787485317b9622275f63a7dd6d62d650d307 +7bc84867f6f9e9fdc3e1046cae3a52c77ed485860ee260e30b15,8146c43a0ffe481872142f56a9cea44332edc76b4e99c2bdc39d7f80b2a6b554c7598f09855bf7abc5e6c048be76f5f369ebb2884e6e37f186e8719df3d523e4 +fac523575a99ec48279a7a459e98ff901918a475034327efb55843,4b86fbf9dfb6767eb660af9c30983ed65b6fd051247ab54767dfb49530eb3c01014eb26df63e536cf55e0bce2f62654fb2fce3839b4bfd301570b1ab794df67d +0f8b2d8fcfd9d68cffc17ccfb117709b53d26462a3f346fb7c79b85e,21132fc11f6040ad493d627027c752ce29816589de7be78562914b63d1a9219803ddbd9673aa749f37ff4d6e1b5ae2a12633ba8b0c9994e031ebf6c42e58a793 +a963c3e895ff5a0be4824400518d81412f875fa50521e26e85eac90c04,8a5374d92ff9a58e0451e609aa5c0c5c172bb2068c80562d0324f9cb6a037436910c6593f950c44374b4e5bf6f6d3a436ece6daaeb56d147d8cd839cca35eac3 +03a18688b10cc0edf83adf0a84808a9718383c4070c6c4f295098699ac2c,71025d089a39d27327c46c27bd4e7565ddbf9c286f185a08178601c3bab4667f368a3a8bddacf25b2b0aa5c9e0cd6c87dc32c854027a8954b5c6afd3a85097ac +84fb51b517df6c5accb5d022f8f28da09b10232d42320ffc32dbecc3835b29,dc29eb7130812a652af3ff9b77629684634502ea6667e7e9f80090ec2a9d690c8c9a78645fb04d9cd269e706ee2c96e74207fbbda559dc285c9bc52f15a256ca +9f2fcc7c90de090d6b87cd7e9718c1ea6cb21118fc2d5de9f97e5db6ac1e9c10,b087c90421aebf87911647de9d465cbda166b672ec47ccd4054a7135a1ef885e7903b52c3f2c3fe722b1c169297a91b82428956a02c631a2240f12162c7bc726 +de8f1b3faa4b7040ed4563c3b8e598253178e87e4d0df75e4ff2f2dedd5a0be046,d2a95c6fc0f39c8f7a86c4dd6261a79c940fcb313bcfba9bf71527f5bc70ef827cd97dfa18280e5ddee5ccbc1d63ce88ce2bcdd82dab610f79867a7c20b11e4f +62f154ec394d0bc757d045c798c8b87a00e0655d0481a7d2d9fb58d93aedc676b5a0,af8c0fbd72b3f807db95c9231bc4e93153dc6608b22f4707316aab3d69af0e63291b569f118b5c9e693c5bac4630c4a923a4743581246ad3446dda4f9076fddb +b2dcfe9ff19e2b23ce7da2a4207d3e5ec7c6112a8a22aec9675a886378e14e5bfbad4e,bfc7d968d45342069807c5f1b96425cfffe99ed136d47665e902e026c118701bb7c3e7fd691785115cfdb2ef235a66bcc1384a1d088b8cca90d9d560913549de +47f5697ac8c31409c0868827347a613a3562041c633cf1f1f86865a576e02835ed2c2492,9a348540ab669cdd8914426fbbad192ba0db16583e8d4e867b66cc78c6496e4d83ddbf7b972b0668df7903b0fe9ab82b65153f947cf2af2591121c9d1a78e515 +512a6d292e67ecb2fe486bfe92660953a75484ff4c4f2eca2b0af0edcdd4339c6b2ee4e542,ffdb649d1aa7ff269b9bb0ae6192f7bcbc06612528df0e68521d5c891e9bba129271a07dc56393bb21218f5e2fb92cfff833432066aa6380f3557a0748e65b33 +973cf2b4dcf0bfa872b41194cb05bb4e16760a1840d8343301802576197ec19e2a1493d8f4fb,9665808d39b4becfdd9aa8020a0a72cfd4f823a15d670d51278a4ae95507e16020aeded6e6c0e2dab0bad890a9e7552403d2aa8d1ebc0b8eaec9a3a8dbb2a9ef +80beebcd2e3f8a9451d4499961c9731ae667cdc24ea020ce3b9aa4bbc0a7f79e30a934467da4b0,7aba6b9f8f18d9d72b883eb988a5f4ffcc0217a3da316aff11b38976e90b0736cb000f522dbf2ddcbb61ba4bf44c356ec5b46fc86a5133f971a94fe2a9983260 +7abaa12ec2a7347674e444140ae0fb659d08e1c66decd8d6eae925fa451d65f3c0308e29446b8ed3,589c46625a6ac9a2c9c9a884f427c3c032887ae53a69932b72e1e3796bb9568929d163395a3aa8b2ab23c564937cd729206d9b62cc60353b68a69a739616eb35 +c88dee9927679b8af422abcbacf283b904ff31e1cac58c7819809f65d5807d46723b20f67ba610c2b7,f7cd8737a1ab36b37612e57d1e5a3d4a269d18cf2cb7644a12540e3b184631794ec1a1da118a109aef514db3590fe27be0752ec0826acaf458fb0a754bdc51f1 +01e43fe350fcec450ec9b102053e6b5d56e09896e0ddd9074fe138e6038210270c834ce6eadc2bb86bf6,b21bdede484ca18f672058667cb2f2dc922c44351e95c2cda75af7e45577bf50e3f203139f6262279adfc3221b94a072641f8bdb55dcc02f21d0879eb5e7466a +337023370a48b62ee43546f17c4ef2bf8d7ecd1d49f90bab604b839c2e6e5bd21540d29ba27ab8e309a4b7,db56265b9346968a390e9841d5b7878a158baed946068e808e456735a67e49220fab66239d5d506dd75a58f2c56e25c9c105a3827c1434c67255cfc9101a5d09 +6892540f964c8c74bd2db02c0ad884510cb38afd4438af31fc912756f3efec6b32b58ebc38fc2a6b913596a8,4c825fd9a795ccd20a0892da1572b9b1f70ba05ff2d2da3a4726a74f9ab5323ccbc4290459c1bb46f0a1e1ffc357ff4766f4f4879daa91d31eca986aa30c7b00 +f5961dfd2b1ffffda4ffbf30560c165bfedab8ce0be525845deb8dc61004b7db38467205f5dcfb34a2acfe96c0,8445a05766a30ddd0080589f8e8cbf7ec59fb7a3ce73c0209791b19cf712cf1635d63c8356822272309c6b9f01637088878dbffbedb26d2a566185225c4da56b +ca061a2eb6ceed8881ce2057172d869d73a1951e63d57261384b80ceb5451e77b06cf0f5a0ea15ca907ee1c27eba,2dc25165cf317ed7de2b4f2fd0995d7785978ca8581ea8033e912f2e44ee613debfc5535c48d63838f325d1416b9180c20bde82614504b7161f9860530eca70c +1743a77251d69242750c4f1140532cd3c33f9b5ccdf7514e8584d4a5f9fbd730bcf84d0d4726364b9bf95ab251d9bb,cb6110a02d7ca636463f6e3502ccf0173b000482c7e002ad9277c1d10317bddebc3da7f91d0173e3e2f9552bdfdea4dd1afbf7508b096aab1804921e95754e78 +d8faba1f5194c4db5f176fabfff856924ef627a37cd08cf55608bba8f1e324d7c7f157298eabc4dce7d89ce5162499f9,7ef3a2894c6ecbc4201b15348f90671515accba3c8166621f864a9184bf08c3f5a895f6b599d3cb41f20a8a1df25ae84f1a6d7c8de74fb7cef48f7e96fde8d43 +be9684be70340860373c9c482ba517e899fc81baaa12e5c6d7727975d1d41ba8bef788cdb5cf4606c9c1c7f61aed59f97d,39c7ae0f80129d9d2980a6246e2b6f10a39efafd694ded12a6089509d95ece506dc38c0a9de487d9d401db1f15193404911069533bcae4c48c53f27bee3ce0ac +7e15d2b9ea74ca60f66c8dfab377d9198b7b16deb6a1ba0ea3c7ee2042f89d3786e779cf053c77785aa9e692f821f14a7f51,9b8a7d2f8519ad6dc3d2bc5b696b354c5a8b4796402ce1242c52638eea6893a1269820a642bc9efe56cd7e26dc46e97a7fc58faf3f1a7a25f86ecdc1f2f17e64 +9a219be43713bd578015e9fda66c0f2d83cac563b776ab9f38f3e4f7ef229cb443304fba401efb2bdbd7ece939102298651c86,b5ceef23f56be807b616c7fda4867a1d12d0a16845459fc704ce631ad3279ab222dca7addae595d289cba8996d46655fa9b6be58700302e655c51c825f31bb2e +c8f2b693bd0d75ef99caebdc22adf4088a95a3542f637203e283bbc3268780e787d68d28cc3897452f6a22aa8573ccebf245972a,143d024fa75c8d46273589b8f78432d49ef14178e4aaa27dc366c9cb787f24b73f4197a722f13031181a6fa6e4f66127893da7b23a579bb93fe7d737a4194093 +ec0f99711016c6a2a07ad80d16427506ce6f441059fd269442baaa28c6ca037b22eeac49d5d894c0bf66219f2c08e9d0e8ab21de52,0f48d008dd3aa630e8261658a55b565b6773992426b08592b4c1d77a58b067f05e25974e501628a2db632f2dddd73673119ada5674d0ce92c7aa908b9e9c435e +0dc45181337ca32a8222fe7a3bf42fc9f89744259cff653504d6051fe84b1a7ffd20cb47d4696ce212a686bb9be9a8ab1c697b6d6a33,297498639fc7aa4152654e468e08f29affd7061d44e3f532be4bac169c877a2ea7b4d70d6bc0f678be08aa064258ef57111310d13b889712d06530b690841dbe +de286ba4206e8b005714f80fb1cdfaebde91d29f84603e4a3ebc04686f99a46c9e880b96c574825582e8812a26e5a857ffc6579f63742f,1b6da16151fcd18383372683480119a304796b2a5e54f7edc6c7bc86817359e73f6fc5587c77bfc71b56ec67905fa7f15193f9f13cfa190bc7b05503a5782c8a +eebcc18057252cbf3f9c070f1a73213356d5d4bc19ac2a411ec8cdeee7a571e2e20eaf61fd0c33a0ffeb297ddb77a97f0a415347db66bcaf,b2f40935e7c9018814c4e2721d9b5aeeed3370690378e472bd29f227442ca4942b06189c346fda498123ece59018e42c8b7ee38191f97789b4aa93223a8d80ef +416b5cdc9fe951bd361bd7abfc120a5054758eba88fdd68fd84e39d3b09ac25497d36b43cbe7b85a6a3cebda8db4e5549c3ee51bb6fcb6ac1e,c8d242fb5ff1c6cd11a040aeaf35cc09e355a975e04ded1d8341878bed5dff8bbbd1b69f4d122ce53309ac08753b95d2a57721dfd12e70a8ef12e11e16de0fd9 +5c5faf66f32e0f8311c32e8da8284a4ed60891a5a7e50fb2956b3cbaa79fc66ca376460e100415401fc2b8518c64502f187ea14bfc9503759705,d1d5d5dd7d196b87be4a38f2d9b4a69df9dfe0a6e8ce71b08cf22c7f670ecf273eaf395d12fc63e1741def113cc7104970194a7c7c807e5319d7bb702f20b568 +7167e1e02be1a7ca69d788666f823ae4eef39271f3c26a5cf7cee05bca83161066dc2e217b330df821103799df6d74810eed363adc4ab99f36046a,d812470b2d135b6e1bc0c85dc0652bf9f6c2f9ee707a2e667181cc9f689bc7df9cc999b08716868afac78244b151b725a027d9250ab7a073a469e7f09bdb0b55 +2fda311dbba27321c5329510fae6948f03210b76d43e7448d1689a063877b6d14c4f6d0eaa96c150051371f7dd8a4119f7da5c483cc3e6723c01fb7d,203ef6bb5132a9d44eae93c7202b1469c2c2b93706d0a31b29223c411a39550f60f39b9556fd040bfb5f9f7099313b8874c8ed677cfc5f93d9a2941a9b0139de +95d1474a5aab5d2422aca6e481187833a6212bd2d0f91451a67dd786dfc91dfed51b35f47e1deb8a8ab4b9cb67b70179cc26f553ae7b569969ce151b8d,23bead09707a77b295fd22fe001282338c2d368302a05fb114ba2a012c4defcf06f3887d6db7a0a1de04bc399bde92d6be71904a9aa7b92bedfa0203f1d8b06f +c71bd7941f41df044a2927a8ff55b4b467c33d089f0988aa253d294addbdb32530c0d4208b10d9959823f0c0f0734684006df79f7099870f6bf53211a88d,93a8db85774b321090801df4dc3cc75e94af63ff6dcf50bd210e5b65fb35e1beaeded55602eb32380726029834982d77b434e94179d0a3ee1059345910ee1dcc +f57c64006d9ea761892e145c99df1b24640883da79d9ed5262859dcda8c3c32e05b03d984f1ab4a230242ab6b78d368dc5aaa1e6d3498d53371e84b0c1d4ba,3b7d98ff3152b2024aad4fa0b40dc642e842d453305ecef278574e386172f3c164e4efb9c2951a23fc73d83c16b4900fb92aeb8efe06b58f918bc4a481e4c238 +e926ae8b0af6e53176dbffcc2a6b88c6bd765f939d3d178a9bde9ef3aa131c61e31c1e42cdfaf4b4dcde579a37e150efbef5555b4c1cb40439d835a724e2fae7,eb5067bf762a291cf258ad69a816a0b089e0bd44f8e5b74cf60bce64734e59853ccb8d091cd2e33f90aa063fb7942cf5965d459200144c1a0801abd69a9a094a +16e8b3d8f988e9bb04de9c96f2627811c973ce4a5296b4772ca3eefeb80a652bdf21f50df79f32db23f9f73d393b2d57d9a0297f7a2f2e79cfda39fa393df1ac00,b0e23d600ba4215f79d50047bbfed50df7d6e769514d796afd166deeca88bd1cbe0afc72a41e0317a223225b4f5882f723afcba3af7c457eb525946da6c53bb0 +fc424eeb27c18a11c01f39c555d8b78a805b88dba1dc2a42ed5e2c0ec737ff68b2456d80eb85e11714fa3f8eabfb906d3c17964cb4f5e76b29c1765db03d91be37fc,83021062117da99327e521d7c91331208bf3f0a972a6c755eca46760c0984871fe03724a51fb5441c3cdd3d24fa1b8127510d6a42cfe18b08e8096ed702ef33c +abe3472b54e72734bdba7d9158736464251c4f21b33fbbc92d7fac9a35c4e3322ff01d2380cbaa4ef8fb07d21a2128b7b9f5b6d9f34e13f39c7ffc2e72e47888599ba5,bca9f06b6b9ab8f76c4f3dbe677d5b4b3103423644484c77cdd8c5dd6c1a0bf717c76e83da9b2b4edfe4cc133c1fc86396e8c3a9e42fdd20519fcaa19969189f +36f9f0a65f2ca498d739b944d6eff3da5ebba57e7d9c41598a2b0e4380f3cf4b479ec2348d015ffe6256273511154afcf3b4b4bf09d6c4744fdd0f62d75079d440706b05,dcdf7617f79da8475b3a4db1306c9caf87f1ae85ec97721892d8e20d0e54ec82ee7a0f2d17f21a61aecd89a6c4cf5019d7b8077447efe03def5208010a8a1e84 +abc87763cae1ca98bd8c5b82caba54ac83286f87e9610128ae4de68ac95df5e329c360717bd349f26b872528492ca7c94c2c1e1ef56b74dbb65c2ac351981fdb31d06c77a4,9b8c7142180f0ed85359b6d186ae05b77b2db7c3e1f066392e733b7eeffd7c11f7a6c0c570273a1f3fea1a0929d017c7a4fa00175b5aba76861bca7ee806458b +94f7ca8e1a54234c6d53cc734bb3d3150c8ba8c5f880eab8d25fed13793a9701ebe320509286fd8e422e931d99c98da4df7e70ae447bab8cffd92382d8a77760a259fc4fbd72,3ab73a0a75b997c0ee8329c33e6ef1389e9821711867f775af29517edffbe410d037143c6431fded3d8ce728086c3512e94f038b9243b50cb820dc2445535d91 +13bd2811f6ed2b6f04ff3895aceed7bef8dcd45eb121791bc194a0f806206bffc3b9281c2b308b1a729ce008119dd3066e9378acdcc50a98a82e20738800b6cddbe5fe9694ad6d,def4ab6cda8839729a03e000846604b17f03c5d5d7ec23c483670a13e11573c1e9347a63ec69a5abb21305f9382ecdaaabc6850f92840e86f88f4dabfcd93cc0 +1eed9cba179a009ec2ec5508773dd305477ca117e6d569e66b5f64c6bc64801ce25a8424ce4a26d575b8a6fb10ead3fd1992edddeec2ebe7150dc98f63adc3237ef57b91397aa8a7,a3e168b0d6c143ee9e17eae92930b97e6600356b73aebb5d68005dd1d07494451a37052f7b39ff030c1ae1d7efc4e0c3667eb7a76c627ec14354c4f6a796e2c6 +ba5b67b5ec3a3ffae2c19dd8176a2ef75c0cd903725d45c9cb7009a900c0b0ca7a2967a95ae68269a6dbf8466c7b6844a1d608ac661f7eff00538e323db5f2c644b78b2d48de1a08aa,635741b37f66cd5ce4dbd1f78accd907f96146e770b239046afb9181910b612d0e65841ff866806eed83c3ae7012fc55e42c3ffc9c6e3d03ce2870442f293ab4 +0efa26ac5673167dcacab860932ed612f65ff49b80fa9ae65465e5542cb62075df1c5ae54fba4db807be25b070033efa223bdd5b1d3c94c6e1909c02b620d4b1b3a6c9fed24d70749604,d6299a21cb1b31f0a6eb67d82d4e738249013b75c9bcb4a4fe419036a6043a7103e9ca9b7d25759177c4b64001377093cf39f35c9b1625c6819369fa375fa49d +bbfd933d1fd7bf594ac7f435277dc17d8d5a5b8e4d13d96d2f64e771abbd51a5a8aea741beccbddb177bcea05243ebd003cfdeae877cca4da94605b67691919d8b033f77d384ca01593c1b,07f0a184734ba4bb721f36d7b1b383f6bf99cd5f75941ecf1ff2b325f03af970d1db1f035975702093f59a7610bf054d12017ecd6109177cf061ab1496f87860 +90078999fd3c35b8afbf4066cbde335891365f0fc75c1286cdd88fa51fab94f9b8def7c9ac582a5dbcd95817afb7d1b48f63704e19c2baa4df347f48d4a6d603013c23f1e9611d595ebac37c,89070b8b1e322ccf9d6307edc11fc34e13874c4977da9f6035d06faf647d7f7d54b8250b541744298aacd4c54d9b41b4085dd35c491a461d504bdb42fc12f03c +64105eca863515c20e7cfbaa0a0b8809046164f374d691cdbd6508aaabc1819f9ac84b52bafc1b0fe7cddbc554b608c01c8904c669d8db316a0953a4c68ece324ec5a49ffdb59a1bd6a292aa0e,6c3fbe32556445dad430cf15fe1243b6ab44349eec2be1132b0680e5edf0b08b55f1abe473439c5e0750132996195fd120c267b9100c47777b339132ec34cc80 +d4654be288b9f3b711c2d02015978a8cc57471d5680a092aa534f7372c71ceaab725a383c4fcf4d8deaa57fca3ce056f312961eccf9b86f14981ba5bed6ab5b4498e1f6c82c6cae6fc14845b3c8a,6ae3e656cf94db10ae3c185362a6625cec53e0ba4dc7d1608a3f2fca3c4f31f89fe1b06fe9ca345e3f5e967a3ebcf6a1a16e24521d5c4690d9b642483ac7a896 +12d9394888305ac96e65f2bf0e1b18c29c90fe9d714dd59f651f52b88b3008c588435548066ea2fc4c101118c91f32556224a540de6efddbca296ef1fb00341f5b01fecfc146bdb251b3bdad556cd2,ada8e78ce3e6d447ba2b7dcf98718fe7d43b38d68117e5779a41edd8fa72198e3b3c1c0215925bc9d007fd2c355edd668a0c27ef0ff89f76cf85363d4c9ee001 +871a0d7a5f36c3da1dfce57acd8ab8487c274fad336bc137ebd6ff4658b547c1dcfab65f037aa58f35ef16aff4abe77ba61f65826f7be681b5b6d5a1ea8085e2ae9cd5cf0991878a311b549a6d6af230,3569d9a08dfb0001be713940c464c119f5a4c1b9ff97d8297d04c7b2dce2d684aee16443c32e5bb2355ac8a336249d1baaeab4fbd04ab982d6b178dd0a5b5bc8 +e90b4ffef4d457bc7711ff4aa72231ca25af6b2e206f8bf859d8758b89a7cd36105db2538d06da83bad5f663ba11a5f6f61f236fd5f8d53c5e89f183a3cec615b50c7c681e773d109ff7491b5cc22296c5,1343e3cd162d7986431babe66383b84029665691e36caf97cdaca17ee9e97d74201d2a828d72e9fbbd5e07831d90f09eaf3c863bd102cdb1edebc8ad58a53ece +e728de62d75856500c4c77a428612cd804f30c3f10d36fb219c5ca0aa30726ab190e5f3f279e0733d77e7267c17be27d21650a9a4d1e32f649627638dbada9702c7ca303269ed14014b2f3cf8b894eac8554,bba01dbea9660f9c2ad74460b67a82440701eb995143ffcf7434b5d2de4e35c82cc757df776d46199dd8e7355aeb1f42a88f6f0bb50fd239c73898156e4ddbbc +6348f229e7b1df3b770c77544e5166e081850fa1c6c88169db74c76e42eb983facb276ad6a0d1fa7b50d3e3b6fcd799ec97470920a7abed47d288ff883e24ca21c7f8016b93bb9b9e078bdb9703d2b781b616e,3268bc24e29392dda1677b7a3ce3111994482d17bad1c150ac885f1d29c308657c69fd4f7ce5967d04fccb920dacb00d0ce09536ee92a6664cb20e692d91d8ce +4b127fde5de733a1680c2790363627e63ac8a3f1b4707d982caea258655d9bf18f89afe54127482ba01e08845594b671306a025c9a5c5b6f93b0a39522dc877437be5c2436cbf300ce7ab6747934fcfc30aeaaf6,ec13e390fa65fdc11054e32c9f5bf5e6e97fbc34c28089346ff22d9762bebf6a14fa7f9c2e6643d1ed7ec6925d0fa2098f8149058e99d02ad5cb61b4ccba6467 +08461f006cff4cc64b752c957287e5a0faabc05c9bff89d23fd902d324c79903b48fcb8f8f4b01f3e4ddb483593d25f000386698f5ade7faade9615fdc50d32785ea51d49894e45baa3dc707e224688c6408b68b11,6fd5a334d4b7f9c72a8db1292cc8f19bf2a00f5c226c1636248024723cb876070a9657f48ab3b1d4229202b7bbc64053a48c3ff6b93ab11a2af3237721c9cc09 +68c8f8849b120e6e0c9969a5866af591a829b92f33cd9a4a3196957a148c49138e1e2f5c7619a6d5edebe995acd81ec8bb9c7b9cfca678d081ea9e25a75d39db04e18d475920ce828b94e72241f24db72546b352a0e4,016c80cbabed07c50f2c1b677c43e52de8d11751e54e596e0c04b3837a7e34a9ff5d2e98e7c58182879c15847d18dce88ea900337bc448112e98ce1118820c58 +b8d56472954e31fb54e28fca743f84d8dc34891cb564c64b08f7b71636debd64ca1edbdba7fc5c3e40049ce982bba8c7e0703034e331384695e9de76b5104f2fbc4535ecbeebc33bc27f29f18f6f27e8023b0fbb6f563c,a4e85ff86482c10c6aaabc79a573cbf89a0a927110d755f22b529bd7cf3f6cc6cb9861e509657242a78b0c0af78ff97abcc1a8388270d6c8d302d45c9ba58404 +0d58ac665fa84342e60cefee31b1a4eacdb092f122dfc68309077aed1f3e528f578859ee9e4cefb4a728e946324927b675cd4f4ac84f64db3dacfe850c1dd18744c74ceccd9fe4dc214085108f404eab6d8f452b5442a47d,b97afb77d39f8904ae8a5129a7ddc8ec9290ac40356e1b53dd057fa7584ba31afaf9ef5b657097fc115eaa33e7ede36dd00832d677ebd07c34b071e73580dd3a +1755e2d2e5d1c1b0156456b539753ff416651d44698e87002dcf61dcfa2b4e72f264d9ad591df1fdee7b41b2eb00283c5aebb3411323b672eaa145c5125185104f20f335804b02325b6dea65603f349f4d5d8b782dd3469ccd,ab2fc59a43a2666c9206b9317479285e660b670c6f111f999556e8151e0eb8d12bc82c9a7e7b3f8d6f382a8d96775ea417f754ff552e1bac271fbd08240f1b86 +b180de1a611111ee7584ba2c4b020598cd574ac77e404e853d15a101c6f5a2e5c801d7d85dc95286a1804c870bb9f00fd4dcb03aa8328275158819dcad7253f3e3d237aeaa7979268a5db1c6ce08a9ec7c2579783c8afc1f91a7,0a673af84e2d2317b80a873bfe38b252872708b38af9b956e3554ac2dce2f77c815593d99930e7aa666c57b59730712e5c4a9b57849eddd712a378040eb824d8 +cf3583cbdfd4cbc17063b1e7d90b02f0e6e2ee05f99d77e24e560392535e47e05077157f96813544a17046914f9efb64762a23cf7a49fe52a0a4c01c630cfe8727b81fb99a89ff7cc11dca5173057e0417b8fe7a9efba6d95c555f,1d34645463ebbd932c730e593d9c108aa86807db6785f05c4ce80f3e8302f87efbccb1ab884e25f1dcd5485d385502995e7abe2ef11bd3469e036d7eb93b4f39 +072fc02340ef99115bad72f92c01e4c093b9599f6cfc45cb380ee686cb5eb019e806ab9bd55e634ab10aa62a9510cc0672cd3eddb589c7df2b67fcd3329f61b1a4441eca87a33c8f55da4fbbad5cf2b2527b8e983bb31a2fadec7523,3f57fa915a782e3cc69815ba219f42aa2c222cd7f309f10af843384b3d3939aa0b92dd9571686c7961e06bfee818127fc5b5f32c67f4aa2af10d4fa38f65e90d +76eecf956a52649f877528146de33df249cd800e21830f65e90f0f25ca9d6540fde40603230eca6760f1139c7f268deba2060631eea92b1fff05f93fd5572fbe29579ecd48bc3a8d6c2eb4a6b26e38d6c5fbf2c08044aeea470a8f2f26,151382ca35fb20b895a9dc074d687f2f335eaf57456d357a685ef752da59174d3f239aa9e04f142138d9413b21904665ef4df2f63e663b490383660481f78362 +7adc0b6693e61c269f278e6944a5a2d8300981e40022f839ac644387bfac9086650085c2cdc585fea47b9d2e52d65a2b29a7dc370401ef5d60dd0d21f9e2b90fae919319b14b8c5565b0423cefb827d5f1203302a9d01523498a4db10374,23aa4b74c54e8f450054b6abdbc6f6c3e44366afcec099b155775de040bf3b9cdd0b875f9d490faa694f18ccbffec6cab7de57a59ec6327240ac59d62d50b21c +e1fffa9826cce8b86bccefb8794e48c46cdf372013f782eced1e378269b7be2b7bf51374092261ae120e822be685f2e7a83664bcfbe38fe8633f24e633ffe1988e1bc5acf59a587079a57a910bda60060e85b5f5b6f776f0529639d9cce4bd,3605cec16a7aa8b2525479fcc1295411b6a952dce233c9acc856d6d17c9812c920178500cd0028b5998d07046c6a5cf398ee1ec97df9182c33fca86647861878 +69f9abba65592ee01db4dce52dbab90b08fc04193602792ee4daa263033d59081587b09bbe49d0b49c9825d22840b2ff5d9c5155f975f8f2c2e7a90c75d2e4a8040fe39f63bbafb403d9e28cc3b86e04e394a9c9e8065bd3c85fa9f0c7891600,c5a526d75816d41b53bf164b0467e0b80a9984d1830edb9d49f7ec3ecfefb01a2c824a0f645753aa463d567cb2782afcb2b2c2102ea664c56998f79062636fc1 +38a10a352ca5aedfa8e19c64787d8e9c3a75dbf3b8674bfab29b5dbfc15a63d10fae66cd1a6e6d2452d557967eaad89a4c98449787b0b3164ca5b717a93f24eb0b506ceb70cbbcb8d72b2a72993f909aad92f044e0b5a2c9ac9cb16a0ca2f81f49,b239941a31100ab1b24af2d1fef149dba300105a31b72a8f217e306a0602d722ccd593a23e6539d3e4195a7e12ca19ae2bae8b8399f7a9d50db30216e973f2bf +6d8c6e449bc13634f115749c248c17cd148b72157a2c37bf8969ea83b4d6ba8c0ee2711c28ee11495f43049596520ce436004b026b6c1f7292b9c436b055cbb72d530d860d1276a1502a5140e3c3f54a93663e4d20edec32d284e25564f624955b52,d6ab0d0b416d1bbc85479f9850585761b91775a60307afacf70943feb58657740fe35dc760ab9cfa672c6b5552aa67bfa1f0d6a6f943b3912c229b8e0155c002 +6efcbcaf451c129dbe00b9cef0c3749d3ee9d41c7bd500ade40cdc65dedbbbadb885a5b14b32a0c0d087825201e303288a733842fa7e599c0c514e078f05c821c7a4498b01c40032e9f1872a1c925fa17ce253e8935e4c3c71282242cb716b2089ccc1,bc0a28450368c288013e2eb1196e58933ce05869cb55fa2bda61d9d92f83b903e59dde0b927ca6dbc46f5af2eb7e8831e8668888bfea46d78f4d274818d56328 +433c5303131624c0021d868a30825475e8d0bd3052a022180398f4ca4423b98214b6beaac21c8807a2c33f8c93bd42b092cc1b06cedf3224d5ed1ec29784444f22e08a55aa58542b524b02cd3d5d5f6907afe71c5d7462224a3f9d9e53e7e0846dcbb4ce,7820a20056df741e19ff4d150663488cf86f936353e99e25b93220f5230bfbc13363b458d6db92f9d211d705362b01782ec118acfe53bae4c6ac2c7e5d0111fb +a873e0c67ca639026b6683008f7aa6324d4979550e9bce064ca1e1fb97a30b147a24f3f666c0a72d71348ede701cf2d17e2253c34d1ec3b647dbcef2f879f4eb881c4830b791378c901eb725ea5c172316c6d606e0af7df4df7f76e490cd30b2badf45685f,0984a43286a3cb22fb59f7880e114e23e3ad3b0d43025f3987d0aa6fa8e53e6066f80f4769241dcd062431c7f6712c57c6e3275ed3f2bc591db6dc20e5be0953 +006917b64f9dcdf1d2d87c8a6173b64f6587168e80faa80f82d84f60301e561e312d9fbce62f39a6fb476e01e925f26bcc91de621449be6504c504830aae394096c8fc7694651051365d4ee9070101ec9b68086f2ea8f8ab7b811ea8ad934d5c9b62c60a4771,a6300497f650859cd744679885cd5437a64cc3961574dcce65e1611616a9f97190f39130ba532094bd62464d0b8b52297a2c9c279b2c9860c072cd44449a9cdf +f13c972c52cb3cc4a4df28c97f2df11ce089b815466be88863243eb318c2adb1a417cb1041308598541720197b9b1cb5ba2318bd5574d1df2174af14884149ba9b2f446d609df240ce335599957b8ec80876d9a085ae084907bc5961b20bf5f6ca58d5dab38adb,e2052884d112238807c02c135247f76e0e394bd6583ba83ed2731cf68f057276272b891a761cdec6d8ad2e3f33e86ae9d9a234682bce7a53816235692d2cf821 +e35780eb9799ad4c77535d4ddb683cf33ef367715327cf4c4a58ed9cbdcdd486f669f80189d549a9364fa82a51a52654ec721bb3aab95dceb4a86a6afa93826db923517e928f33e3fba850d45660ef83b9876accafa2a9987a254b137c6e140a21691e1069413848,ff6a7d0efea45e5f0abcb173fce2be76b52d0f3fc363afe31d219472742d73e56cee2ab91a94d41335c4fa25cbdd6ebd1a087637caa25099d5a9d60693cf62b9 +64ec021c9585e01ffe6d31bb50d44c79b6993d72678163db474947a053674619d158016adb243f5c8d50aa92f50ab36e579ff2dabb780a2b529370daa299207cfbcdd3a9a25006d19c4f1fe33e4b1eaec315d8c6ee1e730623fd1941875b924eb57d6d0c2edc4e78d6,4183f96759e7c0628f2fc81979274f42111a43bd5dbb3685bb21704ce6b0ed3d164decf28a3a991b303e1d7b86e2b175ba89945a8524f9c9318f12b160a1e4d1 +5954bab512cf327d66b5d9f296180080402624ad7628506b555eea8382562324cf452fba4a2130de3e165d11831a270d9cb97ce8c2d32a96f50d71600bb4ca268cf98e90d6496b0a6619a5a8c63db6d8a0634dfc6c7ec8ea9c006b6c456f1b20cd19e781af20454ac880,940c6f0bacf11e4b045f432003f889278709f9c3d8e420c9a17155f57e776d72b4306bba4adf721708f6ef457444ab12238372e207ab41d5ef5a68529ed0b26c +03d9f92b2c565709a568724a0aff90f8f347f43b02338f94a03ed32e6f33666ff5802da4c81bdce0d0e86c04afd4edc2fc8b4141c2975b6f07639b1994c973d9a9afce3d9d365862003498513bfa166d2629e314d97441667b007414e739d7febf0fe3c32c17aa188a8683,172f0c680310375156911c07b1819f0b9d124514ec2c3750cb2e39926a28a4636ab7ecdcdd9d6a960d16c864dd585645d87f145c5b315381f356656d617fe97d +f31e8b4f9e0621d531d22a380be5d9abd56faec53cbd39b1fab230ea67184440e5b1d15457bd25f56204fa917fa48e669016cb48c1ffc1e1e45274b3b47379e00a43843cf8601a5551411ec12503e5aac43d8676a1b2297ec7a0800dbfee04292e937f21c005f17411473041,410dbaa5e3453f2dafce135dc014f28fbf693c84eb7d4becb80a3db32e16e89062b3ff59c1dfdfab32d84d20284632a2ac7f8f88d4b7023f879463ba18ff6553 +758ea3fea738973db0b8be7e599bbef4519373d6e6dcd7195ea885fc991d896762992759c2a09002912fb08e0cb5b76f49162aeb8cf87b172cf3ad190253df612f77b1f0c532e3b5fc99c2d31f8f65011695a087a35ee4eee5e334c369d8ee5d29f695815d866da99df3f79403,f93a099159c39617b75b188d527fc4db287cbb4fdddba5ad4dcb4cffc4dc59762bbc41a58d3a788eae152aea024bc4cc4f29fc7b8ab68065a68650a04b51818a +47c6e0c2b74948465921868804f0f7bd50dd323583dc784f998a93cd1ca4c6ef84d41dc81c2c40f34b5bee6a93867b3bdba0052c5f59e6f3657918c382e771d33109122cc8bb0e1e53c4e3d13b43ce44970f5e0c079d2ad7d7a3549cd75760c21bb15b447589e86e8d76b1e9ced2,05e69984ee99aa2bc851083aa44ee56feef86c45888867cdcdd0c7a8049080ae7858b93c19953a881be5c036bd8fe83628c2e3aa9939a288b4ac4bc2876c2fbc +f690a132ab46b28edfa6479283d6444e371c6459108afd9c35dbd235e0b6b6ff4c4ea58e7554bd002460433b2164ca51e868f7947d7d7a0d792e4abf0be5f450853cc40d85485b2b8857ea31b5ea6e4ccfa2f3a7ef3380066d7d8979fdac618aad3d7e886dea4f005ae4ad05e5065f,be22f3e253c2563c3353e693d2d5a65dc6bac2cbcda8e43e8584f9d851e602d4374936403fd688f0135e363de8099f249dd21c61695c109c27ed5f4f4c1808bf +58d6a99bc6458824b256916770a8417040721cccfd4b79eacd8b65a3767ce5ba7e74104c985ac56b8cc9aebd16febd4cda5adb130b0ff2329cc8d611eb14dac268a2f9e633c99de33997fea41c52a7c5e1317d5b5daed35eba7d5a60e45d1fa7eaabc35f5c2b0a0f2379231953322c4e,1d1836c4e2c3eb27a74a9cd600c064391bd9edd45464a5795182c8794748ba51a345c6fae2b91f5758401e4f427d50b6882b1df0977976c2c9432c1a9b3ae03f +befab574396d7f8b6705e2d5b58b2c1c820bb24e3f4bae3e8fbcd36dbf734ee14e5d6ab972aedd3540235466e825850ee4c512ea9795abfd33f330d9fd7f79e62bbb63a6ea85de15beaeea6f8d204a28956059e2632d11861dfb0e65bc07ac8a159388d5c3277e227286f65ff5e5b5aec1,cb0d33c173c765bba3714d56a4cf48fd6320ab8c5317e7ab1a46472afb756232cd27f51473dcf9bd7dac1aa7f669353fd8f3d27d17d3fe3eb3386876eca38a85 +8e58144fa9179d686478622ce450c748260c95d1ba43b8f9b59abeca8d93488da73463ef40198b4d16fb0b0707201347e0506ff19d01bea0f42b8af9e71a1f1bd168781069d4d338fdef00bf419fbb003031df671f4a37979564f69282de9c65407847dd0da505ab1641c02dea4f0d834986,b579ad0c750b91e0671bb7f0482a519835d155ae1a4db92112e66fbd158835e0c29e2f122a8c54c530f92633f6ec7b222ca3ced45b4b5a24426d99c59c1b6609 +b55c10eae0ec684c16d13463f29291bf26c82e2fa0422a99c71db4af14dd9c7f33eda52fd73d017cc0f2dbe734d831f0d820d06d5f89dacc485739144f8cfd4799223b1aff9031a105cb6a029ba71e6e5867d85a554991c38df3c9ef8c1e1e9a7630be61caabca69280c399c1fb7a12d12aefc,689c878d8a44c79eaf0579dc96c0e7fe7d33491f59a6058bee60e14b8006bdf6a6070b2b6d3bb6d7c31ccae09ec403df49dd12ba72c8532a8e476b4b415d8369 +2eeea693f585f4ed6f6f8865bbae47a6908aecd7c429e4bec4f0de1d0ca0183fa201a0cb14a529b7d7ac0e6ff6607a3243ee9fb11bcf3e2304fe75ffcddd6c5c2e2a4cd45f63c962d010645058d36571404a6d2b4f44755434d76998e83409c3205aa1615db44057db991231d2cb42624574f545,4e4dc49e414c794a4b6d8d2093feab46d91321cfd089b1fd8cb5154f3e342645f6233a9216db04f080e5af8b156e782ad16e0b15d814173e78fcf5e7cf8ea51f +dab11dc0b047db0420a585f56c42d93175562852428499f66a0db811fcdddab2f7cdffed1543e5fb72110b64686bc7b6887a538ad44c050f1e42631bc4ec8a9f2a047163d822a38989ee4aab01b4c1f161b062d873b1cfa388fd301514f62224157b9bef423c7783b7aac8d30d65cd1bba8d689c2d,2c8f456f9091517cafa9df1d09ee621edfeb2c00dab944355d592dfda128f837228578e3965d3767959d3cdde4e7b67e02241f28c5417e33ea74e39032f938ea +42e99a2f80aee0e001279a2434f731e01d34a44b1a8101726921c0590c30f3120eb83059f325e894a5ac959dca71ce2214799916424e859d27d789437b9d27240bf8c35adbafcecc322b48aa205b293962d858652abacbd588bcf6cbc388d0993bd622f96ed54614c25b6a9aa527589eaaffcf17ddf7,3ae18402ad4123af1ad868450591c46f66431d422a29d932df94af9ab3e256f806575b3eb0d24edc7531725e0336847b2e571ae667b619a9d79a3e168948af5d +3c9b46450c0f2cae8e3823f8bdb4277f31b744ce2eb17054bddc6dff36af7f49fb8a2320cc3bdf8e0a2ea29ad3a55de1165d219adeddb5175253e2d1489e9b6fdd02e2c3d3a4b54d60e3a47334c37913c5695378a669e9b72dec32af5434f93f46176ebf044c4784467c700470d0c0b40c8a088c815816,6f3e1294b67d875165fd09dd493dd55924e9e28e53afa2da80916d7d54e19c1705121d617e53f56eba4767d6435e986feeaeb965ec4956fd3c02de1288fbc661 +d1e654b77cb155f5c77971a64df9e5d34c26a3cad6c7f6b300d39deb1910094691adaa095be4ba5d86690a976428635d5526f3e946f7dc3bd4dbc78999e653441187a81f9adcd5a3c5f254bc8256b0158f54673dcc1232f6e918ebfc6c51ce67eaeb042d9f57eec4bfe910e169af78b3de48d137df4f2840,aa3398bc7daeb4f22ca6d1937b0c6097a49adb6dbc03fc0f5226a644f217296bf55747269b861fc7b22bc5956ce3d8da28e9f25d8c9599bc653cd0ee0c852473 +626f68c18a69a6590159a9c46be03d5965698f2dac3de779b878b3d9c421e0f21b955a16c715c1ec1e22ce3eb645b8b4f263f60660ea3028981eebd6c8c3a367285b691c8ee56944a7cd1217997e1d9c21620b536bdbd5de8925ff71dec6fbc06624ab6b21e329813de90d1e572dfb89a18120c3f606355d25,8bcbbe36dbe305fbb558ea46721d25de7aab7898e583e8bdf26701224387c524c683475c242c7de090608a4f17663d217276f94f4188b942a03039b5e38d6ae3 +651a6fb3c4b80c7c68c6011675e6094eb56abf5fc3057324ebc6477825061f9f27e7a94633abd1fa598a746e4a577caf524c52ec1788471f92b8c37f23795ca19d559d446cab16cbcdce90b79fa1026cee77bf4ab1b503c5b94c2256ad75b3eac6fd5dcb96aca4b03a834bfb4e9af988cecbf2ae597cb9097940,4782dfcab650e7a8dae9a010cb002dd0373bfbd31247fa9860876d7fffd2d57c355f2054cb2efeb45c5871f284f46b025798344a3719efab34d15152dd0bbc6c +8aaf072fce8a2d96bc10b3c91c809ee93072fb205ca7f10abd82ecd82cf040b1bc49ea13d1857815c0e99781de3adbb5443ce1c897e55188ceaf221aa9681638de05ae1b322938f46bce51543b57ecdb4c266272259d1798de13be90e10efec2d07484d9b21a3870e2aa9e06c21aa2d0c9cf420080a80a91dee16f,a4d538e449e2b3ebf9aafc88d29e514ba0d2c8de2706f3f6fa5a2c4f95f5db5bab59c1a69c16e4859a19730abb2e6bf06152445eda80e3be5ce652023ea57e5e +53f918fd00b1701bd504f8cdea803acca21ac18c564ab90c2a17da592c7d69688f6580575395551e8cd33e0fef08ca6ed4588d4d140b3e44c032355df1c531564d7f4835753344345a6781e11cd5e095b73df5f82c8ae3ad00877936896671e947cc52e2b29dcd463d90a0c9929128da222b5a211450bbc0e02448e2,8732d243f1b3349f900df430659b9ab9ed99f626ad35cb2084b57d60e5a5b47213ad213859cd40964c5a267c236d0e38167525f778e67e37d4f623a8884128ed +a64599b8a61b5ccec9e67aed69447459c8da3d1ec6c7c7c82a7428b9b584fa67e90f68e2c00fbbed4613666e5168da4a16f395f7a3c3832b3b134bfc9cbaa95d2a0fe252f44ac6681eb6d40ab91c1d0282fed6701c57463d3c5f2bb8c6a7301fb4576aa3b5f15510db8956ff77478c26a7c09bea7b398cfc83503f538e,97dc2606e14f7bfff1fca497965e36caa3a81cfd6459d0254529f64da40ffe7442c08a151d6cee3b46bf3414e80110a0f71eee44d7940027dee90e919e498d65 +0e3ab0e054739b00cdb6a87bd12cae024b54cb5e550e6c425360c2e87e59401f5ec24ef0314855f0f56c47695d56a7fb1417693af2a1ed5291f2fee95f75eed54a1b1c2e81226fbff6f63ade584911c71967a8eb70933bc3f5d15bc91b5c2644d9516d3c3a8c154ee48e118bd1442c043c7a0dba5ac5b1d5360aae5b9065,de5978eace4e51f7d289f2befbecb3aac8e9cad48fa0f7310c673d52bbcaeebde49cb5a76d334d6dfdd51ac1ab24e9e1cdc915069dbddb3d2e30b0b0c26b3ee1 +a62fc595b4096e6336e53fcdfc8d1cc175d71dac9d750a6133d23199eaac288207944cea6b16d27631915b4619f743da2e30a0c00bbdb1bbb35ab852ef3b9aec6b0a8dcc6e9e1abaa3ad62ac0a6c5de765de2c3711b769e3fde44a74016fff82ac46fa8f1797d3b2a726b696e3dea5530439acee3a45c2a51bc32dd055650b,33abca29a8a7094cfb10be4a80e81f8001ebb933c0d4b98a695b22ab553f94f07646abce6adf491817d17b78c40747d56faf88a613138ca0e596636c672397b4 +2b6db7ced8665ebe9deb080295218426bdaa7c6da9add2088932cdffbaa1c14129bccdd70f369efb149285858d2b1d155d14de2fdb680a8b027284055182a0cae275234cc9c92863c1b4ab66f304cf0621cd54565f5bff461d3b461bd40df28198e3732501b4860eadd503d26d6e69338f4e0456e9e9baf3d827ae685fb1d817,4fab45806b4628068458b5d0a2d4bf101b8bfc9276ef86ad5d883765c43f72ce8a5f7b4c5b535a915130bb185e699ab62228014e54df790c0e93aadbe7e39e19 +10db509b2cdcaba6c062ae33be48116a29eb18e390e1bbada5ca0a2718afbcd23431440106594893043cc7f2625281bf7de2655880966a23705f0c5155c2f5cca9f2c2142e96d0a2e763b70686cd421b5db812daced0c6d65035fde558e94f26b3e6dde5bd13980cc80292b723013bd033284584bff27657871b0cf07a849f4ae2,5f0bfb4146910cf0c320364b6ad8a02b0966229ab2676d9670f0dd241e8104db02797eefea0b9cabbe90a44757b033755925b2fccf3a00054f9ae8fbcef752a8 +9334de60c997bda6086101a6314f64e4458f5ff9450c509df006e8c547983c651ca97879175aaba0c539e82d05c1e02c480975cbb30118121061b1ebac4f8d9a3781e2db6b18042e01ecf9017a64a0e57447ec7fcbe6a7f82585f7403ee2223d52d37b4bf426428613d6b4257980972a0acab508a7620c1cb28eb4e9d30fc41361ec,d38ef3b12eaa0bf62a75b6b63cff3c9ef171de1b75f5d02629365bcfe65ba7ddd30fcef7febb82f19f9bedcc1cc4c679b4292ea62c2a90a7562da9a1318fe278 +e88ab086891693aa535ceb20e64c7ab97c7dd3548f3786339897a5f0c39031549ca870166e477743ccfbe016b4428d89738e426f5ffe81626137f17aecff61b72dbee2dc20961880cfe281dfab5ee38b1921881450e16032de5e4d55ad8d4fca609721b0692bac79be5a06e177fe8c80c0c83519fb3347de9f43d5561cb8107b9b5edc,60c95c274f99b8643a186344bc01d1279010be55d1be76f4e6f919f6b54d335ee0e1ca92133f3d7a2520cd82c4000e15efed8d8a66f31b16b0977c63de1beb05 +fd19e01a83eb6ec810b94582cb8fbfa2fcb992b53684fb748d2264f020d3b960cb1d6b8c348c2b54a9fcea72330c2aaa9a24ecdb00c436abc702361a82bb8828b85369b8c72ece0082fe06557163899c2a0efa466c33c04343a839417057399a63a3929be1ee4805d6ce3e5d0d0967fe9004696a5663f4cac9179006a2ceb75542d75d68,9385d0ed9e73498e24b8c6e746a1c6be8011ee30fcac9ba17224ee2012378522c78f8737a224621fba19c42040c5c7f38ac07b40e0e75ebc59d17975ee85d655 +59ae20b6f7e0b3c7a989afb28324a40fca25d8651cf1f46ae383ef6d8441587aa1c04c3e3bf88e8131ce6145cfb8973d961e8432b202fa5af3e09d625faad825bc19da9b5c6c20d02abda2fcc58b5bd3fe507bf201263f30543819510c12bc23e2ddb4f711d087a86edb1b355313363a2de996b891025e147036087401ccf3ca7815bf3c49,7487164d408874afdf07ebdade8c62e756147beab3238b8738aeed927f54fe6d33af3917d4e181b50cbc88a379c73585f9fba4c1b67b4be449004ea0f66d11ad +77ee804b9f3295ab2362798b72b0a1b2d3291dceb8139896355830f34b3b328561531f8079b79a6e9980705150866402fdc176c05897e359a6cb1a7ab067383eb497182a7e5aef7038e4c96d133b2782917417e391535b5e1b51f47d8ed7e4d4025fe98dc87b9c1622614bff3d1029e68e372de719803857ca52067cddaad958951cb2068cc6,0f41ab2d10c51e28638dad178655f160b2f753db44eed6ce4104693cc4a938d887617774afecb33b890ee7fc577656ce168eea42c604d152b952c9b772c9b530 +b771d5cef5d1a41a93d15643d7181d2a2ef0a8e84d91812f20ed21f147bef732bf3a60ef4067c3734b85bc8cd471780f10dc9e8291b58339a677b960218f71e793f2797aea349406512829065d37bb55ea796fa4f56fd8896b49b2cd19b43215ad967c712b24e5032d065232e02c127409d2ed4146b9d75d763d52db98d949d3b0fed6a8052fbb,7575a1fb4fc9a8f9c0466bd5fca496d1cb78696773a212a5f62d02d14e3259d192a87eba4407dd83893527331407b6dadaad920dbc46489b677493ce5f20b595 +b32d95b0b9aad2a8816de6d06d1f86008505bd8c14124f6e9a163b5a2ade55f835d0ec3880ef50700d3b25e42cc0af050ccd1be5e555b23087e04d7bf9813622780c7313a1954f8740b6ee2d3f71f768dd417f520482bd3a08d4f222b4ee9dbd015447b33507dd50f3ab4247c5de9a8abd62a8decea01e3b87c8b927f5b08beb37674c6f8e380c04,2e293765022d48996ce8eff0be54e87efb94a14c72de5acd10d0eb5ece029cadfa3ba17a40b2ffa2163991b17786e51caba79e5e0ffd34cf085e2a098be8bacb +04410e31082a47584b406f051398a6abe74e4da59bb6f85e6b49e8a1f7f2ca00dfba5462c2cd2bfde8b64fb21d70c083f11318b56a52d03b81cac5eec29eb31bd0078b6156786da3d6d8c33098c5c47bb67ac64db14165af65b44544d806dde5f487d5373c7f9792c299e9686b7e5821e7c8e2458315b996b5677d926dac57b3f22da873c601016a0d,be8e14b6757ffe53c9b75f6dde9a7b6c40474041de83d4a60645a826d7af1abe1eefcb7b74b62ca6a514e5f2697d585bfecece12931bbe1d4ed7ebf7b0be660e +8b81e9badde026f14d95c019977024c9e13db7a5cd21f9e9fc491d716164bbacdc7060d882615d411438aea056c340cdf977788f6e17d118de55026855f93270472d1fd18b9e7e812bae107e0dfde7063301b71f6cfe4e225cab3b232905a56e994f08ee2891ba922d49c3dafeb75f7c69750cb67d822c96176c46bd8a29f1701373fb09a1a6e3c7158f,6c7e64ee0d826073d4f44bcf1586a83bacf3e2e138dfdb65b8b8b35fd7dae300ea6e32c6245cca27c674feb2196755945ab7c5dce99eab9158a75518ac27c431 +fa6eed24da6666a22208146b19a532c2ec9ba94f09f1def1e7fc13c399a48e41acc2a589d099276296348f396253b57cb0e40291bd282773656b6e0d8bea1cda084a3738816a840485fcf3fb307f777fa5feac48695c2af4769720258c77943fb4556c362d9cba8bf103aeb9034baa8ea8bfb9c4f8e6742ce0d52c49ea8e974f339612e830e9e7a9c29065,5842d4da2c309d9b2aa7cfae702262f770a8e646620d65c17271416e9d7981ff93d228cd60dc1cc16921020d841e439e87f085e503d466c904abf8cdd5eccaa9 +9bb4af1b4f09c071ce3cafa92e4eb73ce8a6f5d82a85733440368dee4eb1cbc7b55ac150773b6fe47dbe036c45582ed67e23f4c74585dab509df1b83610564545642b2b1ec463e18048fc23477c6b2aa035594ecd33791af6af4cbc2a1166aba8d628c57e707f0b0e8707caf91cd44bdb915e0296e0190d56d33d8dde10b5b60377838973c1d943c22ed335e,f8b24527b5c84ca9a702db2f535f78ed0323c2932a255db24f872551ca7f5c0482b3690c62eec8ad69308db2d72308c4d615cde3835b39b4f6ff115466f32763 +2167f02118cc62043e9091a647cadbed95611a521fe0d64e8518f16c808ab297725598ae296880a773607a798f7c3cfce80d251ebec6885015f9abf7eaabae46798f82cb5926de5c23f44a3f9f9534b3c6f405b5364c2f8a8bdc5ca49c749bed8ce4ba48897062ae8424ca6dde5f55c0e42a95d1e292ca54fb46a84fbc9cd87f2d0c9e7448de3043ae22fdd229,08c6e3938de48171a99646bd090b7d53ff422ae63f99850032bd131ac7bdfba8f83466ad31fad3169d8a320fd9548bdff2c40ba20e0d031a8054019c40ed2662 +94b7fa0bc1c44e949b1d7617d31b4720cbe7ca57c6fa4f4094d4761567e389ecc64f6968e4064df70df836a47d0c713336b5028b35930d29eb7a7f9a5af9ad5cf441745baec9bb014ceeff5a41ba5c1ce085feb980bab9cf79f2158e03ef7e63e29c38d7816a84d4f71e0f548b7fc316085ae38a060ff9b8dec36f91ad9ebc0a5b6c338cbb8f6659d342a24368cf,6978ad4bc4f0fc44c35c6691ca46627d840baa572de9b0216673c988197191cdf812cf21920e052cc9ce1d507d1ba7db6f151d01620ada702dc637bf90809c19 +ea40e83cb18b3a242c1ecc6ccd0b7853a439dab2c569cfc6dc38a19f5c90acbf76aef9ea3742ff3b54ef7d36eb7ce4ff1c9ab3bc119cff6be93c03e208783335c0ab8137be5b10cdc66ff3f89a1bddc6a1eed74f504cbe7290690bb295a872b9e3fe2cee9e6c67c41db8efd7d863cf10f840fe618e7936da3dca5ca6df933f24f6954ba0801a1294cd8d7e66dfafec,3a8e938c45f3f177991296b24565d9a6605516615d96a062c8be53a0d6c5a6487be35d2a8f3cf6620d0c2dba2c560d68295f284be7f82f3b92919033c9ce5d80 +157d5b7e4507f66d9a267476d33831e7bb768d4d04cc3438da12f9010263ea5fcafbde2579db2f6b58f911d593d5f79fb05fe3596e3fa80ff2f761d1b0e57080055c118c53e53cdb63055261d7c9b2b39bd90acc32520cbbdbda2c4fd8856dbcee173132a2679198daf83007a9b5c51511ae49766c792a29520388444ebefe28256fb33d4260439cba73a9479ee00c63,fe45289874879720ce2a844ae34bb73522775dcb6019dcd22b8885994672a0889c69e8115c641dc8b83e39f7311815a164dc46e0ba2fca344d86d4bc2ef2532c +836b34b515476f613fe447a4e0c3f3b8f20910ac89a3977055c960d2d5d2b72bd8acc715a9035321b86703a411dde0466d58a59769672aa60ad587b8481de4bba552a1645779789501ec53d540b904821f32b0bd1855b04e4848f9f8cfe9ebd8911be95781a759d7ad9724a7102dbe576776b7c632bc39b9b5e19057e226552a5994c1dbb3b5c7871a11f5537011044c53,aff61c6e11b98e55ac213b1a0bc7de0405221ac5efb1229842e4614f4a029c9bd14a0ed7fd99af3681429f3f309fdb53166aa9a3cd9f1f1223d04b4a9015e94a +cc7784a4912a7ab5ad3620aab29ba87077cd3cb83636adc9f3dc94f51edf521b2161ef108f21a0a298557981c0e53ce6ced45bdf782c1ef200d29bab81dd6460586964edab7cebdbbec75fd7925060f7da2b853b2b089588fa0f8c16ec6498b14c55dcee335cb3a91d698e4d393ab8e8eac0825f8adebeee196df41205c011674e53426caa453f8de1cbb57932b0b741d4c6,26410e1a0d1e3659438dddb2953eb3aa082ceb02a327fa0098574d89f9236f5dff9c17def37f6ce4b5dc1ee5f23f578fe191ee8b51f1b8034bcbbbb7b6a500a5 +7639b461fff270b2455ac1d1afce782944aea5e9087eb4a39eb96bb5c3baaf0e868c8526d3404f9405e79e77bfac5ffb89bf1957b523e17d341d7323c302ea7083872dd5e8705694acdda36d5a1b895aaa16eca6104c82688532c8bfe1790b5dc9f4ec5fe95baed37e1d287be710431f1e5e8ee105bc42ed37d74b1e55984bf1c09fe6a1fa13ef3b96faeaed6a2a1950a12153,5015da2a2e1661d3a52a65d19f02933029839f72717a77b5045198665093f944cff85e094d418396a51c574157eed9fb6bdd4eca53278fab62af699b53c82f58 +eb6513fc61b30cfba58d4d7e80f94d14589090cf1d80b1df2e68088dc6104959ba0d583d585e9578ab0aec0cf36c48435eb52ed9ab4bbce7a5abe679c97ae2dbe35e8cc1d45b06dda3cf418665c57cbee4bbb47fa4caf78f4ee656fec237fe4eebbafa206e1ef2bd0ee4ae71bd0e9b2f54f91daadf1febfd7032381d636b733dcb3bf76fb14e23aff1f68ed3dbcf75c9b99c6f26,b27828cfebcf4d896eabf1f84d079827b7dcc7f308a20476474de518829a89aac3dc50272cfa976b0b5819c45c9eefc51b87a27d11c9e5f9579121125a887542 +1594d74bf5dde444265d4c04dad9721ff3e34cbf622daf341fe16b96431f6c4df1f760d34f296eb97d98d560ad5286fec4dce1724f20b54fd7df51d4bf137add656c80546fb1bf516d62ee82baa992910ef4cc18b70f3f8698276fcfb44e0ec546c2c39cfd8ee91034ff9303058b4252462f86c823eb15bf481e6b79cc3a02218595b3658e8b37382bd5048eaed5fd02c37944e73b,42fc06dcf99b4e804bb349101b46d6a6a7366e47555406ea554248baef52e17afa40829f5709d07ff407881df106f156ca735622b0f051d8c372f6e811cdae25 +4cfa1278903026f66fedd41374558be1b585d03c5c55dac94361df286d4bd39c7cb8037ed3b267b07c346626449d0cc5b0dd2cf221f7e4c3449a4be99985d2d5e67bff2923357ddeab5abcb4619f3a3a57b2cf928a022eb27676c6cf805689004fca4d41ea6c2d0a4789c7605f7bb838dd883b3ad3e6027e775bcf262881428099c7fff95b14c095ea130e0b9938a5e22fc52650f591,0ca89c9b7273de384ff33f1bacbb8505628c4d3e30350b335361563ad416ada523122d37acbec57721f7bc5d9b049e1f4fe3c4cfe047e33a0e448ef5d5536cf0 +d3e65cb92cfa79662f6af493d696a07ccf32aaadcceff06e73e8d9f6f909209e66715d6e978788c49efb9087b170ecf3aa86d2d4d1a065ae0efc8924f365d676b3cb9e2bec918fd96d0b43dee83727c9a93bf56ca2b2e59adba85696546a815067fc7a78039629d4948d157e7b0d826d1bf8e81237bab7321312fdaa4d521744f988db6fdf04549d0fdca393d639c729af716e9c8bba48,78c59a8cdf4d1d07a66bb2faa7ffa2112d5c0fcabf7e3589e97623bdb922af9af24918c2ccfce2b880bf64145c70dc9a4fde78fdf0918dd2ce5fea9cf99acd41 +842cc583504539622d7f71e7e31863a2b885c56a0ba62db4c2a3f2fd12e79660dc7205ca29a0dc0a87db4dc62ee47a41db36b9ddb3293b9ac4baae7df5c6e7201e17f717ab56e12cad476be49608ad2d50309e7d48d2d8de4fa58ac3cfeafeee48c0a9eec88498e3efc51f54d300d828dddccb9d0b06dd021a29cf5cb5b2506915beb8a11998b8b886e0f9b7a80e97d91a7d01270f9a7717,cf4d52d20272de014d367310775287ee5e5cb34cf9af78e65d1d1fe7fb1f13b62dd9b83c382baa6ab4f6949478c8598fef78e8d535311fc19808cb75e22daded +6c4b0a0719573e57248661e98febe326571f9a1ca813d3638531ae28b4860f23c3a3a8ac1c250034a660e2d71e16d3acc4bf9ce215c6f15b1c0fc7e77d3d27157e66da9ceec9258f8f2bf9e02b4ac93793dd6e29e307ede3695a0df63cbdc0fc66fb770813eb149ca2a916911bee4902c47c7802e69e405fe3c04ceb5522792a5503fa829f707272226621f7c488a7698c0d69aa561be9f378,33d632e403c9f9a9349b28aa4821a12b1db557d8928003d30c57d701cff1c49bac9472cecff450e4d91d36c6cd78221790eff6f0fbf498034014cbbace5dcf09 +51b7dbb7ce2ffeb427a91ccfe5218fd40f9e0b7e24756d4c47cd55606008bdc27d16400933906fd9f30effdd4880022d081155342af3fb6cd53672ab7fb5b3a3bcbe47be1fd3a2278cae8a5fd61c1433f7d350675dd21803746cadca574130f01200024c6340ab0cc2cf74f2234669f34e9009ef2eb94823d62b31407f4ba46f1a1eec41641e84d77727b59e746b8a671bef936f05be820759fa,954c709abcb0bb881592d93f5c2463ce8c060ad1df3053302ea7b19f2b47bcf0fe359a832f9a865a8d3dbd3be598dfd6d0fc1c574eca0aec78d8e3288399be05 +83599d93f5561e821bd01a472386bc2ff4efbd4aed60d5821e84aae74d8071029810f5e286f8f17651cd27da07b1eb4382f754cd1c95268783ad09220f5502840370d494beb17124220f6afce91ec8a0f55231f9652433e5ce3489b727716cf4aeba7dcda20cd29aa9a859201253f948dd94395aba9e3852bd1d60dda7ae5dc045b283da006e1cbad83cc13292a315db5553305c628dd091146597,a337062f5e5c9c35341a51224f2a59e6cf919a63bf59a6cfce261194bbd660f28c2948d03cdce5c7c151ec05b42aadd83051a16a62f0c7df39aaa4efc82ce4d3 +2be9bf526c9d5a75d565dd11ef63b979d068659c7f026c08bea4af161d85a462d80e45040e91f4165c074c43ac661380311a8cbed59cc8e4c4518e80cd2c78ab1cabf66bff83eab3a80148550307310950d034a6286c93a1ece8929e6385c5e3bb6ea8a7c0fb6d6332e320e71cc4eb462a2a62e2bfe08f0ccad93e61bedb5dd0b786a728ab666f07e0576d189c92bf9fb20dca49ac2d3956d47385e2,43e9d0ea8e526e83234d7b63d8244c7e7b12ae2acc8082f986367268f10156574300172873845b207a7252624246e7d32ce0f7282e00c4552f6180f34e590e2e +ca76d3a12595a817682617006848675547d3e8f50c2210f9af906c0e7ce50b4460186fe70457a9e879e79fd4d1a688c70a347361c847ba0dd6aa52936eaf8e58a1be2f5c1c704e20146d366aeb3853bed9de9befe9569ac8aaea37a9fb7139a1a1a7d5c748605a8defb297869ebedd71d615a5da23496d11e11abbb126b206fa0a7797ee7de117986012d0362dcef775c2fe145ada6bda1ccb326bf644,f7da8d1e49d0d964400ee40f9c88e07025a8b0b00cadc624a63e2ea85b1598e22c8802be0c1ff368519549a752e02546093d3b984e24600ba2ab7c792b9e074a +f76b85dc67421025d64e93096d1d712b7baf7fb001716f02d33b2160c2c882c310ef13a576b1c2d30ef8f78ef8d2f465007109aad93f74cb9e7d7bef7c9590e8af3b267c89c15db238138c45833c98cc4a471a7802723ef4c744a853cf80a0c2568dd4ed58a2c9644806f42104cee53628e5bdf7b63b0b338e931e31b87c24b146c6d040605567ceef5960df9e022cb469d4c787f4cba3c544a1ac91f95f,d9a42761f980c78c36cf54c4207b0a62954e15a907a7cea149b37a4e0a6376202ff8f12e16ebad3aecc7ff3a9d6ad093b068dfe272e3b9646b1aedc04961dc81 +25b8c9c032ea6bcd733ffc8718fbb2a503a4ea8f71dea1176189f694304f0ff68e862a8197b839957549ef243a5279fc2646bd4c009b6d1edebf24738197abb4c992f6b1dc9ba891f570879accd5a6b18691a93c7d0a8d38f95b639c1daeb48c4c2f15ccf5b9d508f8333c32de78781b41850f261b855c4bebcc125a380c54d501c5d3bd07e6b52102116088e53d76583b0161e2a58d0778f091206aabd5a1,bb65d8943413cef89fdb05b35a55ec7503e4546a50fc3ecc825dabc1a1dae6c771bb197f323625877e0bccaa41253c99b6692976b99fc687b0b6b3e9aab478c4 +21cfdc2a7ccb7f331b3d2eefff37e48ad9fa9c788c3f3c200e0173d99963e1cbca93623b264e920394ae48bb4c3a5bb96ffbc8f0e53f30e22956adabc2765f57fb761e147ecbf8567533db6e50c8a1f894310a94edf806dd8ca6a0e141c0fa7c9fae6c6ae65f18c93a8529e6e5b553bf55f25be2e80a9882bd37f145fecbeb3d447a3c4e46c21524cc55cdd62f521ab92a8ba72b897996c49bb273198b7b1c9e,540df22180b69b9a83306619b2ca8cd8e07a34bbeb2219ac7cf88b468a947c4448489b303bd65506c9e1ce59348a9d863aab5154848e95b5389783f6f5fb6ad8 +4e452ba42127dcc956ef4f8f35dd68cb225fb73b5bc7e1ec5a898bba2931563e74faff3b67314f241ec49f4a7061e3bd0213ae826bab380f1f14faab8b0efddd5fd1bb49373853a08f30553d5a55ccbbb8153de4704f29ca2bdeef0419468e05dd51557ccc80c0a96190bbcc4d77ecff21c66bdf486459d427f986410f883a80a5bcc32c20f0478bb9a97a126fc5f95451e40f292a4614930d054c851acd019ccf,062e4a11a79fdb9cbc3a0e4c5f9875caaa568bc713066e02d2a9ca4d27886ce23f70083a2bf4d0e7c55b120fe6d197203dc1c2fd3469112a08836727859e1f83 +fa85671df7dadf99a6ffee97a3ab9991671f5629195049880497487867a6c446b60087fac9a0f2fcc8e3b24e97e42345b93b5f7d3691829d3f8ccd4bb36411b85fc2328eb0c51cb3151f70860ad3246ce0623a8dc8b3c49f958f8690f8e3860e71eb2b1479a5cea0b3f8befd87acaf5362435eaeccb52f38617bc6c5c2c6e269ead1fbd69e941d4ad2012da2c5b21bcfbf98e4a77ab2af1f3fda3233f046d38f1dc8,9e1c6ee0c47b2d2cb77f602cab53ac4c69c69778297894554196cb58060332c9fd8923f45c4b8ec26e16a5d04e6307fb99850a4540ea83e3f2626f3343e97225 +e90847ae6797fbc0b6b36d6e588c0a743d725788ca50b6d792352ea8294f5ba654a15366b8e1b288d84f5178240827975a763bc45c7b0430e8a559df4488505e009c63da994f1403f407958203cebb6e37d89c94a5eacf6039a327f6c4dbbc7a2a307d976aa39e41af6537243fc218dfa6ab4dd817b6a397df5ca69107a9198799ed248641b63b42cb4c29bfdd7975ac96edfc274ac562d0474c60347a078ce4c25e88,f18f0b072a6bf608a6c7420e891be3795a6d19ba3e1276c826f1ae775cf125e428ae1a397cfd074be0cd24f7100f51800f14471ccf4f485a6571e2b32e02611f +f6d5c2b6c93954fc627602c00c4ca9a7d3ed12b27173f0b2c9b0e4a5939398a665e67e69d0b12fb7e4ceb253e8083d1ceb724ac07f009f094e42f2d6f2129489e846eaff0700a8d4453ef453a3eddc18f408c77a83275617fabc4ea3a2833aa73406c0e966276079d38e8e38539a70e194cc5513aaa457c699383fd1900b1e72bdfb835d1fd321b37ba80549b078a49ea08152869a918ca57f5b54ed71e4fd3ac5c06729,2859a3165f38cb59de4275658bbae9a0ad647d972cf98fa0eec4c07ee75d576dbf9f5dd19a881db4e4f7db31ec0d77165911329cbe8a46d14d3ea7fdcb8a5c80 +cf8562b1bed89892d67ddaaf3deeb28246456e972326dbcdb5cf3fb289aca01e68da5d59896e3a6165358b071b304d6ab3d018944be5049d5e0e2bb819acf67a6006111089e6767132d72dd85beddcbb2d64496db0cc92955ab4c6234f1eea24f2d51483f2e209e4589bf9519fac51b4d061e801125e605f8093bb6997bc163d551596fe4ab7cfae8fb9a90f6980480ce0c229fd1675409bd788354daf316240cfe0af93eb,9281bd03fe95545e5321a91a0ad8fa75a005b928c83450df657419870c4e980e32484fcf1f598702ed20404fece48a2ee9dbcf22120654ae402951605bed197e +2ace31abb0a2e3267944d2f75e1559985db7354c6e605f18dc8470423fca30b7331d9b33c4a4326783d1caae1b4f07060eff978e4746bf0c7e30cd61040bd5ec2746b29863eb7f103ebda614c4291a805b6a4c8214230564a0557bc7102e0bd3ed23719252f7435d64d210ee2aafc585be903fa41e1968c50fd5d5367926df7a05e3a42cf07e656ff92de73b036cf8b19898c0cb34557c0c12c2d8b84e91181af467bc75a9d1,6ca7023e20735624e83995a9e8aeba66b9bc8d0a30df67108eff8aedeb3b3ca484457bd0277c2552cbc7d63dc87eb556f2199c54ea73bae647764de18489b1f1 +0d8d09aed19f1013969ce5e7eb92f83a209ae76be31c754844ea9116ceb39a22ebb6003017bbcf26555fa6624185187db8f0cb3564b8b1c06bf685d47f3286eda20b83358f599d2044bbf0583fab8d78f854fe0a596183230c5ef8e54426750eaf2cc4e29d3bdd037e734d863c2bd9789b4c243096138f7672c232314effdfc6513427e2da76916b5248933be312eb5dde4cf70804fb258ac5fb82d58d08177ac6f4756017fff5,a965e699c1ffaee369b3651c3a318582ae329ae51e6ccfb5275f58f748cedb8f6b8434fac4a1135ad9b555aa8cc1ff99a2220cbe83bfc1c374ffc927bb00abd3 +c3236b73deb7662bf3f3daa58f137b358ba610560ef7455785a9befdb035a066e90704f929bd9689cef0ce3bda5acf4480bceb8d09d10b098ad8500d9b6071dfc3a14af6c77511d81e3aa8844986c3bea6f469f9e02194c92868cd5f51646256798ff0424954c1434bdfed9facb390b07d342e992936e0f88bfd0e884a0ddb679d0547ccdec6384285a45429d115ac7d235a717242021d1dc35641f5f0a48e8445dba58e6cb2c8ea,4b44ec2d1848d0ec43ab0793390d24535f3328ad23c5f8fc43f5579bd16d84bba08b233b0b5e24e22bf6ca2defeaca16bb98f8cdeaf26eecf2fc94afe4604cf4 +b39feb8283eadc63e8184b51df5ae3fd41aac8a963bb0be1cd08aa5867d8d910c669221e73243360646f6553d1ca05a84e8dc0de05b6419ec349ca994480193d01c92525f3fb3dcefb08afc6d26947bdbbfd85193f53b50609c6140905c53a6686b58e53a319a57b962331ede98149af3de3118a819da4d76706a0424b4e1d2910b0ed26af61d150ebcb46595d4266a0bd7f651ba47d0c7f179ca28545007d92e8419d48fdfbd744ce,73169f0be264565e45fb8f4665753e55f240846eb0d481cef0274e4a3d859521767d9f675c0628ddce155267ba686f2142805713f20c4c25e0b24398c65e3480 +a983d54f503803e8c7999f4edbbe82e9084f422143a932ddddc47a17b0b7564a7f37a99d0786e99476428d29e29d3c197a72bfab1342c12a0fc4787fd7017d7a6174049ea43b5779169ef7472bdbbd941dcb82fc73aac45a8a94c9f2bd3477f61fd3b796f02a1b8264a214c6fea74b7051b226c722099ec7883a462b83b6afdd4009248b8a237f605fe5a08fe7d8b45321421ebba67bd70a0b00ddbf94baab7f359d5d1eea105f28dcfb,9e1c196cb73d1efa288d63902c64ce1a340bcdb8197f4afecb1118dadd0d076b5fb7f6f809666cc58d2a8c1a68c65d0e91554c41d083f56d7b3dd37df1b6c494 +e4d1c1897a0a866ce564635b74222f9696bf2c7f640dd78d7e2aca66e1b61c642bb03ea7536aae597811e9bf4a7b453ede31f97b46a5f0ef51a071a2b3918df16b152519ae3776f9f1edab4c2a377c3292e96408359d3613844d5eb393000283d5ad3401a318b12fd1474b8612f2bb50fb6a8b9e023a54d7dde28c43d6d8854c8d9d1155935c199811dbfc87e9e0072e90eb88681cc7529714f8fb8a2c9d88567adfb974ee205a9bf7b848,0c429cc164253c09538668135c9436fdbc79da8e1fbe92e7bbc6eb30627591e7347ccb43f7aec2d37ff3dabcfc9fa0c80629937c0c177c1c7ed0fc76a15df075 +b10c59723e3dcadd6d75df87d0a1580e73133a9b7d00cb95ec19f5547027323be75158b11f80b6e142c6a78531886d9047b08e551e75e6261e79785366d7024bd7cd9cf322d9be7d57fb661069f2481c7bb759cd71b4b36ca2bc2df6d3a328faebdb995a9794a8d72155ed551a1f87c80bf6059b43fc764900b18a1c2441f7487743cf84e565f61f8dd2ece6b6ccc9444049197aaaf53e926fbee3bfca8be588ec77f29d211be89de18b15f6,700112fa90a1a2fd039a41b6485401634e757840e422aeb4a236634958192ffb2f2ddfa2253fc1ecb211c7e036098b714e62f7bf2b6975b1e95faa9b8d02a73a +db11f609baba7b0ca634926b1dd539c8cbada24967d7add4d9876f77c2d80c0f4dcefbd7121548373582705cca2495bd2a43716fe64ed26d059cfb566b3364bd49ee0717bdd9810dd14d8fad80dbbdc4cafb37cc60fb0fe2a80fb4541b8ca9d59dce457738a9d3d8f641af8c3fd6da162dc16fc01aac527a4a0255b4d231c0be50f44f0db0b713af03d968fe7f0f61ed0824c55c4b5265548febd6aad5c5eedf63efe793489c39b8fd29d104ce,901c6d85509f01a47ea2e2792a5db728ea39e5703eedeae41365edf10a866b922b1093e52e687e312db129da1f053ef6848cb0b314c9a3a999eb3e75e14c9cc2 +bebd4f1a84fc8b15e4452a54bd02d69e304b7f32616aadd90537937106ae4e28de9d8aab02d19bc3e2fde1d651559e296453e4dba94370a14dbbb2d1d4e2022302ee90e208321efcd8528ad89e46dc839ea9df618ea8394a6bff308e7726bae0c19bcd4be52da6258e2ef4e96aa21244429f49ef5cb486d7ff35cac1bacb7e95711944bccb2ab34700d42d1eb38b5d536b947348a458ede3dc6bd6ec547b1b0cae5b257be36a7124e1060c170ffa,4cc9a61ffe08984417712b80f962365af36ed66a8aab2a788d22a5c6b23962d23584638e712e9183c0a271383db0877f722d399116f9bef79a56ab096ef21749 +5aca56a03a13784bdc3289d9364f79e2a85c12276b49b92db0adaa4f206d5028f213f678c3510e111f9dc4c1c1f8b6acb17a6413aa227607c515c62a733817ba5e762cc6748e7e0d6872c984d723c9bb3b117eb8963185300a80bfa65cde495d70a46c44858605fccbed086c2b45cef963d33294dbe9706b13af22f1b7c4cd5a001cfec251fba18e722c6e1c4b1166918b4f6f48a98b64b3c07fc86a6b17a6d0480ab79d4e6415b520f1c484d675b1,b36ea56bb6bf80d91d5a605f8409ae6b7d879ec40815b35c664cc6b01bf6c718ad464f15c34dd1315a79a5456b6c3f8ed89e60390bc71ef747e12cdc77706245 +a5aad0e4646a32c85cfcac73f02fc5300f1982fabb2f2179e28303e447854094cdfc854310e5c0f60993ceff54d84d6b46323d930adb07c17599b35b505f09e784bca5985e0172257797fb53649e2e9723efd16865c31b5c3d5113b58bb0bfc8920fabdda086d7537e66d709d050bd14d0c960873f156fad5b3d3840cdfcdc9be6af519db262a27f40896ab25cc39f96984d650611c0d5a3080d5b3a1bf186abd42956588b3b58cd948970d298776060,8ecb8f622dab7087e9a95cd0341192fea6b1c956df9ad3ded823948b7849c4f3150c9559520953ebde98ed76f6e43bfe4fb25fda712525c6d3daa80323be8e4a +06cbbe67e94a978203ead6c057a1a5b098478b4b4cbef5a97e93c8e42f5572713575fc2a884531d7622f8f879387a859a80f10ef02708cd8f7413ab385afc357678b9578c0ebf641ef076a1a30f1f75379e9dcb2a885bdd295905ee80c0168a62a9597d10cf12dd2d8cee46645c7e5a141f6e0e23aa482abe5661c16e69ef1e28371e2e236c359ba4e92c25626a7b7ff13f6ea4ae906e1cfe163e91719b1f750a96cbde5fbc953d9e576cd216afc90323a,519215da34acfcd62dd617ecd5978365417d57c2671a7b48655b89f448b23b128d3ad04910a1bbbdc00e954a1e49765176a8aca4c37d56abf0e0b72e331a8d7c +f1c528cf7739874707d4d8ad5b98f7c77169de0b57188df233b2dc8a5b31eda5db4291dd9f68e6bad37b8d7f6c9c0044b3bf74bbc3d7d1798e138709b0d75e7c593d3cccdc1b20c7174b4e692add820ace262d45ccfae2077e878796347168060a162ecca8c38c1a88350bd63bb539134f700fd4addd5959e255337daa06bc86358fabcbefdfb5bc889783d843c08aadc6c4f6c36f65f156e851c9a0f917e4a367b5ad93d874812a1de6a7b93cd53ad97232,0d1c1ad4e1cfefee854c4a739a0342e39d700dbaf4891978d7c839e87c680717d63ab4aa1ed7eb657ced9f8d2cf47204262e609610842fc5b219acff7eb188c4 +9d9f3a7ecd51b41f6572fd0d0881e30390dfb780991dae7db3b47619134718e6f987810e542619dfaa7b505c76b7350c6432d8bf1cfebdf1069b90a35f0d04cbdf130b0dfc7875f4a4e62cdb8e525aadd7ce842520a482ac18f09442d78305fe85a74e39e760a4837482ed2f437dd13b2ec1042afcf9decdc3e877e50ff4106ad10a525230d11920324a81094da31deab6476aa42f20c84843cfc1c58545ee80352bdd3740dd6a16792ae2d86f11641bb717c2,0a5d9ef40ba2b98edbd7918cc6779483a1a00bd94cc1e1495495caf6cd47c6239571c3828f4565a0d53786781d712c10ef7333227f651974628887d442a5ef9d +5179888724819fbad3afa927d3577796660e6a81c52d98e9303261d5a4a83232f6f758934d50aa83ff9e20a5926dfebaac49529d006eb923c5ae5048ed544ec471ed7191edf46363383824f915769b3e688094c682b02151e5ee01e510b431c8865aff8b6b6f2f59cb6d129da79e97c6d2b8fa6c6da3f603199d2d1bcab547682a81cd6cf65f6551121391d78bcc23b5bd0e922ec6d8bf97c952e84dd28aef909aba31edb903b28fbfc33b7703cd996215a11238,ea83de9ae057701f6ec68ff67e92e0334c18ebb79af1953c2514408d58e69f105441642a1d5b7d6010f7cb15d131dd531855ca337a7b0b794fa6d6923f017afa +576ef3520d30b7a4899b8c0d5e359e45c5189add100e43be429a02fb3de5ff4f8fd0e79d9663acca72cd29c94582b19292a557c5b1315297d168fbb54e9e2ecd13809c2b5fce998edc6570545e1499dbe7fb74d47cd7f35823b212b05bf3f5a79caa34224fdd670d335fcb106f5d92c3946f44d3afcbae2e41ac554d8e6759f332b76be89a0324aa12c5482d1ea3ee89ded4936f3e3c080436f539fa137e74c6d3389bdf5a45074c47bc7b20b0948407a66d855e2f,6651c25d33d10b72535f1db26a1dfe2eb99cdd505448018589b5b88b7cab63eb439c31a474c6f1191df14efc7d0665cc7b82a7dc54a7c6b0c2fd1f75c30d6872 +0df2152fa4f4357c8741529dd77e783925d3d76e95bafa2b542a2c33f3d1d117d159cf473f82310356fee4c90a9e505e70f8f24859656368ba09381fa245eb6c3d763f3093f0c89b972e66b53d59406d9f01aea07f8b3b615cac4ee4d05f542e7d0dab45d67ccccd3a606ccbeb31ea1fa7005ba07176e60dab7d78f6810ef086f42f08e595f0ec217372b98970cc6321576d92ce38f7c397a403bada1548d205c343ac09deca86325373c3b76d9f32028fea8eb32515,a754652247f7285ce2dd8a10035c69961e4f9c025e1fd087cbd3126e049a9e832c3f3a491fcde338b8c01946cdd7dec32a8fd7ed1cb3045bcaf3398905b1bb42 +3e15350d87d6ebb5c8ad99d42515cfe17980933c7a8f6b8bbbf0a63728cefaad2052623c0bd5931839112a48633fb3c2004e0749c87a41b26a8b48945539d1ff41a4b269462fd199bfecd45374756f55a9116e92093ac99451aefb2af9fd32d6d7f5fbc7f7a540d5097c096ebc3b3a721541de073a1cc02f7fb0fb1b9327fb0b1218ca49c9487ab5396622a13ae546c97abdef6b56380dda7012a8384091b6656d0ab272d363cea78163ff765cdd13ab1738b940d16cae,fc1127f6650f32638453ab773f5ce60f9f6165bc9928eff18c7a3281540c7a615d2d62a92e557d4a1ec1229e84819d2dbf06ced4de0ff90040ecb961d678e181 +c38d6b0b757cb552be40940ece0009ef3b0b59307c1451686f1a22702922800d58bce7a636c1727ee547c01b214779e898fc0e560f8ae7f61bef4d75eaa696b921fd6b735d171535e9edd267c192b99880c87997711002009095d8a7a437e258104a41a505e5ef71e5613ddd2008195f0c574e6ba3fe40099cfa116e5f1a2fa8a6da04badcb4e2d5d0de31fdc4800891c45781a0aac7c907b56d631fca5ce8b2cde620d11d1777ed9fa603541de794ddc5758fcd5fad78c0,43c21bccac7acee8ed437b874ed7cdf20ea2e9dc98ab82124610dc4f8416248b51309045cdfbce92efa9e56c5b36d6e5d27580319ce69c22e5d6c87e551eed4a +8d2de3f0b37a6385c90739805b170057f091cd0c7a0bc951540f26a5a75b3e694631bb64c7635eed316f51318e9d8de13c70a2aba04a14836855f35e480528b776d0a1e8a23b547c8b8d6a0d09b241d3be9377160cca4e6793d00a515dc2992cb7fc741daca171431da99cce6f7789f129e2ac5cf65b40d703035cd2185bb936c82002daf8cbc27a7a9e554b06196630446a6f0a14ba155ed26d95bd627b7205c072d02b60db0fd7e49ea058c2e0ba202daff0de91e845cf79,893934b8c630a9bf713c64ffd1128eac75d1cefdef6642fb27f20cb56694c2fa8ba6efcf3e0e56c7789cfaac6b2f7b247dea8367ffd269e74b9cdfb0537031ea +c464bbdad275c50dcd983b65ad1019b9ff85a1e71c807f3204bb2c921dc31fbcd8c5fc45868ae9ef85b6c9b83bba2a5a822201ed68586ec5ec27fb2857a5d1a2d09d09115f22dcc39fe61f5e1ba0ff6e8b4acb4c6da748be7f3f0839739394ff7fa8e39f7f7e84a33c3866875c01bcb1263c9405d91908e9e0b50e7459fabb63d8c6bbb73d8e3483c099b55bc30ff092ff68b6adedfd477d63570c9f5515847f36e24ba0b705557130cec57ebad1d0b31a378e91894ee26e3a04,b4cb58d8497978916dc362d37ade12c7a0d8fe3b08b370659b27218291e04ef343095a91887b040984cb80b0c8611fd12c18ead37b95320d59eddb32113e42a4 +8b8d68bb8a75732fe272815a68a1c9c5aa31b41dedc8493e76525d1d013d33cebd9e21a5bb95db2616976a8c07fcf411f5f6bc6f7e0b57aca78cc2790a6f9b898858ac9c79b165ff24e66677531e39f572be5d81eb3264524181115f32780257bfb9aeec6af12af28e587cac068a1a2953b59ad680f4c245b2e3ec36f59940d37e1d3db38e13edb29b5c0f404f6ff87f80fc8be7a225ff22fbb9c8b6b1d7330c57840d24bc75b06b80d30dad6806544d510af6c4785e823ac3e0b8,35c3f8f0dc28608ec942cb6287482219b42b2ebcbad92b4c34e77e21b7d93b0e85ebf483db2d4a979c48e58f746ac3dcf563ca7e1b2940371d8d83bf0795ec45 +6b018710446f368e7421f1bc0ccf562d9c1843846bc8d98d1c9bf7d9d6fcb48bfc3bf83b36d44c4fa93430af75cd190bde36a7f92f867f58a803900df8018150384d85d82132f123006ac2aeba58e02a037fe6afbd65eca7c44977dd3dc74f48b6e7a1bfd5cc4dcf24e4d52e92bd4455848e4928b0eac8b7476fe3cc03e862aa4dff4470dbfed6de48e410f25096487ecfc32a27277f3f5023b2725ade461b1355889554a8836c9cf53bd767f5737d55184eea1ab3f53edd0976c485,b90e0cc6bc53182c4f2d17aa51391c8250c3032a12daf2fcc641b49aa81ed9449403567b75d4121376dd8cc2d2bdbafa456308ad7c0c13ba85619d75350727e3 +c9534a24714bd4be37c88a3da1082eda7cabd154c309d7bd670dccd95aa535594463058a29f79031d6ecaa9f675d1211e9359be82669a79c855ea8d89dd38c2c761ddd0ec0ce9e97597432e9a1beae062cdd71edfdfd464119be9e69d18a7a7fd7ce0e2106f0c8b0abf4715e2ca48ef9f454dc203c96656653b727083513f8efb86e49c513bb758b3b052fe21f1c05bb33c37129d6cc81f1aef6adc45b0e8827a830fe545cf57d0955802c117d23ccb55ea28f95c0d8c2f9c5a242b33f,99497355ae1791799d11536c73605cdd1496c74e3e930b6272a103c3aa8c984d2d74b01ae72c94f2a4d3a069eac6e00984d21eae3dd7b32ad082b396601093ba +07906c87297b867abf4576e9f3cc7f82f22b154afcbf293b9319f1b0584da6a40c27b32e0b1b7f412c4f1b82480e70a9235b12ec27090a5a33175a2bb28d8adc475cefe33f7803f8ce27967217381f02e67a3b4f84a71f1c5228e0c2ad971373f6f672624fcea8d1a9f85170fad30fa0bbd25035c3b41a6175d467998bd1215f6f3866f53847f9cf68ef3e2fbb54bc994de2302b829c5eea68ec441fcbafd7d16ae4fe9fff98bf00e5bc2ad54dd91ff9fda4dd77b6c754a91955d1fbaad0,c98265396f3278fc532125ded097a6851fc5bf37ca32ec26f43e64874241309f568a217119ba984c54099f8899ac94b7900a4dd9d3877e18371f5dafd1921f08 +588e94b9054abc2189df69b8ba34341b77cdd528e7860e5defcaa79b0c9a452ad4b82aa306be84536eb7cedcbe058d7b84a6aef826b028b8a0271b69ac3605a9635ea9f5ea0aa700f3eb7835bc54611b922964300c953efe7491e3677c2cebe0822e956cd16433b02c68c4a23252c3f9e151a416b4963257b783e038f6b4d5c9f110f871652c7a649a7bcedcbccc6f2d0725bb903cc196ba76c76aa9f10a190b1d1168993baa9ffc96a1655216773458bec72b0e39c9f2c121378feab4e76a,fc03be193a5ed0e6b3502661c2d9e4e2a503cf3fdb231526a90c3c4c26089c787ee6cbf50d90af61c17c5df0b29c373b426740cd0d6fc370de64eb2164bbaeb2 +08959a7e4baae874928813364071194e2939772f20db7c3157078987c557c2a6d5abe68d520eef3dc491692e1e21bcd880adebf63bb4213b50897fa005256ed41b5690f78f52855c8d9168a4b666fce2da2b456d7a7e7c17ab5f2fb1ee90b79e698712e963715983fd07641ae4b4e9dc73203fac1ae11fa1f8c7941fcc82eab247addb56e2638447e9d609e610b60ce086656aaebf1da3c8a231d7d94e2fd0afe46b391ff14a72eaeb3f44ad4df85866def43d4781a0b3578bc996c87970b132,fb9c3a9183b6d251bf61faf1843455cb9c1be35eabdc131d5bf38e98337934968291e9d6dc104374bc234ff22cc23cd6f338e7a3b019cdc9df6e3750b6b01fde +cb2a234f45e2ecd5863895a451d389a369aab99cfef0d5c9ffca1e6e63f763b5c14fb9b478313c8e8c0efeb3ac9500cf5fd93791b789e67eac12fd038e2547cc8e0fc9db591f33a1e4907c64a922dda23ec9827310b306098554a4a78f050262db5b545b159e1ff1dca6eb734b872343b842c57eafcfda8405eedbb48ef32e99696d135979235c3a05364e371c2d76f1902f1d83146df9495c0a6c57d7bf9ee77e80f9787aee27be1fe126cdc9ef893a4a7dcbbc367e40fe4e1ee90b42ea25af01,f7965b71198636f162d5a4e08d73e8c8a9ac1addbdfd7c180c489cca7360b3fee3a4286154460bf867923b348bfe32e79d9139a0cb52c46fa20785faeae0a8bc +d16beadf02ab1d4dc6f88b8c4554c51e866df830b89c06e786a5f8757e8909310af51c840efe8d20b35331f4355d80f73295974653ddd620cdde4730fb6c8d0d2dcb2b45d92d4fbdb567c0a3e86bd1a8a795af26fbf29fc6c65941cddb090ff7cd230ac5268ab4606fccba9eded0a2b5d014ee0c34f0b2881ac036e24e151be89eeb6cd9a7a790afccff234d7cb11b99ebf58cd0c589f20bdac4f9f0e28f75e3e04e5b3debce607a496d848d67fa7b49132c71b878fd5557e082a18eca1fbda94d4b,5337477487a0af43eb7b995293ca2bef6eab2432b1333dcaead7064406e22861fcea623fd8b85b30465787352a36c943610f1458fd22e3f55ddd195a6acaa374 +8f65f6bc59a85705016e2bae7fe57980de3127e5ab275f573d334f73f8603106ec3553016608ef2dd6e69b24be0b7113bf6a760ba6e9ce1c48f9e186012cf96a1d4849d75df5bb8315387fd78e9e153e76f8ba7ec6c8849810f59fb4bb9b004318210b37f1299526866f44059e017e22e96cbe418699d014c6ea01c9f0038b10299884dbec3199bb05adc94e955a1533219c1115fed0e5f21228b071f40dd57c4240d98d37b73e412fe0fa4703120d7c0c67972ed233e5deb300a22605472fa3a3ba86,28ab5c6298a602ae51eeec4080245f7ca10f9a8c304f22b5aa88d0e49226c01c2fd3cc5d8e99309767816e4f6d52719876065495ddb61dd113cfff06b11d8604 +84891e52e0d451813210c3fd635b39a03a6b7a7317b221a7abc270dfa946c42669aacbbbdf801e1584f330e28c729847ea14152bd637b3d0f2b38b4bd5bf9c791c58806281103a3eabbaede5e711e539e6a8b2cf297cf351c078b4fa8f7f35cf61bebf8814bf248a01d41e86c5715ea40c63f7375379a7eb1d78f27622fb468ab784aaaba4e534a6dfd1df6fa15511341e725ed2e87f98737ccb7b6a6dfae416477472b046bf1811187d151bfa9f7b2bf9acdb23a3be507cdf14cfdf517d2cb5fb9e4ab6,2aeeac015d93245f6bf727cd182894097b902cd407d7e0dd06da1a63f4451c657ff39f925e7c8a894ae593d11ebc2d5d1de3d9a18018806719277d993f7fabed +fdd7a9433a3b4afabd7a3a5e3457e56debf78e84b7a0b0ca0e8c6d53bd0c2dae31b2700c6128334f43981be3b213b1d7a118d59c7e6b6493a86f866a1635c12859cfb9ad17460a77b4522a5c1883c3d6acc86e6162667ec414e9a104aa892053a2b1d72165a855bacd8faf8034a5dd9b716f47a0818c09bb6baf22aa503c06b4ca261f557761989d2afbd88b6a678ad128af68672107d0f1fc73c5ca740459297b3292b281e93bceb761bde7221c3a55708e5ec84472cddcaa84ecf23723cc0991355c6280,d0a119617b7e30c2a85ecbb3bbf325ddd589431c8c2e2f9fc6e324a6ed8baf11870a80556cc0688fee4db70f22b9424b4f37a0f1e7ea314684da31bf473b3f34 +70a40bfbef92277a1aad72f6b79d0177197c4ebd432668cfec05d099accb651062b5dff156c0b27336687a94b26679cfdd9daf7ad204338dd9c4d14114033a5c225bd11f217b5f4732da167ee3f939262d4043fc9cba92303b7b5e96aea12adda64859df4b86e9ee0b58e39091e6b188b408ac94e1294a8911245ee361e60e601eff58d1d37639f3753bec80ebb4efde25817436076623fc65415fe51d1b0280366d12c554d86743f3c3b6572e400361a60726131441ba493a83fbe9afda90f7af1ae717238d,1c88789885dccc9ae81029acf0b6c9d083cdb9774c345f1c755e54c45e9af63a70dc2abaefeb1ad416f1bd3d9b69d4c4404d22c85e636a4703769c0112b550b8 +74356e449f4bf8644f77b14f4d67cb6bd9c1f5ae357621d5b8147e562b65c66585caf2e491b48529a01a34d226d436959153815380d5689e30b35357cdac6e08d3f2b0e88e200600d62bd9f5eaf488df86a4470ea227006182e44809009868c4c280c43d7d64a5268fa719074960087b3a6abc837882f882c837834535929389a12b2c78187e2ea07ef8b8eef27dc85002c3ae35f1a50bee6a1c48ba7e175f3316670b27983472aa6a61eed0a683a39ee323080620ea44a9f74411ae5ce99030528f9ab49c79f2,f52d7dd7ff248a1bca7b714f14a79df5766fd67c0031a471cc509f3516d7c348c33f7d4b1ca331b9323896b7074e10a891cea851f9ac20245812b8cfaa556352 +8c3798e51bc68482d7337d3abb75dc9ffe860714a9ad73551e120059860dde24ab87327222b64cf774415a70f724cdf270de3fe47dda07b61c9ef2a3551f45a5584860248fabde676e1cd75f6355aa3eaeabe3b51dc813d9fb2eaa4f0f1d9f834d7cad9c7c695ae84b329385bc0bef895b9f1edf44a03d4b410cc23a79a6b62e4f346a5e8dd851c2857995ddbf5b2d717aeb847310e1f6a46ac3d26a7f9b44985af656d2b7c9406e8a9e8f47dcb4ef6b83caacf9aefb6118bfcff7e44bef6937ebddc89186839b77,a8aee42a77c9b6387dc97319581959d9bd878d061487fd069aca04d6f84d347e23587a6c7c56329b2df88c56c7100ed51ace5b5f778d65478f059cafd6c098fd +fa56bf730c4f8395875189c10c4fb251605757a8fecc31f9737e3c2503b02608e6731e85d7a38393c67de516b85304824bfb135e33bf22b3a23b913bf6acd2b7ab85198b8187b2bcd454d5e3318cacb32fd6261c31ae7f6c54ef6a7a2a4c9f3ecb81ce3555d4f0ad466dd4c108a90399d70041997c3b25345a9653f3c9a6711ab1b91d6a9d2216442da2c973cbd685ee7643bfd77327a2f7ae9cb283620a08716dfb462e5c1d65432ca9d56a90e811443cd1ecb8f0de179c9cb48ba4f6fec360c66f252f6e64edc96b,4b961c4bb6035e7bdda2e1a3b6f9cd52d1789866044c4a925693bea88f65d046238bbeb4e7d3b060e47288041407392b291ae610ba70d6b4d64e74e7a7d0256f +b6134f9c3e91dd8000740d009dd806240811d51ab1546a974bcb18d344642baa5cd5903af84d58ec5ba17301d5ec0f10ccd0509cbb3fd3fff9172d193af0f782252fd1338c7244d40e0e42362275b22d01c4c3389f19dd69bdf958ebe28e31a4ffe2b5f18a87831cfb7095f58a87c9fa21db72ba269379b2dc2384b3da953c7925761fed324620acea435e52b424a7723f6a2357374157a34cd8252351c25a1b232826cefe1bd3e70ffc15a31e7c0598219d7f00436294d11891b82497bc78aa5363892a2495df8c1eef,c0515b65b640b3ffd0a1582a54f4c8fb35c109b7fb472666e043d3c00ae3e0e0fa156c4cefb46b5b7b4c0e480623e1a26018bdaedc3e27d9c0d44c3e1d862015 +c941cdb9c28ab0a791f2e5c8e8bb52850626aa89205bec3a7e22682313d198b1fa33fc7295381354858758ae6c8ec6fac3245c6e454d16fa2f51c4166fab51df272858f2d603770c40987f64442d487af49cd5c3991ce858ea2a60dab6a65a34414965933973ac2457089e359160b7cdedc42f29e10a91921785f6b7224ee0b349393cdcff6151b50b377d609559923d0984cda6000829b916ab6896693ef6a2199b3c22f7dc5500a15b8258420e314c222bc000bc4e5413e6dd82c993f8330f5c6d1be4bc79f08a1a0a46,45c584564d9e0b8239cc1284939ba407a8e5e981691eab6a04d9354c9c855e400b3037151122ced237636e61a7ff2905e0213a6d07306c459e2189e3e6a9e0b8 +4499efffac4bcea52747efd1e4f20b73e48758be915c88a1ffe5299b0b005837a46b2f20a9cb3c6e64a9e3c564a27c0f1c6ad1960373036ec5bfe1a8fc6a435c2185ed0f114c50e8b3e4c7ed96b06a036819c9463e864a58d6286f785e32a804443a56af0b4df6abc57ed5c2b185ddee8489ea080deeee66aa33c2e6dab36251c402682b6824821f998c32163164298e1fafd31babbcffb594c91888c6219079d907fdb438ed89529d6d96212fd55abe20399dbefd342248507436931cdead496eb6e4a80358acc78647d043,136723350857e03756f02e60451a28e711611927b8136dcff3e567dc618ff36b3100737c9781b9c84a576745c1e6be030dac8803a71464af39db94d00253af3e +eecbb8fdfa4da62170fd06727f697d81f83f601ff61e478105d3cb7502f2c89bf3e8f56edd469d049807a38882a7eefbc85fc9a950952e9fa84b8afebd3ce782d4da598002827b1eb98882ea1f0a8f7aa9ce013a6e9bc462fb66c8d4a18da21401e1b93356eb12f3725b6db1684f2300a98b9a119e5d27ff704affb618e12708e77e6e5f34139a5a41131fd1d6336c272a8fc37080f041c71341bee6ab550cb4a20a6ddb6a8e0299f2b14bc730c54b8b1c1c487b494bdccfd3a53535ab2f231590bf2c4062fd2ad58f906a2d0d,c0f7713aa021a04525f751722a9ae5c4c7934d0a286f1fb05823d86a96251c04decd960d8d4d66e2c565e6207a49612e1efde386536854b6ab9a4807b0a145be +e64f3e4ace5c8418d65fec2bc5d2a303dd458034736e3b0df719098be7a206deaf52d6ba82316caf330ef852375188cde2b39cc94aa449578a7e2a8e3f5a9d68e816b8d16889fbc0ebf0939d04f63033ae9ae2bdab73b88c26d6bd25ee460ee1ef58fb0afa92cc539f8c76d3d097e7a6a63ebb9b5887edf3cf076028c5bbd5b9db3211371ad3fe121d4e9bf44229f4e1ecf5a0f9f0eba4d5ceb72878ab22c3f0eb5a625323ac66f7061f4a81fac834471e0c59553f108475fe290d43e6a055ae3ee46fb67422f814a68c4be3e8c9,fe1cb67d77fb463f77747fed292a989a341044a8b65fa1df1441aa41a5c795916626e0e479fd0ba7f9b1dc15fed245b99598d35359834e8fd25cf19685219be2 +d2cb2d733033f9e91395312808383cc4f0ca974e87ec68400d52e96b3fa6984ac58d9ad0938dde5a973008d818c49607d9de2284e7618f1b8aed8372fbd52ed54557af4220fac09dfa8443011699b97d743f8f2b1aef3537ebb45dcc9e13dfb438428ee190a4efdb3caeb7f3933117bf63abdc7e57beb4171c7e1ad260ab0587806c4d137b6316b50abc9cce0dff3acada47bbb86be777e617bbe578ff4519844db360e0a96c6701290e76bb95d26f0f804c8a4f2717eac4e7de9f2cff3bbc55a17e776c0d02856032a6cd10ad2838,4043cdd3f0ea793e49a8ec382f8071f6020b529cf8c82e969429117b362129b7689d3f1ea7ff77ee50263cecdac5a43aa2aee97cf3e665ccf535f6de65ad0100 +f2998955613dd414cc111df5ce30a995bb792e260b0e37a5b1d942fe90171a4ac2f66d4928d7ad377f4d0554cbf4c523d21f6e5f379d6f4b028cdcb9b1758d3b39663242ff3cb6ede6a36a6f05db3bc41e0d861b384b6dec58bb096d0a422fd542df175e1be1571fb52ae66f2d86a2f6824a8cfaacbac4a7492ad0433eeb15454af8f312b3b2a577750e3efbd370e8a8cac1582581971fba3ba4bd0d76e718dacf8433d33a59d287f8cc92234e7a271041b526e389efb0e40b6a18b3aaf658e82ed1c78631fd23b4c3eb27c3faec8685,7392bd445f58cd5d7d3ca98579cbaa9a9437d0c95e7932b4004117f207f8aa39156bc42537b0c790150d443c2d68c2c43e362df9d019601797162e63076936c3 +447797e2899b72a356ba55bf4df3acca6cdb1041eb477bd1834a9f9acbc340a294d729f2f97df3a610be0ff15edb9c6d5db41644b9874360140fc64f52aa03f0286c8a640670067a84e017926a70438db1bb361defee7317021425f8821def26d1efd77fc853b818545d055adc9284796e583c76e6fe74c9ac2587aa46aa8f8804f2feb5836cc4b3ababab8429a5783e17d5999f32242eb59ef30cd7adabc16d72dbdb097623047c98989f88d14eaf02a7212be16ec2d07981aaa99949ddf89ecd90333a77bc4e1988a82abf7c7caf3291,9ff0f0d70ca076ca44c353a3c678c2095c89f619bb53ec9cb4888e2f14e50fbc146a7b521356369f1b9d5665836e45d5400f9856cc6da3b3afe6f3b0471fc9c6 +9f2c18ade9b380c784e170fb763e9aa205f64303067eb1bcea93df5dac4bf5a2e00b78195f808df24fc76e26cb7be31dc35f0844cded1567bba29858cffc97fb29010331b01d6a3fb3159cc1b973d255da9843e34a0a4061cabdb9ed37f241bfabb3c20d32743f4026b59a4ccc385a2301f83c0b0a190b0f2d01acb8f0d41111e10f2f4e149379275599a52dc089b35fdd5234b0cfb7b6d8aebd563ca1fa653c5c021dfd6f5920e6f18bfafdbecbf0ab00281333ed50b9a999549c1c8f8c63d7626c48322e9791d5ff72294049bde91e73f8,a981faa9d3cac492b2fa078d1158f81248df8db36acbd5bad3a6c633bbe500eb481d2937beee9a76c84edcdfa0f997edce708f07851422a7597e2463fc1912cd +ae159f3fa33619002ae6bcce8cbbdd7d28e5ed9d61534595c4c9f43c402a9bb31f3b301cbfd4a43ce4c24cd5c9849cc6259eca90e2a79e01ffbac07ba0e147fa42676a1d668570e0396387b5bcd599e8e66aaed1b8a191c5a47547f61373021fa6deadcb55363d233c24440f2c73dbb519f7c9fa5a8962efd5f6252c0407f190dfefad707f3c7007d69ff36b8489a5b6b7c557e79dd4f50c06511f599f56c896b35c917b63ba35c6ff8092baf7d1658e77fc95d8a6a43eeb4c01f33f03877f92774be89c1114dd531c011e53a34dc248a2f0e6,89025c13bc6b61a1bfadb1d37d676e49e6754e9dfc00d52c5ef13ba57c845d14ac75d5ae6f06714028103c3424717f4c2fbf6d88d055690987620ac5b440576a +3b8e97c5ffc2d6a40fa7de7fcefc90f3b12c940e7ab415321e29ee692dfac799b009c99dcddb708fce5a178c5c35ee2b8617143edc4c40b4d313661f49abdd93cea79d117518805496fe6acf292c4c2a1f76b403a97d7c399daf85b46ad84e16246c67d6836757bde336c290d5d401e6c1386ab32797af6bb251e9b2d8fe754c47482b72e0b394eab76916126fd68ea7d65eb93d59f5b4c5ac40f7c3b37e7f3694f29424c24af8c8f0ef59cd9dbf1d28e0e10f799a6f78cad1d45b9db3d7dee4a7059abe99182714983b9c9d44d7f5643596d4f3,1545d8334836f7436f77f21532f5d3058e351db8357efc1e089583a0c40ad3a6af5f2fee793d3fe1b4721f6817a373499b20912a35c4609fa9d84bd274e978fc +3434ec31b10fafdbfeec0dd6bd94e80f7ba9dca19ef075f7eb017512af66d6a4bcf7d16ba0819a1892a6372f9b35bcc7ca8155ee19e8428bc22d214856ed5fa9374c3c09bde169602cc219679f65a1566fc7316f4cc3b631a18fb4449fa6afa16a3db2bc4212eff539c67cf184680826535589c7111d73bffce431b4c40492e763d9279560aaa38eb2dc14a212d723f994a1fe656ff4dd14551ce4e7c621b2aa5604a10001b2878a897a28a08095c325e10a26d2fb1a75bfd64c250309bb55a44f23bbac0d5516a1c687d3b41ef2fbbf9cc56d4739,afaf201ba353316c1a7b810f120cff941bb658b0763eef59433403d8313b8f00bf18177898ae71907d3b524e68bb028ea1442866856111b12089bcbed177fd46 +7c7953d81c8d208fd1c97681d48f49dd003456de60475b84070ef4847c333b74575b1fc8d2a186964485a3b8634feaa3595aaa1a2f4595a7d6b6153563dee31bbac443c8a33eed6d5d956a980a68366c2527b550ee950250dfb691eacbd5d56ae14b970668be174c89df2fea43ae52f13142639c884fd62a3683c0c3792f0f24ab1318bcb27e21f4737fab62c77ea38bc8fd1cf41f7dab64c13febe7152bf5bb7ab5a78f5346d43cc741cb6f72b7b8980f268b68bf62abdfb1577a52438fe14b591498cc95f071228460c7c5d5ceb4a7bde588e7f21c,3fb4f21a231973d2247f206d47b19ee1551647fd4d4f21fbcd6f653577c1ac69eae4db432c0234acbe17b2ced0238a56acc34d7bb82fbc190903035b7c538857 +7a6a4f4fdc59a1d223381ae5af498d74b7252ecf59e389e49130c7eaee626e7bd9897effd92017f4ccde66b0440462cdedfd352d8153e6a4c8d7a0812f701cc737b5178c2556f07111200eb627dbc299caa792dfa58f35935299fa3a3519e9b03166dffa159103ffa35e8577f7c0a86c6b46fe13db8e2cdd9dcfba85bdddcce0a7a8e155f81f712d8e9fe646153d3d22c811bd39f830433b2213dd46301941b59293fd0a33e2b63adbd95239bc01315c46fdb678875b3c81e053a40f581cfbec24a1404b1671a1b88a6d06120229518fb13a74ca0ac5ae,0b1c53e68667314b5f3f0f30e25c622b1a86d10701d4a0473fd40f22c50acb47d63eafa582a2fbe5453a3f73bfbca923680f4c2c7f99c98388c07ddd7aff2c6e +d9faa14cebe9b7de551b6c0765409a33938562013b5e8e0e1e0a6418df7399d0a6a771fb81c3ca9bd3bb8e2951b0bc792525a294ebd1083688806fe5e7f1e17fd4e3a41d00c89e8fcf4a363caedb1acb558e3d562f1302b3d83bb886ed27b76033798131dab05b4217381eaaa7ba15ec820bb5c13b516dd640eaec5a27d05fdfca0f35b3a5312146806b4c0275bcd0aaa3b2017f346975db566f9b4d137f4ee10644c2a2da66deeca5342e236495c3c6280528bfd32e90af4cd9bb908f34012b52b4bc56d48cc8a6b59bab014988eabd12e1a0a1c2e170e7,d836d0ce3a28ad71c3a876796bf65aab838d84e4802ed49ac04484ae06aa08ed31deb5c38c1022f0aceed49cb58e38d3aab09efeced9349fdc33379251259826 +2d8427433d0c61f2d96cfe80cf1e932265a191365c3b61aaa3d6dcc039f6ba2ad52a6a8cc30fc10f705e6b7705105977fa496c1c708a277a124304f1fc40911e7441d1b5e77b951aad7b01fd5db1b377d165b05bbf898042e39660caf8b279fe5229d1a8db86c0999ed65e53d01ccbc4b43173ccf992b3a14586f6ba42f5fe30afa8ae40c5df29966f9346da5f8b35f16a1de3ab6de0f477d8d8660918060e88b9b9e9ca6a4207033b87a812dbf5544d39e4882010f82b6ce005f8e8ff6fe3c3806bc2b73c2b83afb704345629304f9f86358712e9fae3ca3e,61b8a7520dab4d395044b1a9ccc4f5263edae0325767e3d2a0ef225933a81f7e3796280870dbdab8457d585c4106315b537653dc3d77e915100f421db39f43b3 +5e19d97887fcaac0387e22c6f803c34a3dacd2604172433f7a8a7a526ca4a2a1271ecfc5d5d7be5ac0d85d921095350dfc65997d443c21c8094e0a3fefd2961bcb94aed03291ae310ccda75d8ace4bc7d89e7d3e5d1650bda5d668b8b50bfc8e608e184f4d3a9a2badc4ff5f07e0c0bc8a9f2e0b2a26fd6d8c550008faaab75fd71af2a424bec9a7cd9d83fad4c8e9319115656a8717d3b523a68ff8004258b9990ed362308461804ba3e3a7e92d8f2ffae5c2fba55ba5a3c27c0a2f71bd711d2fe1799c2adb31b200035481e9ee5c4adf2ab9c0fa50b23975cf,b847b292818e800baa415c2521a8158a6ab749934db693d0d2e4613cdae60bd56075cf2c29f587dc3530164190bc2c02d97ca32347fa2aa431e511bb7d1c87e8 +c8e976ab4638909387ce3b8d4e510c3230e5690e02c45093b1d297910abc481e56eea0f296f98379dfc9080af69e73b2399d1c143bee80ae1328162ce1ba7f6a8374679b20aacd380eb4e61382c99998704d62701afa914f9a2705cdb065885f50d086c3eb5753700c387118bb142f3e6da1e988dfb31ac75d7368931e45d1391a274b22f83ceb072f9bcabc0b216685bfd789f5023971024b1878a205442522f9ea7d8797a4102a3df41703768251fd5e017c85d1200a464118aa35654e7ca39f3c375b8ef8cbe7534dbc64bc20befb417cf60ec92f63d9ee7397,95ed6d8567774e66404fc32b7a01e1c625fc8322ab9be0cd7c936731638b04c09748973d95665a35b218d1531411f3aa5e5c47e65d857a43783e2bd3c9d29005 +7145fa124b7429a1fc2231237a949ba7201bcc1822d3272de005b682398196c25f7e5cc2f289fbf44415f699cb7fe6757791b1443410234ae061edf623359e2b4e32c19bf88450432dd01caa5eb16a1dc378f391ca5e3c4e5f356728bddd4975db7c890da8bbc84cc73ff244394d0d48954978765e4a00b593f70f2ca082673a261ed88dbcef1127728d8cd89bc2c597e9102ced6010f65fa75a14ebe467fa57ce3bd4948b6867d74a9df5c0ec6f530cbf2ee61ce6f06bc8f2864dff5583776b31df8c7ffcb61428a56bf7bd37188b4a5123bbf338393af46eda85e6,98350793fc1540ae72757c2d1ba0fa34df1923c987f365752788e3c65931746c36d13fd293db8ea1b6374872ccf74e9b0cff67c6debb4263390cd96e2bdd864f +7fdfadcc9d29bad23ae038c6c65cda1aef757221b8872ed3d75ff8df7da0627d266e224e812c39f7983e4558bfd0a1f2bef3feb56ba09120ef762917b9c093867948547aee98600d10d87b20106878a8d22c64378bf634f7f75900c03986b077b0bf8b740a82447b61b99fee5376c5eb6680ec9e3088f0bdd0c56883413d60c1357d3c811950e5890e7600103c916341b80c743c6a852b7b4fb60c3ba21f3bc15b8382437a68454779cf3cd7f9f90ccc8ef28d0b706535b1e4108eb5627bb45d719cb046839aee311ca1abdc8319e050d67972cb35a6b1601b25dbf487,c2493d60e1efa6b472933ede64d1f49eff773635f66c6454e57e47935a0f4c5b94548da5c369bdac7146e54f017c3fd674ce32f8d95151c7cbc3e3bba3ebe0d3 +988638219fd3095421f826f56e4f09e356296b628c3ce6930c9f2e758fd1a80c8273f2f61e4daae65c4f110d3e7ca0965ac7d24e34c0dc4ba2d6ff0bf5bbe93b3585f354d7543cb542a1aa54674d375077f2d360a8f4d42f3db131c3b7ab7306267ba107659864a90c8c909460a73621d1f5d9d3fd95beb19b23db1cb6c0d0fba91d36891529b8bd8263caa1bab56a4affaed44962df096d8d5b1eb845ef31188b3e10f1af811a13f156beb7a288aae593ebd1471b624aa1a7c6adf01e2200b3d72d88a3aed3100c88231e41efc376906f0b580dc895f080fda5741db1cb,70d7ba6585cd2ef91bb261025f9dcc80f8359c9dc30c7c2961f0d1f6057b9c44e3aa67a4bc00f137886e3cf1316d75f8ebf651c79df9a99cabd0383008372016 +5aab62756d307a669d146aba988d9074c5a159b3de85151a819b117ca1ff6597f6156e80fdd28c9c3176835164d37da7da11d94e09add770b68a6e081cd22ca0c004bfe7cd283bf43a588da91f509b27a6584c474a4a2f3ee0f1f56447379240a5ab1fb77fdca49b305f07ba86b62756fb9efb4fc225c86845f026ea542076b91a0bc2cdd136e122c659be259d98e5841df4c2f60330d4d8cdee7bf1a0a244524eecc68ff2aef5bf0069c9e87a11c6e519de1a4062a10c83837388f7ef58598a3846f49d499682b683c4a062b421594fafbc1383c943ba83bdef515efcf10d,b50d0da9b3db1545cc1d2f35465c74d07543b3564249f12c546a08797eea73326ce624203a3d25c92ce636bcce86da9cb9f39bc755ec0f39c090a0e8a72da70b +47b8216aa0fbb5d67966f2e82c17c07aa2d6327e96fcd83e3de7333689f3ee79994a1bf45082c4d725ed8d41205cb5bcdf5c341f77facb1da46a5b9b2cbc49eadf786bcd881f371a95fa17df73f606519aea0ff79d5a11427b98ee7f13a5c00637e2854134691059839121fea9abe2cd1bcbbbf27c74caf3678e05bfb1c949897ea01f56ffa4dafbe8644611685c617a3206c7a7036e4ac816799f693dafe7f19f303ce4eba09d21e03610201bfc665b72400a547a1e00fa9b7ad8d84f84b34aef118515e74def11b9188bd1e1f97d9a12c30132ec2806339bdadacda2fd8b78,83752a88c915d4193296725decc50c9c05d25d6bbd9af2e0ef06286ecfee961de959bedbb130704d432c2bc89930208f450e0a022661724043d268cb24e7fc47 +8cff1f67fe53c098896d9136389bd8881816ccab34862bb67a656e3d98896f3ce6ffd4da73975809fcdf9666760d6e561c55238b205d8049c1cedeef374d1735daa533147bfa960b2cce4a4f254176bb4d1bd1e89654432b8dbe1a135c42115b394b024856a2a83dc85d6782be4b444239567ccec4b184d4548eae3ff6a192f343292ba2e32a0f267f31cc26719eb85245d415fb897ac2da433ee91a99424c9d7f1766a44171d1651001c38fc79294accc68ceb5665d36218454d3ba169ae058a831338c17743603f81ee173bfc0927464f9bd728dee94c6aeab7aae6ee3a627e8,7288424ba855a76c7480b606f8f32e94396799bab8bb3fc8fd21d180966c64971071e2645622524ec7d1645eea7b7c1fa21f7f5b6b90f3e5beb99222f05ea905 +eacd07971cff9b9939903f8c1d8cbb5d4db1b548a85d04e037514a583604e787f32992bf2111b97ac5e8a938233552731321522ab5e8583561260b7d13ebeef785b23a41fd8576a6da764a8ed6d822d4957a545d5244756c18aa80e1aad4d1f9c20d259dee1711e2cc8fd013169fb7cc4ce38b362f8e0936ae9198b7e838dcea4f7a5b9429bb3f6bbcf2dc92565e3676c1c5e6eb3dd2a0f86aa23edd3d0891f197447692794b3dfa269611ad97f72b795602b4fdb198f3fd3eb41b415064256e345e8d8c51c555dc8a21904a9b0f1ad0effab7786aac2da3b196507e9f33ca356427,e9399376d89c4dd4464e45825f4302cdccd4c41db4e8951be17bcc6451858332398b7e4e7f5eee6830c715451e4aacdb179dd5247ba6d5728cbd4060aeb77cb9 +23ac4e9a42c6ef45c3336ce6dfc2ff7de8884cd23dc912fef0f7756c09d335c189f3ad3a23697abda851a81881a0c8ccafc980ab2c702564c2be15fe4c4b9f10dfb2248d0d0cb2e2887fd4598a1d4acda897944a2ffc580ff92719c95cf2aa42dc584674cb5a9bc5765b9d6ddf5789791d15f8dd925aa12bffafbce60827b490bb7df3dda6f2a143c8bf96abc903d83d59a791e2d62814a89b8080a28060568cf24a80ae61179fe84e0ffad00388178cb6a617d37efd54cc01970a4a41d1a8d3ddce46edbba4ab7c90ad565398d376f431189ce8c1c33e132feae6a8cd17a61c630012,ccea447efe6f8b06ac42076280377635f5fd0767f4af8b245fe63b79fe4974e9156744e60e98d12018214c39f8a826d506d0d5948645e9f883c208d37d927a41 +0172df732282c9d488669c358e3492260cbe91c95cfbc1e3fea6c4b0ec129b45f242ace09f152fc6234e1bee8aab8cd56e8b486e1dcba9c05407c2f95da8d8f1c0af78ee2ed82a3a79ec0cb0709396ee62aadb84f8a4ee8a7ccca3c1ee84e302a09ea802204afecf04097e67d0f8e8a9d2651126c0a598a37081e42d168b0ae8a71951c524259e4e2054e535b779679bdade566fe55700858618e626b4a0faf895bcce9011504a49e05fd56127eae3d1f8917afb548ecadabda1020111fec9314c413498a360b08640549a22cb23c731ace743252a8227a0d2689d4c6001606678dfb921,7e03fce3b67ebb28308823f56aa93dbb4d9efdbd93300d97b1f99efcb82c3684c5a5a5aa64e7a34c69b89399cab05f22e8e88607b863336e4cbf8cf6e74b98c1 +3875b9240cf3e0a8b59c658540f26a701cf188496e2c2174788b126fd29402d6a75453ba0635284d08835f40051a2a9683dc92afb9383719191231170379ba6f4adc816fecbb0f9c446b785bf520796841e58878b73c58d3ebb097ce4761fdeabe15de2f319dfbaf1742cdeb389559c788131a6793e193856661376c81ce9568da19aa6925b47ffd77a43c7a0e758c37d69254909ff0fbd415ef8eb937bcd49f91468b49974c07dc819abd67395db0e05874ff83dddab895344abd0e7111b2df9e58d76d85ad98106b36295826be04d435615595605e4b4bb824b33c4afeb5e7bb0d19f909,6a457ae74f89c42bbd2bd2ebfffbd71f036ff7b76c4afddffbd52f32e588a9543ced09da9a3e130ac1a19ef1acb2fa68ac41917ed6bad37a60982b16b5eb4ff3 +747cc1a59fefba94a9c75ba866c30dc5c1cb0c0f8e9361d98484956dd5d1a40f6184afbe3dac9f76028d1caeccfbf69199c6ce2b4c092a3f4d2a56fe5a33a00757f4d7dee5dfb0524311a97ae0668a47971b95766e2f6dd48c3f57841f91f04a00ad5ea70f2d479a2620dc5cd78eaab3a3b011719b7e78d19ddf70d9423798af77517ebc55392fcd01fc600d8d466b9e7a7a85bf33f9cc5419e9bd874ddfd60981150ddaf8d7febaa4374f0872a5628d318000311e2f5655365ad4d407c20e5c04df17a222e7deec79c5ab1116d8572f91cd06e1ccc7ced53736fc867fd49ecebe6bf8082e8a,91b8cd795d1a6828601e00db0c91ff9a6f837444f53fcf89e990b88f5f3e34eb490e72a1795fab84f78da3f7afc89896c7cde5865d1bcd74d5639e4903c683fe +57af971fccaec97435dc2ec9ef0429bcedc6b647729ea168858a6e49ac1071e706f4a5a645ca14e8c7746d65511620682c906c8b86ec901f3dded4167b3f00b06cbfac6aee3728051b3e5ff10b4f9ed8bd0b8da94303c833755b3ca3aeddf0b54bc8d6632138b5d25bab03d17b3458a9d782108006f5bb7de75b5c0ba854b423d8bb801e701e99dc4feaad59bc1c7112453b04d33ea3635639fb802c73c2b71d58a56bbd671b18fe34ed2e3dca38827d63fdb1d4fb3285405004b2b3e26081a8ff08cd6d2b08f8e7b7e90a2ab1ed7a41b1d0128522c2f8bff56a7fe67969422ce839a9d4608f03,7635d79c1b32e4934eb0090c6d46c0b240f626c77d84f8eabf571ba8fde924f4a1cf456704b101f667f912dedbbcbeff2180a419a68c7b790ba606e6602d5115 +04e16dedc1227902baaf332d3d08923601bdd64f573faa1bb7201918cfe16b1e10151dae875da0c0d63c59c3dd050c4c6a874011b018421afc4623ab0381831b2da2a8ba42c96e4f70864ac44e106f94311051e74c77c1291bf5db9539e69567bf6a11cf6932bbbad33f8946bf5814c066d851633d1a513510039b349939bfd42b858c21827c8ff05f1d09b1b0765dc78a135b5ca4dfba0801bcaddfa175623c8b647eacfb4444b85a44f73890607d06d507a4f8393658788669f6ef4deb58d08c50ca0756d5e2f49d1a7ad73e0f0b3d3b5f090acf622b1878c59133e4a848e05153592ea81c6fbf,ddd0c521ed60c55f65bae241a9072d7f6f6cca7f64624ec92c037bf8bc16f0602e75ee46879af41f3eff5ce235905f3856a031c3cc90a4851f4cd8463aae6de8 +7c815c384eee0f288ece27cced52a01603127b079c007378bc5d1e6c5e9e6d1c735723acbbd5801ac49854b2b569d4472d33f40bbb8882956245c366dc3582d71696a97a4e19557e41e54dee482a14229005f93afd2c4a7d8614d10a97a9dfa07f7cd946fa45263063ddd29db8f9e34db60daa32684f0072ea2a9426ecebfa5239fb67f29c18cbaa2af6ed4bf4283936823ac1790164fec5457a9cba7c767ca59392d94cab7448f50eb34e9a93a80027471ce59736f099c886dea1ab4cba4d89f5fc7ae2f21ccd27f611eca4626b2d08dc22382e92c1efb2f6afdc8fdc3d2172604f5035c46b8197d3,c84c03564d024f90560001ca4cef867af77999943e313ca17328756c43d2fe31cf98812d3a7aab1535c28ed29d692db4824e8d6dce06c9994dbcbe0f82633fbe +e29d505158dbdd937d9e3d2145658ee6f5992a2fc790f4f608d9cdb44a091d5b94b88e81fac4fdf5c49442f13b911c55886469629551189eaff62488f1a479b7db11a1560e198ddccccf50159093425ff7f1cb8d1d1246d0978764087d6bac257026b090efae8cec5f22b6f21c59ace1ac7386f5b8837ca6a12b6fbf5534dd0560ef05ca78104d3b943ddb220feaec89aa5e692a00f822a2ab9a2fe60350d75e7be16ff2526dc643872502d01f42f188abed0a6e9a6f5fd0d1ce7d5755c9ffa66b0af0b20bd806f08e06156690d81ac811778ca3dac2c249b96002017fce93e507e3b953acf99964b847,b4563191675191ed4d6107e52fa15adc9d70642358d8c3e34df10274e25d373fd8d19e92472b823e28bbdd1d541a95fddd0d43c79fcb3ba18a7ec038d3ef69a6 +d85588696f576e65eca0155f395f0cfacd83f36a99111ed5768df2d116d2121e32357ba4f54ede927f189f297d3a97fad4e9a0f5b41d8d89dd7fe20156799c2b7b6bf9c957ba0d6763f5c3bc5129747bbb53652b49290cff1c87e2cdf2c4b95d8aaee09bc8fbfa6883e62d237885810491bfc101f1d8c636e3d0ede838ad05c207a3df4fad76452979eb99f29afaecedd1c63b8d36cf378454a1bb67a741c77ac6b6b3f95f4f02b64dabc15438613ea49750df42ee90101f115aa9abb9ff64324dde9dabbb01054e1bd6b4bcdc7930a44c2300d87ca78c06924d0323ad7887e46c90e8c4d100acd9eed21e,a30bd80cb3acb3bfa7e037a3d0d2500974d71957f68135133020c32eb4d688f132d0fb045be027f124b3d935cb889e3cbc4a4a420026bb2ac2a4b1b15c57bb64 +3a12f8508b40c32c74492b66323375dcfe49184c78f73179f3314b79e63376b8ac683f5a51f1534bd729b02b04d002f55cbd8e8fc9b5ec1ea6bbe6a0d0e7431518e6ba45d124035f9d3dce0a8bb7bf1430a9f657e0b4ea9f20eb20c786a58181a1e20a96f1628f8728a13bdf7a4b4b32fc8aa7054cc4881ae7fa19afa65c6c3ee1b3ade3192af42054a8a911b8ec1826865d46d93f1e7c5e2b7813c92a506e53886f3d4701bb93d2a681ad109c845904bb861af8af0646b6e399b38b614051d34f6842563a0f37ec00cb3d865fc5d746c4987de2a65071100883a2a9c7a2bfe1e2dd603d9ea24dc7c5fd06be,4a5809e457f54d9c7e8209f6c482d52a4efe6d8a20c4c6fba83687294929232d25cd7bf511d8e6fbf272e983f07d044f8723098d7a381f04e957b0787087ef02 +1861edce46fa5ad17e1ff1deae084dec580f97d0a67885dfe834b9dfac1ae076742ce9e267512ca51f6df5a455af0c5fd6abf94acea103a3370c354485a7846fb84f3ac7c2904b5b2fbf227002ce512133bb7e1c4e50057bfd1e44db33c7cdb969a99e284b184f50a14b068a1fc5009d9b298dbe92239572a7627aac02abe8f3e3b473417f36d4d2505d16b7577f4526c9d94a270a2dfe450d06da8f6fa956879a0a55cfe99e742ea555ea477ba3e9b44ccd508c375423611af92e55345dc215779b2d5119eba49c71d49b9fe3f1569fa24e5ca3e332d042422a8b8158d3ec66a80012976f31ffdf305f0c9c5e,a79016c34bee41ab5cb10278478a5b55d07c2e0831835dde6f8ff8dafac37a5f88fba07cceffe35849dbd123b06df2335b002645d078fe1b08843c257a1bbe56 +08d0ffde3a6e4ef65608ea672e4830c12943d7187ccff08f4941cfc13e545f3b9c7ad5eebbe2b01642b486caf855c2c73f58c1e4e3391da8e2d63d96e15fd84953ae5c231911b00ad6050cd7aafdaac9b0f663ae6aab45519d0f5391a541707d479034e73a6ad805ae3598096af078f1393301493d663dd71f83869ca27ba508b7e91e81e128c1716dc3acfe3084b2201e04cf8006617eecf1b640474a5d45cfde9f4d3ef92d6d055b909892194d8a8218db6d8203a84261d200d71473d7488f3427416b6896c137d455f231071cacbc86e0415ab88aec841d96b7b8af41e05bb461a40645bf176601f1e760de5f,603f7b09565634d4410b574a4dc9ea467437964517e5efa51a362a30e8c632c55162a3351bb5532e40948aa9a1e3a8786c0422aec3ec338c7f4b57679200452b +d782abb72a5be3392757be02d3e45be6e2099d6f000d042c8a543f50ed6ebc055a7f133b0dd8e9bc348536edcaae2e12ec18e8837df7a1b3c87ec46d50c241dee820fd586197552dc20beea50f445a07a38f1768a39e2b2ff05dddedf751f1def612d2e4d810daa3a0cc904516f9a43af660315385178a529e51f8aae141808c8bc5d7b60cac26bb984ac1890d0436ef780426c547e94a7b08f01acbfc4a3825eae04f520a9016f2fb8bf5165ed12736fc71e36a49a73614739eaa3ec834069b1b40f1350c2b3ab885c02c640b9f7686ed5f99527e41cfcd796fe4c256c9173186c226169ff257954ebda81c0e5f99,1018692d530c55baa580ae1e7384351100d4637cd33869c71e6076a3d4e310d964b81d593e89718845ac7a89e8ad5073506427c6c8f7fadfa0c5dc3cfaa5d924 +5fce8109a358570e40983e1184e541833bb9091e280f258cfb144387b05d190e431cb19baa67273ba0c58abe91308e1844dcd0b3678baa42f335f2fa05267a0240b3c718a5942b3b3e3bfa98a55c25a1466e8d7a603722cb2bbf03afa54cd769a99f310735ee5a05dae2c22d397bd95635f58c48a67f90e1b73aafcd3f82117f0166657838691005b18da6f341d6e90fc1cdb352b30fae45d348294e501b63252de14740f2b85ae5299ddec3172de8b6d0ba219a20a23bb5e10ff434d39db3f583305e9f5c039d98569e377b75a70ab837d1df269b8a4b566f40bb91b577455fd3c356c914fa06b9a7ce24c7317a172d,e3c0eaffc3567bd72cc02150a75f32dde53de2652c5313eb3e97018adddf629da01d97d0a9e2519451a7292f5de00ee4456fe6e4f14f96d5de7e6f174edb28c4 +6172f1971a6e1e4e6170afbad95d5fec99bf69b24b674bc17dd78011615e502de6f56b86b1a71d3f4348087218ac7b7d09302993be272e4a591968aef18a1262d665610d1070ee91cc8da36e1f841a69a7a682c580e836941d21d909a3afc1f0b963e1ca5ab193e124a1a53df1c587470e5881fb54dae1b0d840f0c8f9d1b04c645ba1041c7d8dbf22030a623aa15638b3d99a2c400ff76f3252079af88d2b37f35ee66c1ad7801a28d3d388ac450b97d5f0f79e4541755356b3b1a5696b023f39ab7ab5f28df4202936bc97393b93bc915cb159ea1bd7a0a414cb4b7a1ac3af68f50d79f0c9c7314e750f7d02faa58bfa,192ae7a0f7a816fd3d4020bddcf2aaf52a64e6384dca527f33af4ee69099dca97b890a99cfab9d904a35f2707856696c30c6432df70a6cef704bb268055a6d07 +5668ecd99dfbe215c4118398ac9c9eaf1a1433fab4ccdd3968064752b625ea944731f75d48a27d047d67547f14dd0ffaa55fa5e29f7af0d161d85eafc4f2029b717c918eab9d304543290bdba7158b68020c0ba4e079bc95b5bc0fc044a992b94b4ccd3bd66d0eabb5dbbab904d62e00752c4e3b0091d773bcf4c14b4377da3efff824b1cb2fa01b32d1e46c909e626ed2dae920f4c7dbeb635bc754facbd8d49beba3f23c1c41ccbfcd0ee0c114e69737f5597c0bf1d859f0c767e18002ae8e39c26261ffde2920d3d0baf0e906138696cfe5b7e32b600f45df3aaa39932f3a7df95b60fa8712a2271fcaf3911ce7b511b1,6bcd7e7c359fdd93a56d79f97fc2d534619f14fe443ac8c9e042c5105fbaf2777718de07424a62333ffd43a501a8544449a7cac3c8d821e380b0cb8172b9493b +03d625488354df30e3f875a68edfcf340e8366a8e1ab67f9d5c5486a96829dfac0578289082b2a62117e1cf418b43b90e0adc881fc6ae8105c888e9ecd21aea1c9ae1a4038dfd17378fed71d02ae492087d7cdcd98f746855227967cb1ab4714261ee3bead3f4db118329d3ebef4bc48a875c19ba763966da0ebea800e01b2f50b00e9dd4caca6dcb314d00184ef71ea2391d760c950710db4a70f9212ffc54861f9dc752ce18867b8ad0c48df8466ef7231e7ac567f0eb55099e622ebb86cb237520190a61c66ad34f1f4e289cb3282ae3eaac6152ed24d2c92bae5a7658252a53c49b7b02dfe54fdb2e90074b6cf310ac661,1fcd1e38ab03c750366cf86dd72ec3bf22f5bbf7fea0149d31b6a67b68b537b59ba37917fd88ced9aa8d2941a65f552b7928b3785c66d640f3b74af039ed18ce +2edc282ffb90b97118dd03aaa03b145f363905e3cbd2d50ecd692b37bf000185c651d3e9726c690d3773ec1e48510e42b17742b0b0377e7de6b8f55e00a8a4db4740cee6db0830529dd19617501dc1e9359aa3bcf147e0a76b3ab70c4984c13e339e6806bb35e683af8527093670859f3d8a0fc7d493bcba6bb12b5f65e71e705ca5d6c948d66ed3d730b26db395b3447737c26fad089aa0ad0e306cb28bf0acf106f89af3745f0ec72d534968cca543cd2ca50c94b1456743254e358c1317c07a07bf2b0eca438a709367fafc89a57239028fc5fecfd53b8ef958ef10ee0608b7f5cb9923ad97058ec067700cc746c127a61ee3,f39ef0626d3fbd9cd435a93e7eee41e4a2ff5362f56c988b20870a3befa50470dc5fabe39895c0761289fafd9147abab02561f300d0ceb9a732e14ca887caf18 +90b28a6aa1fe533915bcb8e81ed6cacdc10962b7ff82474f845eeb86977600cf70b07ba8e3796141ee340e3fce842a38a50afbe90301a3bdcc591f2e7d9de53e495525560b908c892439990a2ca2679c5539ffdf636777ad9c1cdef809cda9e8dcdb451abb9e9c17efa4379abd24b182bd981cafc792640a183b61694301d04c5b3eaad694a6bd4cc06ef5da8fa23b4fa2a64559c5a68397930079d250c51bcf00e2b16a6c49171433b0aadfd80231276560b80458dd77089b7a1bbcc9e7e4b9f881eacd6c92c4318348a13f4914eb27115a1cfc5d16d7fd94954c3532efaca2cab025103b2d02c6fd71da3a77f417d7932685888a,81e8b59ddcd24811b405f7529da125f0dc19ae21e8795ce9e6692dab645b7959446adcaa3061dc4642a51d8a562efb03a7680af0f52c01406d5c213eaac6be55 +2969447d175490f2aa9bb055014dbef2e6854c95f8d60950bfe8c0be8de254c26b2d31b9e4de9c68c9adf49e4ee9b1c2850967f29f5d08738483b417bb96b2a56f0c8aca632b552059c59aac3f61f7b45c966b75f1d9931ff4e596406378cee91aaa726a3a84c33f37e9cdbe626b5745a0b06064a8a8d56e53aaf102d23dd9df0a3fdf7a638509a6761a33fa42fa8ddbd8e16159c93008b53765019c3f0e9f10b144ce2ac57f5d7297f9c9949e4ff68b70d339f87501ce8550b772f32c6da8ad2ce2100a895d8b08fa1eead7c376b407709703c510b50f87e73e43f8e7348f87c3832a547ef2bbe5799abedcf5e1f372ea809233f006,63424b09069fbd2d0fac00805aad07fd56e30bb8116b5476ae90bf6acec84c3b45368a9ebb7fcea8d65965f52514a2a59a06e6e06b07dc6aee7f756bfc188e25 +721645633a44a2c78b19024eaecf58575ab23c27190833c26875dc0f0d50b46aea9c343d82ea7d5b3e50ec700545c615daeaea64726a0f05607576dcd396d812b03fb6551c641087856d050b10e6a4d5577b82a98afb89cee8594c9dc19e79feff0382fcfd127f1b803a4b9946f4ac9a4378e1e6e041b1389a53e3450cd32d9d2941b0cbabdb50da8ea2513145164c3ab6bcbd251c448d2d4b087ac57a59c2285d564f16da4ed5e607ed979592146ffb0ef3f3db308fb342df5eb5924a48256fc763141a278814c82d6d6348577545870ae3a83c7230ac02a1540fe1798f7ef09e335a865a2ae0949b21e4f748fb8a51f44750e213a8fb,1e709fb3501fa818f57e70c365db45ccf2eb8a8fa66de9b5f211d6f0cc9722ade963c965ad5f6937ba62edc2d8983843e0f3679d9c97b30cd54f2409dda5f474 +6b860d39725a14b498bb714574b4d37ca787404768f64c648b1751b353ac92bac2c3a28ea909fdf0423336401a02e63ec24325300d823b6864bb701f9d7c7a1f8ec9d0ae3584aa6dd62ea1997cd831b4babd9a4da50932d4efda745c61e4130890e156aee6113716daf95764222a91187db2effea49d5d0596102d619bd26a616bbfda8335505fbb0d90b4c180d1a2335b91538e1668f9f9642790b4e55f9cab0fe2bdd2935d001ee6419abab5457880d0dbff20ed8758f4c20fe759efb33141cf0e892587fe8187e5fbc57786b7e8b089612c936dfc03d27efbbe7c8673f1606bd51d5ff386f4a7ab68edf59f385eb1291f117bfe717399,5b9f0c544627faadea82825a569da33a75c5da6cc169926de0556a737e4daa07abf1dc3db0704f5d67fcbc4cb62aac442ecec867a2c16846f1d53d205cb872ac +6a01830af3889a25183244decb508bd01253d5b508ab490d3124afbf42626b2e70894e9b562b288d0a2450cfacf14a0ddae5c04716e5a0082c33981f6037d23d5e045ee1ef2283fb8b6378a914c5d9441627a722c282ff452e25a7ea608d69cee4393a0725d17963d0342684f255496d8a18c2961145315130549311fc07f0312fb78e6077334f87eaa873bee8aa95698996eb21375eb2b4ef53c14401207deb4568398e5dd9a7cf97e8c9663e23334b46912f8344c19efcf8c2ba6f04325f1a27e062b62a58d0766fc6db4d2c6a1928604b0175d872d16b7908ebc041761187cc785526c2a3873feac3a642bb39f5351550af9770c328af7b,930ab42a9f5f5bc5f2222c748f2478a00f40c3b6d6487d6d7ed0d71100f40fcbb2c66566ea26ad0a417629f5a61dca411ccd21f7367d308f3b1b24901824fa9b +b3c5e74b69933c2533106c563b4ca20238f2b6e675e8681e34a389894785bdade59652d4a73d80a5c85bd454fd1e9ffdad1c3815f5038e9ef432aac5c3c4fe840cc370cf86580a6011778bbedaf511a51b56d1a2eb68394aa299e26da9ada6a2f39b9faff7fba457689b9c1a577b2a1e505fdf75c7a0a64b1df81b3a356001bf0df4e02a1fc59f651c9d585ec6224bb279c6beba2966e8882d68376081b987468e7aed1ef90ebd090ae825795cdca1b4f09a979c8dfc21a48d8a53cdbb26c4db547fc06efe2f9850edd2685a4661cb4911f165d4b63ef25b87d0a96d3dff6ab0758999aad214d07bd4f133a6734fde445fe474711b69a98f7e2b,08203943c58210d3f82758272befbb9234fe913409a07944645959b1a6af2f4363abd7451232623daa8e65c87f34939c140608950fbdbbe83d66407944f5423a +83af34279ccb5430febec07a81950d30f4b66f484826afee7456f0071a51e1bbc55570b5cc7ec6f9309c17bf5befdd7c6ba6e968cf218a2b34bd5cf927ab846e38a40bbd81759e9e33381016a755f699df35d660007b5eadf292feefb735207ebf70b5bd17834f7bfa0e16cb219ad4af524ab1ea37334aa66435e5d397fc0a065c411ebbce32c240b90476d307ce802ec82c1c49bc1bec48c0675ec2a6c6f3ed3e5b741d13437095707c565e10d8a20b8c20468ff9514fcf31b4249cd82dcee58c0a2af538b291a87e3390d737191a07484a5d3f3fb8c8f15ce056e5e5f8febe5e1fb59d6740980aa06ca8a0c20f5712b4cde5d032e92ab89f0ae1,a24dd6a50333f289c175cd4ec185da9906e38c287a339dc4defafd71b2ea32a6f6aefe758e25fc8f043e806f1b2ee019e13b85536cd3efaa2a9b5994fcae4788 +a7ed84749ccc56bb1dfba57119d279d412b8a986886d810f067af349e8749e9ea746a60b03742636c464fc1ee233acc52c1983914692b64309edfdf29f1ab912ec3e8da074d3f1d231511f5756f0b6eead3e89a6a88fe330a10face267bffbfc3e3090c7fd9a850561f363ad75ea881e7244f80ff55802d5ef7a1a4e7b89fcfa80f16df54d1b056ee637e6964b9e0ffd15b6196bdd7db270c56b47251485348e49813b4eb9ed122a01b3ea45ad5e1a929df61d5c0f3e77e1fdc356b63883a60e9cbb9fc3e00c2f32dbd469659883f690c6772e335f617bc33f161d6f6984252ee12e62b6000ac5231e0c9bc65be223d8dfd94c5004a101af9fd6c0fb,cd1ed5fff6fa3d453872510b6b2712ec9c6eba9543734d88511ed475905e123ed6ef6624f220445fe89c257a9f9c5166a2772ef768b50e9290fb1d4761eca6c8 +a6fe30dcfcda1a329e82ab50e32b5f50eb25c873c5d2305860a835aecee6264aa36a47429922c4b8b3afd00da16035830edb897831c4e7b00f2c23fc0b15fdc30d85fb70c30c431c638e1a25b51caf1d7e8b050b7f89bfb30f59f0f20fecff3d639abc4255b3868fc45dd81e47eb12ab40f2aac735df5d1dc1ad997cefc4d836b854cee9ac02900036f3867fe0d84afff37bde3308c2206c62c4743375094108877c73b87b2546fe05ea137bedfc06a2796274099a0d554da8f7d7223a48cbf31b7decaa1ebc8b145763e3673168c1b1b715c1cd99ecd3ddb238b06049885ecad9347c2436dff32c771f34a38587a44a82c5d3d137a03caa27e66c8ff6,cfaa0eb1c9f02c0469eefb31a1a53ca1a4765f78ec171cf15da7d5c512817b8bf7d7cd7b1416b3de2bba05edfb0b493495ac2107a4b686d5dd8d6ad41b4aa3d7 +83167ff53704c3aa19e9fb3303539759c46dd4091a52ddae9ad86408b69335989e61414bc20ab4d01220e35241eff5c9522b079fba597674c8d716fe441e566110b6211531ceccf8fd06bc8e511d00785e57788ed9a1c5c73524f01830d2e1148c92d0edc97113e3b7b5cd3049627abdb8b39dd4d6890e0ee91993f92b03354a88f52251c546e64434d9c3d74544f23fb93e5a2d2f1fb15545b4e1367c97335b0291944c8b730ad3d4789273fa44fb98d78a36c3c3764abeeac7c569c1e43a352e5b770c3504f87090dee075a1c4c85c0c39cf421bdcc615f9eff6cb4fe6468004aece5f30e1ecc6db22ad9939bb2b0ccc96521dfbf4ae008b5b46bc006e,2be71ee9ace2dbcfd43d6d020c07244554dac8a2cf1571d0fa1d004933739e8978323056797e04c333f5bf187e64f1d881e502672567f204de0e73ce26e7190d +3a3a819c48efde2ad914fbf00e18ab6bc4f14513ab27d0c178a188b61431e7f5623cb66b23346775d386b50e982c493adbbfc54b9a3cd383382336a1a0b2150a15358f336d03ae18f666c7573d55c4fd181c29e6ccfde63ea35f0adf5885cfc0a3d84a2b2e4dd24496db789e663170cef74798aa1bbcd4574ea0bba40489d764b2f83aadc66b148b4a0cd95246c127d5871c4f11418690a5ddf01246a0c80a43c70088b6183639dcfda4125bd113a8f49ee23ed306faac576c3fb0c1e256671d817fc2534a52f5b439f72e424de376f4c565cca82307dd9ef76da5b7c4eb7e085172e328807c02d011ffbf33785378d79dc266f6a5be6bb0e4a92eceebaeb1,6e8b8bd195bdd560689af2348bdc74ab7cd05ed8b9a57711e9be71e9726fda4591fee12205edacaf82ffbbaf16dff9e702a708862080166c2ff6ba379bc7ffc2 +# EOF diff --git a/Lib/test/vectors/shake_128.txt b/Lib/test/vectors/shake_128.txt new file mode 100644 index 0000000000000000000000000000000000000000..f0526fc9269465152072d8d6aab1aea9ff0c74ea --- /dev/null +++ b/Lib/test/vectors/shake_128.txt @@ -0,0 +1,258 @@ +# ShortMsgKAT_SHAKE128.txt +,7f9c2ba4e88f827d616045507605853ed73b8093f6efbc88eb1a6eacfa66ef263cb1eea988004b93103cfb0aeefd2a686e01fa4a58e8a3639ca8a1e3f9ae57e235b8cc873c23dc62b8d260169afa2f75ab916a58d974918835d25e6a435085b2badfd6dfaac359a5efbb7bcc4b59d538df9a04302e10c8bc1cbf1a0b3a5120ea17cda7cfad765f5623474d368ccca8af0007cd9f5e4c849f167a580b14aabdefaee7eef47cb0fca9767be1fda69419dfb927e9df07348b196691abaeb580b32def58538b8d23f87732ea63b02b4fa0f4873360e2841928cd60dd4cee8cc0d4c922a96188d032675c8ac850933c7aff1533b94c834adbb69c6115bad4692d8619f90b0cdf8a7b9c264029ac185b70b83f2801f2f4b3f70c593ea3aeeb613a7f1b1de33fd75081f592305f2e4526edc09631b10958f464d889f31ba010250fda7f1368ec2967fc84ef2ae9aff268e0b1700affc6820b523a3d917135f2dff2ee06bfe72b3124721d4a26c04e53a75e30e73a7a9c4a95d91c55d495e9f51dd0b5e9d83c6d5e8ce803aa62b8d654db53d09b8dcff273cdfeb573fad8bcd45578bec2e770d01efde86e721a3f7c6cce275dabe6e2143f1af18da7efddc4c7b70b5e345db93cc936bea323491ccb38a388f546a9ff00dd4e1300b9b2153d2041d205b443e41b45a653f2a5c4492c1add544512dda2529833462b71a41a45be97290b6f +cc,4dd4b0004a7d9e613a0f488b4846f804015f0f8ccdba5f7c16810bbc5a1c6fb254efc81969c5eb49e682babae02238a31fd2708e418d7b754e21e4b75b65e7d39b5b42d739066e7c63595daf26c3a6a2f7001ee636c7cb2a6c69b1ec7314a21ff24833eab61258327517b684928c7444380a6eacd60a6e9400da37a61050e4cd1fbdd05dde0901ea2f3f67567f7c9bf7aa53590f29c94cb4226e77c68e1600e4765bea40b3644b4d1e93eda6fb0380377c12d5bb9df4728099e88b55d820c7f827034d809e756831a334c078fc28acb76b5adb3bff6dd659caa49cc34f726880f293bd3fc132027ae7602242064efec4d9d656e069d4dfae0b40c1d6b6cdb21d89d00e168b0b74d72ebb3b672b57af3e99c85da2f41ce70672cd0e0521678fc56eab6314a0b3af8b724376c01433d84943a73af703d293634bc24322992756ee261fff0d71bffb8aebf1026a6a345f2eaed505bc7e02498a3225fc91499dd5f5e30e386557c5fe0a88bc2337c80d7ea42b60622960230577ce800cb63594f619b7de31e026429b7648c5835afc00559fa4c7695d6dd9f7b2537a265e9af7a2c986f8b60e7dc6eb3c4d805a6eefb6fbb5bfde21ed7e41cfdbeb02b0bab76f9998ba1e52815a246b084efae7960affc2ba5c647e7cc05ef8120568432dfde1d7246473304808985600a1afc20b99185af25e89dc2ec6f4880dc79bad50dffcc9ea +41fb,09c9652bb968996a35e4814e27587131f53fd01ab9fe83758aceb8134fceca24c84f592cee43a4476e8853fcab7dafef7b60ecfebfd70dfcf587b3af358a286fe3713bf4735a84975bb65e3586c81ea716bfb999626dc973a495a6e0024061387d628e9e59dfd2b39c68c8cead665ab43f6d2625a10630761dfb60276ea97b280442462246c6d74a1960a8419a76a37b68449a9e427d6a7ec1fbdf4760847ad6f6f5a08cefb767caeb6c2382f4f3d0e49de4428cd4240635c9136911a82ff0b9c74569a1b7c8af72ab1ea5f2f6f6a45e3bb08229addfa916b18a74f7939c5130152ac8343a10694154fdc6e1570ec7ecabbb01eddc92ef0bb1b3db914c74cce399acc9b766fd7494b2ef27ac57b80d52535942d55e2dbfaa61cdf3f48759aa612ded11421855ad15ffab91462a56f873bbaf4fe88457a47b6c0594818d0a9189895239c1429ed8754eee5498f4d0fb6c9d0df0eb5316289e72c6aaeb8c61317b409156d4221ce6cfc7c5f39272d87c2d884f88f1b8b3c05ca9e235ed92c7dd7806cdada7166cc1b9107da5e6536d4ff111bf9199d6b72ac17d874323d68d76aec4650f1a4b067c50215362201a7f71116bf6633af08d712804b83f08a5dc7ccd4315963106d50453d44eff59c9c652f4a924be93c0b958ea286b0a4b597899a28c9bd5419c042668aa7b0cfcac4cdf9260f2824abf3ee79fef53ebe3c36df831 +1f877c,e2d3144669ab578347fcca0b572783a269a8cf9adda4d87782053d80d5f0fdd27835cf883036e536ce76fef689a5e7bd646a7fb7d74f090193b2390e614759b7eb7de915a38328745890b1ef1e7aed78168e996d7ac774d47f8f118b3e00a7bd151131ba3705ae81b57fb7cbffe114e2f4c3ca152b8874fb906e862840624e02bbf9502e46d8888433a38e82e04caacb60019222d433e8f2e758bd41aab395bf83611fd0c3f7fd5173306182449b9a22c4013f2263b41eac4d0eda16854961fbaa6ad04a89e72a602ac59659ec2a60c1d020bacc74a711d4254a2ecc5f8f0627b4f72ae130c50590f8b91c52957b795d12da09bdd40d41e3cd48e30e37fe5fd0b86eb38ab4661085ef515e70231a5f11f9dbf7433763b17d84f36bf42fb6d57789c6da2be8d205ead87bdcc3fa6ac85fcc3e70571ebb2ee4bbbfc04e71b3a88e000464608475c94c7d7ec1bbfcec980b166096e9bdde9192c53e350d3b92f3ab0fcef4e49e05bbbc18b11eca942c8a0776ed4f293b7fc9b8e7c0303a29a41de64bfebd2967875290d471640a914b0775cdff140b2b66cb099a05f5357c9d5e7f9f1d78b828ccd23fc7cd58329613de4be9869b4f2db18f5792795c34c43d23e2cc5525b4a363a9619ad57e42c36ec459ffae56b61717ef36afc9fbe5a72a7d23d435b2ef38a2b0e22ab5dfc8bb8747b6ebf17a63f6368795c6a16dee05362422 +c1ecfdfc,b5eb987e7cbfc7c9d140afd20b500e30f2f71188bce885951f22fbc35de40e7411311bc8479f895a069600483751295f5c3855474d65436b347608583125a6bd41ca30dc99cb342b72a96f8a2213e98a16bbb9e38a141b4fba68c1a723d1d578a91b4a1bafd03b25bd3cfb6d4e1e044637889c6d7af0209dbb5e10837d5c5991d2766012e7e86a82838b455b96d882b7e25c9072a66da22b0acb992fd3ccf5fbc28625b896bdf8d4b7358901d12698fd823fe09afb4f238631ee1277752f2900e38c7fc163381a01601dbde8cd30a9a8ee8353def6c610b50962d0ec1f4f3eec2afd7fcd5296e299c23005960c1aabf3408ede96de18e10fde99774b5bd33092639d8be9d872130c96311eb6dca82cc28a62c01e3f9c454251d87fa890284c06187f904cf23ccc62690628c590bc8b84eee68371d3412dcb5648a634f2359951cd011028e61c28a33ec4e31550c1c0e4123d1091e22d56bd587e73b7dd43c1b431d9547398c5e7eb6c682ea2fd758c86c1222c0d6ab236b8106dac19338e86cb8f6ec0fb607d70c938cac172c80079b018bb62939546505b8b6e146a3ad7a35f20d7f9a353f1e6535c23ae93ce8f78c045402e707a664f5918e6836d343240e6112efa29dfc4d18778c91e2b8530e4ff6e4947623d31dafac9b0d194e36c44e10b1a846935684f89adb44782e8fff2e3e62b65d18140f10d36cd817f835eb0c0 +21f134ac57,7bfbb40da3704a558291b39e1e56ed9f6f56ae783270ab02a202060c9173fbb0b45575b32348a6ed2c927a39a30da0a2bbc1807497ad50f27a107754af62762c0b9e8e62438101deca378899c521cb76c75d299ede19ba70e2ab91da9e39ebdc917355b6fe28ee254c0cd48f3a28fb51766fd58154c98a5c650a4e4841d14e2c8f5baebf5aaf2a2120279d2d33214a51ca30c4e05209bbd60106cc343ec867effc826cb32a2e736c4aa561ffaecb46ffb74d1b3fd36242244312067c7cea2ebbcf988e17742c3c80e8dee6d509997866a308c101214f860512d38e3b6c307c1ce779fd42fdcb9d909a2d6f9dd5a3687708905390479950d55e8890d10d7057863cf006034a6d01d77fb33c0e28b093fe3337be8416202dc866796739271c9e326199092fa27556c9f40d7e9bac869b6d7e8018409ea92af2464c58245e89556da3e80b6b4200b9e53fc80c93149e3dc4921a5fbe7df67f1d0b753cba41b75ee5cba78a89a2a85a46bbfaa625a40ee62616e68b07c06339717c81b4343760e97e2676c347d9625ece383fbb8448e7837dc704e2956b18cc506e3ba1416c936bfd66e9aed3a2c7b0a8dedadb04ab711d147f1c1c83322ec1e6f1468ad770663c7938d4032758462513652498cf124b6357b4f7c7e4db0d0c0c1b7247875cb6685e0567a8ab8cfbe9383daeaa27d224ca9c69c07afa929ffc09a03e165d72153ad2 +c6f50bb74e29,8d876c67a5cc15a544eb81e93b6fc15713fd1c55d778204eb6af7086af3fe97d12b4dd22c7aad54eb9c9e391b90a7c55abacc3c81dd1788895f17033d561060e2b9cffd47974f196c6907907dfdc65cdf33baafa7049635a70353d92a56a59ecf0cd291ab9b509d296356e8b0c91983d158db1568681de035e56b86eae32ad3e0193cb816bd2d111c266632ddf907bb276e14880571506e2c328a3eeaa9744210ebfead123e241a8c49c92ada79b718d970f0e8525a60ffe9074e73491e6f0eed1e047eb95cb52c47f6a1bab77017d020f016b64798e5d7fc360d5fa213d44e5b75c918c9ecbb134ce1dbe13c419da62326a550ad4a22e171ce75a369bb820cd75fde01993ca131f302be7941f7950a9969d78148fe7c45bbd22fe83ad0354194859f2f0dda1c92f2c8edfd3f7a9d8f618d0d02222442df41d858cbb7a46e5b12a0923dcb53587957ee07ed3e1c4a46eb1141cee394972726dd003239ecfe8fddc4e58c50359af3f89fe58f5cd5aebc0dc6b9d600f3ed08506256f18695ddc1e3b459ad75090f0764fa89e5ccec98ee0b387b5fb778620bda72cb3e2ae50de8b0d6b43f26e13a16fdf08bea752b457bf486ce427fd17bd4c5890a89af2c85b292c51cec75490c1c6de9d60dc49d3a77eeb7e19002150794234194115bc685e9981f88b0e1d9c6585f2c5f9dc805ff6c7636c1e06d9f5c018f74a2ce92eff6b26 +119713cc83eeef,e2a9537bac3c4dfc9008c1a7aba653883d7a1df35685dbf49abe5a7e93bf044bc3312a5e4d9743d72bd28acc16f64ac5090a71761d936fb9da7c782af9bc1f636d0e17cb41c7e0e9dfbdb2017ecaba6dbecdce2aecce3ed4f59324e74d58d434096356e567b35ac85f7ca9ab80b1c987ce70f998abe6536fe485a866a22cdcc37db08cc742b4612121cf34c2d404b37e8ea8d90ca9cfd0c8c6ecb6b44bf73f4d048a0fd85591d8726be6246df406472ca05d18dffebeab7ed991be6cd2940ec9b26f9c9219dfffcd721f5dd93cf5342a89a6c69168871b14934d4f1794e14b92ea991a78292423f5cd0a5d3454e55dee27077d6af78d87bb3fb9e139331abf326fde2fe1d3b1533aa038bf59bdc2d6333f968611a4f9ba66efe92ae8c099ecfc1a36be726816fafcc0b016c58b1e42d2cc7065e71abbd7cec1ed547aebf46f5dd72bd472cd764ccb3c4afaca540bdc27f52f63151e9fd90ad5bba7f84c9ec7e996692b842fb1a54d2860a301a9df6f357c2e05c14154f5fb77a86e4da9e9a039cddeb10d6e5de2e0a585b2701d48e8298bf71f5f72351f8eb3fba5426286a82abb75ea46bfc0f65a2e49567cfc970c36d63b2cc73ad7f9791179b1a0c4d84651dce57b966410ca23cfcb9bf5bd70d56f5bf1a7c939de74924edbfcc614113c83803b123f3eefce2c809a7a9fb01c709bc09b5f7632d6b59e31a6469d90185477 +4a4f202484512526,977735a853d872ff7c17c4a825afd9df886ac43387df245c37a608ac7f4e0ed015811167222000aee1968960174ee5a39369a23c5dffb4991ad247b8801de71bea97069ea77202999f8e8cf3829816ee598b00c4049265dfbb2b138b13ec3194b988242bc099248baf9997aed80e95b5f859d42b12dbd578fdeae47ccc2f8d3e90bf6e8d98afbe2f4813f68b6fbc4c18c9b8a557a0d87d744a4238d89260941030945538b2df07e05fd45b50bd790a0510ed4430adb3b7768df8c4914e0914fb00da09331f11371052d301031853c7f3c32528c0622a77c48463cd1cd96ecf7490f70f16e941cbfade71dd8477ecff1177b7193e456ecc42befbe070667d6f39abee5cba354b33a83602c1c17280d2dbd0ce597ecf1fec3b27810df38c2805d8b85d60994edd2c83f5898cc6623241f16c4c92444fb6a0714d8bf189aa5aec9d5bf1448805764ea0ccc8b6e399961dfa7cb9d8de8d800080eeb5d010bcacac6728e8de482c37270459dcbc80f496267377d97817149372a053b2d53209c2dd61216cc3aad29c7238d6b142d71a92ceee4710476c2a48fadb683b9423727ce772fce2bdbcf781c119fb43526b8eaaf1d10f21e586952227e29bae61fa2c7edc6260f76ab543244e538180cd90c207330ef29cea987f7acdfa028a78d3e93f11ea159b21bf3f50faeb7961874e816162d42735c9d3567afa45d1d8b66cefb58678 +1f66ab4185ed9b6375,1d96e0454be037d890fbeb776ce5c922bdfb827af1d1abee1bc8b3ae95453532d40c0b3f9c93e400ff70f6fbd4dd0470df1f06e04ab4a596b6f92bbcaad3650d60b940096260226913435c9bbf5f29de8bcc9721748e3f1deb7fae88741084507e1ba72a267c2c2276d8bd8ed284578b46ae81230f383214137cd7c190524818576f77b0a53c3421e0476d91e11bae79acc4995a24fd1398f6f67e22033bc381abe6de4e0563238fdc39a1b305fa9403ee35800432999eb3421c8cc17f77f2a544957afc2ce9496d2b739511b3cc52db118ee874e43e95fa69d7ef024931377af86a9448f3899dd0a87edcfecfc1bcf7c17d470c71cc488744f2b627626112aee465adde9c6719ac0f6e928c77b0ba0ae8a5ce20005c46768021438b611826675e0b94fdc7484a3854936216e2239650c794ef001ef8f9f4cb440664472445875d06c519e14c957d6fcfb73fb72b46cfac4548ba94b95979fe5feac07035e0fdd21af7e3b69228afb2d97f2a333a5d40a84399c6d4f5a7ebef9acd08d66c2781eb9085a42e38c434230816b90dd838a2f10e727ee5f58d7469b47fd5324ef53a88208c44943009ae7a2803d55760a6ad4bc6e961c8bcc7f7f5bd07da63709d85832e26772e01886b2d5b73ca488b8402c6a15d2aec605d154f9a41efa93601d26374d3fe8a5337e98bb7a1b5f0071d3c8bcb69cbd0b3683e7a494808c9bc4490 +eed7422227613b6f53c9,0c5db5eb4c5c83fdcefe9ef623596f96d2078c6dcc5d9b5e4f1eb5abbea23ed4478895d9d9c8fde4733933986c6cb4d03aac65dc7bd628169785cfc5d9d4d33ecc7c6ac98312f020b117c831b2ace85e1adbe0a5349bbe9fecbc6e998c6da1e2f333c105362506766d105f707d905cb616d8bd4b23ed5072e3f4d42412e3ed6c894cd37d8f9a46be6ef9a53d60254f4e9627625a3671b234664740c24bda608a44edda0cc652b843df722ad38b9fd7f122c89d8df0a68e03fbc0320bba016a0f3c36fba6278f9c2af9bcfc9f312ce55f011255332505fcbaf0adc512864d633cc0fb4d81bae980e9522aebb2a07199b238592e4379537e045ccde8b0fc44b2781421dc657938851324f5fb6e1b7d9548a50cb6c02a71b16dace90b84ef033594b2f0a688f6f9719a1008c1451353f8895ae1b7b16b27ac94b67f390d9586b7ee31af7b6e7d110813a6a4e01d4c94f17a1edb0633a1c4f69de184bf4315dc98bd453fc22ea11f8ea5f5548c5dc09d3f186b40c4783aaa4bde1a8f2aeed007a0be440be16649111921f779c7e284b8326785d87c3df06a05b3373e88526d9e8afdafd8e673d1876711ff2f68abadb7cad4545f0dff64bba98c86d7422c4dfcfa8f2bf7d72ff0617bd076b4de0b457f5fa2b881fca5722864ebca11602923bd0d6b21a9d7101ed1f34ad480f8f73e2adf821b2b259d6dc535aa94d3cad7158df14e +eaeed5cdffd89dece455f1,055c0a829125f20a0dbaa6106de95579be4188363c7d7e3f3efc40aff360298897968b250b8410829cddce5edc80b764a5aff16fff1c3d29614c6bc4c80d095f0c73443e8fe596c86c83ac1d9ba69847f6e64ca643ef3d7010c5f9944a660b14559ff27d4a5aa9862cffb67b47810d04c736bf842450a7e5239c5d2c61087888eb892b9ba495ef7031ffe2a56bc4e8fe4ca92d908666091d40f8dbadb0186db30af31a4bcd3faf962b56271a4c5c4a02c75f11d13f3dedb0f57ee554b9aa47b19109d3cc2ac58d9c55653b42bf5cc3c8143481146bb54b6284077e94a6b2daadccdb3e85fdebd9003c12fc62dfd07dcd9ce747893dc611eb71580f2affc624958e1c78c1554706a1582359f6962ed70fcf82fccddf9fbfaf0023fa1fe771d358a5d69e6f8917ec3425543557aba96d40303c5034fc7a873ca12d485998a856db5724009b884590c284b685de5677c76944d07db1ff855743587374d9f0ab70136afee1d1edf962d1ae9d9db036f28499ade8386e78d2d54f8f54a85ef0d771750a5d51511439ecfab2a486fa1cf77e8973e977bec186ed45f6c49845e9e19502ccb3cfbc4f2576d9d30a003f8c00dc209ee68f147cf17beb5e5e410388a0cec4643a3ba24b6532cd73db049b74e4ec5db415586095378297a60c2efb70674c473488385b47ea9e9d39952ae9a515e139b20d76a30e65f09b7d701b3172899643 +5be43c90f22902e4fe8ed2d3,9f8f1774fbea8ec70d0661f8dcca2953ebd20fd73bfd74e6bf037b4fbfef17177f1a02e919fc2b40bedcf640be5f191d6572bc57c0f5ea29cdd413e8a97bc24bd490b221fa452594f78136c68b21984daea6b61899c386963ea6f078a9a903f05506d0c5592e341a798dc46c0198c039fa2913b7f7560ca6a703a6a86b18cd67adb53a13295ade0ba89522cf98263094b362c0635890cf4fd14d0ce5deae75049c5af37edba5c0803b26ebe951996018d66390fbd37ff9f24fc5a7435513d3173e26e1850ef3ae729eff8c38aa18a41b97e11a7ac452445d7ec617b8e0894153b067eb380d83209d05bc1b18b41272ecbef29472ec90686256f0cbbf9f5089a78d853b50772e494bf27fc0dbd3492fb16b8aad6d7ae027d41aeb633cfa3ca931cdacd968c1f24684267abf45534f89a362c1195f8cb31f1026d3d554af70deca0c5fd3973f55f20218056fe70b74a3311ac394efe4fc0130b5bb092b33ba3b91e2288815bac931c5625297c2f3180dae4b824409b435842aa12f7f01a185f699fdb2c6a9d42cb475b0493eb6759fd5809781560626fef4a4522ee06a2d3fee7ca2203eb84b717a1a825a2965d2c1c1cc0402658ec5d2448961f521ac318fa4a672f0f8051ae59c05394f84d25a1f9e27b21550a71ec285c8b2f86bbd8fc0da09614bbb635f905aae3d401e7969ddc9fe0837959a6749aa76fcd3a70920766662 +a746273228122f381c3b46e4f1,e73d11ef660c0f9b35ce16c12c58051953c229ac29229fd38e00abea6fc7917427d30952dc52ff435a928f34bf14ea4edf960c78a5008f4678727bdb4c591d47c0d3a1abc314cc475e47cf68b243a0f193b5a0fe06613c2715829e672eae605905e6f52624f971731aed8d1cc022cf166c7391e249626ffc578f2cc48f89784d7f38dd14012151834ddfdaa245922a27fdda1465a8056c511a72a784095496fa0258007394c193ed705588607df19a6452f4e5c890fe648339a597418ba2e7e706c36d3dc493a3a6842f39409ce186222afb81eb044081c6145ccf8b0e852dc602a2b7031355911a7c1b16ed74e8bd6c4ec8ac56511768c008ba25343fe5cc7ac262c4662ac803ec1082a52a0530f0c8431f68ef9f7c4c7dfc9c05228e3638b7a26dcd9fd28331f7b04bef3956d6c49fc946dc97e935a76b3b2b4decda6113a9dcab916538520b28defb05db55f2d168fd6faf678c6ed335a33c5da6b575fccfb64ff2efbc5bcf2500f006e2f3dfb4c60a2babec8240143c779a3d9753f107bcf9981206922757e04fc93083ed10a77d5c603efff8592ac3902e2d07b72a5c75c71b631dfdbf3997744fd63250d2ebbec2dd3bb10e05fbb3a993831d62a6c03f403e30ea3b80f2c8a3b80473c2d2f2c51b8b5563e46a0a57a02c4e73da0491312865e15c4251d3db6516a51dcfefb1167cef7021e570fdcbf862bb5b81b461e2 +3c5871cd619c69a63b540eb5a625,b28d5ef1e7cb85b4406fd3349ec1d5f3727a9fc9c7132ef6593779b0d3677512d5f10a6022df96aeffb4252159cce5562008e3e6bf02dc91a1da479b5b091c88b65c80f4e8d83279dfeccae72da723842edcb2ba02c4e3e9325804a04366e7fadcee8bb2d678e31928d59f2f0a546c742d8120694f5f02810d5bcdc320855164f60226865bdcec1437f262d6d222d1cba8577910847b75d5c4549bdddca32c3768f1b789cef62f56993cb72338274e5740062be3ec7afff53215e894600b35ddeeb1aa1e9962b22329fc41a5696580dcce450de6c11f92332a3fd959ca5b367b9ec156fad0318191314e98c1e2f82fcebafcb6523693a0c633b82251aa5ab4801b1afb004fb28de7b790e65f50e0cc85181fd914c76d915c1e220a53070d73bdc1c1bf2d0d9a3ea45697c3538afab5f577e09483195ec8b7737236491143d7ab0f81228031cdca4ebb2442ad5af92caaec92cc1f72e32e573d57bb48eb58453b0e0d680b7a3d46b4a5716b7756f8f73bc876de181c443c082022c7a3322059f83aa16fcdff5e078af2f85562f0d60632f4a76b29f27bd91301b276cc414af7c7b0a20fe0d0540dbc2b7a4f6918b37bac345411247f2f7ed5aedd12e72ade756da4962c2e19b998ae1a29e0daf6379a45adfef26aecc80d9ed1714582f7d40de0c3bfadf4a35da62ed4357b88c45227810d63f33be90529f426b6af513c1b43ba +fa22874bcc068879e8ef11a69f0722,d7da38e9032ffcadf7cb93c9969171a0493525f8eee3073dcc9afc83c704843a8173ef5374c4d564bdf246d41af6edd0872e5ee43f5d2c5c85134166f9b2ab9203cfca96a405f934f3b834299c954a3d30a2cc6737935db8c094636d659d8a3192ac8925809567719faf13ad40ccbe7fb1099bf4fcf415817b32ce923b1ad764b88e6fa24a9f0876c84d8b6fbb0346a87248a99e15c528d8efb167f6f1f00099d67f5b879fe8b7943726f648158c0356985cc48d92424a44b906b14eb8217b5c75d88e50311007c1ce7badbd9a48eccd4f8936b81d0c2a76918a06e3d2b2936c5a157d9375058162259d7d0ad25dba2490ae1babf69176b394fe2f00dc000eda5a0da049153c077d51a89100dd5b8ef4ec3868f5c9d8e4c1875f292c4fd22c51ecffe30aa40eb4ff50fa00a61f6116a337bed4d13b52e12f06bb4f8a88060b77b9f1300b5d895f7314ae728421ca951fe8da4be55723ae5533e59e06e0bc8d828603cedddfdfb9d82506141e1d90ffcd65403a94586c9259a6cb18550bd22b241112dd9d866f12adf2b009740ad71630c35b16e062460c708831df28918a5dae14bab1ca781effafbd267081a7fcdb418417717756f34bd98a799b02ff2e275193b0c1b721c2696ad732ac77af212da45b22f27d54d1559a1cd7b39a49a6286d305dd4a257452e930d5f2c3cf16c6674adf81be1d8231db6c1b8a9ccafa6e98b +52a608ab21ccdd8a4457a57ede782176,3a0faca70c9d2b81d1064d429ea3b05ad27366f64985379ddd75bc73d6a8381045c2ae2e9c723462ee09efbb1c2a8ed7a0729d0d9b20f03bbcf55a86859ecbe80c8cab60bab4c5d063dea224e825e38642124ea705327e075b61d08e0b49dc184c5194292bb4a797cd24d924cc64816bf911fbf4985130a59d68ff0673cc8c4a390ad593bebf16419ff464ecb3fc78c160b6db9f755a5faa7a9365b58ce7f90465af960c48b771699e0eb227f5370387e6248e17ee192007128ee7ad3d94bb9a2193bbd4618afb3a399cb2016ecd5f9e41af10701ff1915a6e091f44f193b0f729cc4af5fecf683b1c7dd2644d7458c45ffd635eeb85c79e241c1f4869cda9e77e80f7b878c24e9af77d22d8c7c0c406c8aaf50f57bab68fc6c3a20274b6bc353e6d60da40e8369139b4508dae96dba12dca9d80a19041a3798b252fd24bf2be64035cda6d95d6e570ea868eb8808193b3792897a2147396a47d27c81d40ff4bf9212ab239d7a789d8cdd545a98b447f6abbff4bf6fe631cf2483881e933c1e62a21bec503a6ea60f3b179f9ca6852daaba4ced7ade5e35e960463fa4c3a32f4c580f03cd2e45f10e32507fb2880827f56bfc5030a4ca94635edb134580715a23c87d755fd91b1566d1a471f310edb2c12aa11f2d280683f43155d67e2ec04ec2cb2cee53a4d00f77aa73dcd6cad61d1ab7c30a627cc75f83d48bdf9a76ab456 +82e192e4043ddcd12ecf52969d0f807eed,3d62e50de92bf40637d481cedbd22f2dbabaeec0e94d1f99f3ef2e68b1f55d97ada13d2372104d63946e3eb7c50d7e58f5aa0d5730e4366bbcb6cd332aef45da6c4e5efffda948e4e7e6fb9c49b46ac954cbd53a925c8ebf73bc4fd53ecf34f0d67026136e8cff3c8b8661c9d5d19420509b47a19d4c848c83b791d1f843f8df7f69f736a414bb9075b4bb6070fa094a0095f101fe569e45e4e7fdd2b3622b5b912c21be28208ce90c7c342e6de485d7344dcf3e89d9c71f320001c52054ead0ec37b4cb356ccf80088dfd2eb63823210ca3767abb13623c9baea9be5ecb8dbb8d3dc97c88f6ba9c4a9c443a00e9a476fdad93ada9f64d12803dc7fe1c7126d23430cf680f94f0b218a06d5fb4f7698dcb5c896070a03d5daead54e3624ea55e966ea64d0714aaf9e17fef5da0998f6a301b20e988579fd98831649b5f71b67ce86f65003ef5f160b18ca218d446c6a18f341282cc89e585894a2cdb24e107bcebe66d3265895a622e51b617a57020b29e236df78271b1b87c5ffeeefbdf3f36eb3152687209929c800b9cb4a29cfe7aff4302c990e60cf61acdbabc3cd7f98bfaa55bd61c7d97b3b0a935e254d1d46801fb6a02567de9f75343b612f95dc555340bee70e61ba8b3e1d7478d77d52c5f395301178d42fc3dddd1322cd31ecb8e236f1748260f45af38a57aa8dd1796bdbc99ac14d1801be95a08c1c6c61b70ae +75683dcb556140c522543bb6e9098b21a21e,d062c8f1218f1dc5f3ca5c2ff3f33847f3f74c6a40a3c2c6c15e316b6c9fb36a7c1da9c25833d25c8dc7fcf4f852e3955b4c9246f4ccc3fb9bec64990e5d84730d56e5e4839ea23b258be3660014c49645a268eb03bfd932d879b2260bf4c6cc4ee97c8bdc9c02e609372d1fc24029193475992a27c52c20f1f821f285bfd1f4c6ed944ee89a96860364e44971e0b6aaecd446d868c9f7175c7c23e980adafa860e690eba14b71f7eef16da6017ba3fafce89628f64662af12bea0dc93222fefa733434a4778f0f2f5c0da2439c5c577345b59771a4991a56ebcac98961e7ef8ae3f1f8062c1268de1e6ca5291d4d7f1c1c4652a49aea180a5685f9e6c8ba01f8e3be7c1e5d40a9a0cb8661fc77f624f373c90da1876218a78be6507c2e999a25fe87e5f334ed83689936ad06a7f031590ad13105dcdfde7554d42f85bba80a03d3c1459a25f07e93b77293b48e8d831ec371e268e361454ca01539357d4c10255e3db0576ca7f9e6f4ae766822274a6669ab218474f9d0cb5b96fd0a55d4f454c6ee31e3a040568cf77f97d5b8c4fa783aa5625bd8ea951deb4bef186f37663ae83b2cd27276a390d730efbdbb798049b151e4962b5b17c4739f9127b87cd5acb00c4cf04295acbbf53324c3c539bded5e64fb4a3bc08076f52eb0a4bab60138e50dcfbe48765047ff4468404820088485974f4c4fd8546538698ea3904795d +06e4efe45035e61faaf4287b4d8d1f12ca97e5,abc182a9d28b3e043f887c072acea1e0e6c26a90bf6fe9e1bf925d20100c3f8e46dd5634ce077f6768450626105210bbd36789feb64e9e0a0eb5007eae54d2431156a6baa49d85b31a716b69336dbcad7bd43f0c9afd4d62bbe69d5ea276f01b1b39c637ba13f9d5cfd637fefa3d80706896f47a58d602166645aa5cafbf5c280eaf765a47f4981a9673edb27089f31314a6367bfb333e4a937ccc3e704218696f998a3269518965bea095a934c171f78979d6ced938f8fb3d6cc8f61edeabfdea038dbf7159917e3f941c2d17e351390ab77678477b11d2dfe2351180e305025403fb826255def38aaf0ed06bc2af707337dcdc1e5a08fe03e9cd043d5a152ef37fd4893266abc1875dd28e2c7160700899d5f39df5deac2e91131360922f2abb6bfc49a8fc0b638cd13b6037f99bd0d72a56346804e146e8b2889ad843813dacb56fd8d9909a989c82064e4838d4f01c19a8e8d1b189eb060f642ca5cef14a2f361c1f34d968fdcf37d7837e3aa9b866935095966109c763c8dd1cc70df91fbe7b5ac7fc6433f5db4b780bc9be4ef862b596e08ad32c201a07f04e267ee2705245c48918b71c84d78ba48af70a4776523d37a8b90d53ad45465daba2b48ce0c09978fab5f4a0cfa6174d55612b7102cedb7a591eb6a778bd41cf3c289d06e86b4d329f71dc6c3be75d7e661e7e9b5f4cd92225fb5991f73237e2520b9aa604 +e26193989d06568fe688e75540aea06747d9f851,bfcbfb531c1689126c2323f9294c1bea280013a2315a596ada34f022bb6d3d8a699ba8e2c54ae3bb7b32c422c727b41678f781d652dcbf1a40b8627b56e004aa5f1753b1152920121b1a2d8cd5e9ca02929be7f2eb433baae2fa41830f146c72a12aaa97e8f8b863749b3026e99e0bb7e0a937f003604b470c913546e73413a86ee2e9892fca2a7839b20309afc1fc9a0ef14478ce0ccb5ccbe37469b7dac3a7b74b253ccf2ed085f9a0bef3759a4002e2e67f81d953e9bd53a4d39a267cc0d262e5d80f50f8b87d816c91a2c64d798784a5677744ee02b5da2cf07d79282bf8c791433e0b3e296c38ad9e0162baedc89f1b368537103ef797ae54e68aabd23de81b760689839341155930796ad7a49702113f737d0812e20b850c38c3767421177b39fb60f3fcd0b81a50a8624e57b676203be7c8bdc66be9abb5a1ab175705dbf65bdf5d119f331205aa74e6e04c766e408d0b2651511cdc513c75c6e326220dd3da4a12c82317455d450f44f5f1e55bb7a91bac1c34c1e405baf53fc8bcbff7ea119ca53f6ddfcb5e4f2892b837846ceafd8abf5bbacf09a3127685b8b40a2452e52ea6c006f22ec7fd9df925b939570096e5e0ae74d67e46e5402dc94d4a47e460d718c98a4426f3e68deae1a4e509707a20b136fccf3c26c8956c14312bd855f0b3fc6a97cf1c7e9ade4a4907a7ccfe6eb5830d17451378acfee3884e8a +d8dc8fdefbdce9d44e4cbafe78447bae3b5436102a,e3a05f6157ba90878e8c394e09753a69d271c77b233799e0d68a32209f0cdfcd5e3f41dc9109f836a4c45043e7eabf41946fd05922723b0e6526e5b99b10e89b3c4ca6ce5a2c6c431fb14e6cbc7986c4ca691037b1f306f8ecaa146d3e0b5736a53a2be74e1704e65864c3acf042459bbfbb440ec73ec884d89aee7525cecba651429f2cd092e4b3bf24aa144873eb870749564a52ae62fc86674b0d9fcee67de8910dfd812ca75a47f8fd0b2393e616fe8250899c36c27dbc30716c9f5fa181ac6a6065b73e3ddb94447e22eb858e8d1e12c24b80d99d4e6291a0d588508319c5b54e616270fcc504d5925b0ecb12f211c3b63286383498fa1a7b4b1bd399934dc6df4b7a6be0f42934052aae7624ea4b6837e07eba9ef2d066a911cf71776a2eea41e04122e5afa6f91865dac64686212a93cce21305d925606faafabf7c6d27a8a91c5bd24730e2ef0f11a9467f7661736123e7b8ec29b4acabf9aed239ebf3c79f4c37f54db912916eba3a91ad6362dc616d7339ab457629bdd0fb97b8ab605b9fefb65e2e70fee3f2a29a3d6d487682bee87d5c615870cb615adf197aec1e5ee35c242149db2d5dcdd598db5981a5ec57d31c9644cfbddc03fd2f5f8881d2244a094ff4140d252e2505089337b925d84e3ef632c96888e0fe5c23b1d67a64ff3269a430db1927cece798ed159daaa3b69819fed596eaba5b6bf4fe3e688 +57085fd7e14216ab102d8317b0cb338a786d5fc32d8f,2d81f6711464ad6b3de6f985e02d52c30ddb350bcad92fc15df3a67290e4d74e2eac52ebf9479dc223770d6481b1a640784b6e4a31ea840692e625bb2d400a5c0c7966e5c4ae2a4cd0a3204d7db266745d64122f83141fddc676b57713e45ca04139d49bf42edcdf443b5600668c1534953aa95fcf4bf9a8ee8b52680c9463e5cb5aaf09f18eeb2885a061daee4c3ee5dd6e824bdef31a93e092236f91b8e2ade094e718f8e203e43ef00a843a2548457d0ef2315ff91e5221011b874cd798254fb4a2e4c65405644e0deac6529ef59ee52f2496d9b19485e8128a76548c212d667637213b637919186afaf827a1a0cb5f584f475723d7d2eef4162e05f9acd221c3416e7e88d22d4c471a05eb0dc70822e912942261e9369c0d35a672acc5a48c86d6835ed99bc201a02ce40e86e0c096b2c34e5bca207e5c5c90cf86bb3ccd7fb89613e53ec90245f9d8315d1102462ce10aaee4608101aedb37857db22accd5b024ed323151d75223e6cb0ef402f12ee2905869396ef6ad09f6fcfc57310bbe46ca7817021df43fbdccd9d62158afa8f20300f8fa17b202733438c1f6b0f1d1fb1fc8ad8414e864debbebb5f96367135224581b9b8e54e64937f708a2cf07573a42c45444c37ddb1287d4d27cd3a9dbe476eab7c39a37722bc4a1345a34c168dc93d48bf719e79f25ff112fd687b86c20c98533ca4b0fbc1f3d4a6ca469e4 +a05404df5dbb57697e2c16fa29defac8ab3560d6126fa0,cfdda60353118cb298a271246886e4c7f976465c1b65fb51e87f7e5a9be050b38ba3eb23f52116f0a13ad802e12af81a0626a51c17e9edef5cfd1937bd774b4e63b19bf1bc61a4ed23a2acf45869e4efe9cfcc8c89af6861e4122515e2b5ea8dbf024f36efedb7e6d6dda829a5e45e21466f4bfc55596748a9fe0a61b3b9b9ab2906008dc3b8bfb71761eeacce68fed2f0f0b380661831e4754175ae79e9c093db7f2219c39cc36ec72ea39c65128d835127c3808de4f3113e9ce42bf1f86250919c8907e21b0905d960480d9786ed5be6fea4ca1017708e1a153846ae80f8c81df6118de9c25de8b72473e5a2f40980417259ca2d3fac3afcc42e1d5ddef03673cc2d9a7e6170357085a135b31b6e8334d331e222055fe01ac3dda56472572cfcd908797bbd7b8da672e2f9a10497e423ac9e84c17c81f81a944952c7511fc34c5626471b85d80cbc618a68dcc343575219999f28d01f732e76dcd6b056f60d0a9ceb822c1bb772f55bc85fd122a0972b0c0fe8b88d731887656036a4a4278d0f46b27b93530d3dda7a689dbbb73d9de39a6f96082c8d9b9aec1fcef64c7434c38b132a66b3e2dd51367eb83fec5e6af8b18a151058d092ed381ab4a86cb542f54ebf5b0824df726b91de3bd088cf8d1e55eb1f2c834ab5ab9e25bdd0a4445c692d568b6458bc29cedb6cb5c5e7c29f16e1b95f22c2752fe1175ffd41f112ee +aecbb02759f7433d6fcb06963c74061cd83b5b3ffa6f13c6,8fdb0bfc41e23944858401d837455d17966db41f4b9d2bab52e208b2e32b22e1fbf3cd83f13b6b99f14bcde767b286f7d16331fd56db42a4acd9c370bafa8c99f91a5ceb24d52b52cc657686163057471f2d8c982af779b05ba1e49114bd55bd59e1dfdc69f49ea96f771fb4f6b67d1606e6d652368a31cc3f7418427a8df6fff8e0b5e43efb6d9795d766017284879aa199b6726c84623ed69288633a34d3742d20f1249e1c70370bb19320627598d208a7531ea233e772cf7f3994c06ffda7e63b85bef873cb89a83499174b461b36a375fae6d5779e23eed9d6624de2ef309721c428d8a64a2fa7abde1bb56f66f04225e30501aad9b9d9078ccefc8f721252a232b82d984dc5d1a03e9f94630b4023ccc4ba6a47ffbbcabedd754bb403c25ebd27d445743e17def49eb16a75b25921e49373a4a669a3b3c6bf5acf72faad2d9e0aec3723fc07e541b72ea98dc3e7903cc89df00f6b20f147302d6af18fc94fba446d37f5ea3a49a9b2942dc4926e06f6d385409753e3ed1c9e1672b783e491635b2701fceb0f133c1cdf9364b7bd55cf1ca89de5acd13fd7b94b3ee849e789454ec39474636522fe41ea3504ce134610d675d5cf299f3e94686f1ad9be58af227928b9033823ca7195e6856f72008b31f4ad7095f98b4a5256d2a676817e02e7839b2b875b59ad020b97bcaefd515b061f49526821043b3b1a1f29b61f5b +aafdc9243d3d4a096558a360cc27c8d862f0be73db5e88aa55,64c80b3cdeba491185a9ed7e0b5efc031e36d4f22f9b99a30237c5459c7da37b16296a7d2e221b314b47f524a01d94845f7b1f38d7d52da83860e576e8910365a217ebba342c7e26a350ffcda54fad792756eb1d87096f0625d6b237e77060e350b9cb9179db967bfd8c63e15aaa24336b8314b692f027c99edbb757e572b0da00b45d90200bd778b396d18375d77e0cf32e7eac5003794a010b3a1dcc5968f59a0cedd4b2ebf4f0f151e5d8f88c297506295080c91ca11da2cf32447245e0667d1d4fb619c514014adfb7733d972198ba4846d57ee8d9ff73d543cb32cb6822996d04b08af13df3a696df38c29b677ba6fa481a5a22d2611b8d721ef11c4361a3205f75c90b7b439b47893cd5c38462646355800ee91dd9366d8ca3c2ef754b8ddb4fa83397faaee9bb24ee4fda89532cd7e1f05cc4d52754ecb59dc6bca363d9e804b32c47664be92a23023bdebabc70dc45f15a708d5a0ca7e6f461c825d58784748284722df182296103d27a2868c06defce8f0669a173a9ea7c9d7ba1ad721a48a7076ca7e005d0be0c6f5df889747a581b54674ddd18a3002662a8d1f1373ccf9c0760b008a805e737660ce28be2db4fdfca40bfde0357615b8b09b264b9a9c3edfb70f967bb520b09a76654eca9fdf6af19b298dc3348e7a5771f3c3e2abee576819a1c59881e6b8fb1db1b114d746e90ce6f9f6c09acb5c46b03653e +7bc84867f6f9e9fdc3e1046cae3a52c77ed485860ee260e30b15,50102cb39ffbd98f3499ff53914870cbe4440ca8b6d61b79b7e6481b943d8e532947d06a5e04a6ec8e595958245088fa807600b1300ed4de47a2e800d812bada538e351dac64dd3043e7f655b411241c9031ed2765264e372c6f59435988963ef83098452029761d43e4d329cbbd04825719adab1920dbed999c1c82bc9a362ab6c0de15a65ea6e7eaf9b75fa15543910e7cfc214f25cafbc771d9e641fa65a6f52fa97ce428910972efce8c23ffb56aa5ecca3efe08e12125e3c88c652c89765ab1b72c9d16ae3cf4c8a413aca5675c18439f3909bc8da92ed71c7219a89dcdbb3e07a3a8d4145b2d65e9525d3e583c70589d79519793f463de6799d682e24e83e91a96e866bbf0bd72c041dfd44ff345fa83c24c13ae0689de442dd01c85179e69fd9e07fe2e2af1f5d1b5365fe16c3d9da5f1d83a6bd71923252371d230d20de8a76a810ef29469a370cc552bc0fe8329cdf85905134ba4f7c4f77fc83bef84f7560adcbbf8d384267ae24efcbd78b8dedc130ba739c5ce96d8cd05299c50037b94f9b48012bf346e079c4599c2dfbbb1f3980a1800bd593acdf5c7e355d3cc44ca412a3565fbd8b2a9e8a9e44667979c9b261aad8ec2b201259a2d7e4d5da6d5de05ae61760ee8dea70ce5f380bf3f1620b3c67d8ec5dcd47eb14c078eff113a952b7c77b8e832dfcbb5e7492f090d8d4a9893d222ab77bee17501b8cbbe +fac523575a99ec48279a7a459e98ff901918a475034327efb55843,ea2a6c14acaa13b8ce15f4363206525a44ae834d82b000efe0438a4321ec1eb6de31390bb495ea7f067d4a3fd9be173981076bbe4928f2e9173f4a3158dc4de9f940bd4c8e76c2f886c5d4c07a28e6ca1b35a4c31c153323508db12d63908ed758195cba55b1b8c9687d219e4b053849d5134d3bdd8d8b0adb2c02793677853d6fb496813d72dd415f9ee59b6c30aebe1be2cc5fc3d9b4d4456ac65be1970e5853f87c57bec289e995faa9fff16aab0eca5eee8319897d24e6d68f29b9a8937a0d98717ad61370e25c0f0b68974d41abf5dbc3c05a26c4b5bd4c60f5d2f2f0126675b785cc2a0d0bd1b2efc2bfd14790aeb55db281535950891bb90a6a02279852bc07d6f03f7c42b4e2b4da0008e6ccc0a8fdde198159f6a2bcd516ea80d48f8ee63580abf97980530ab589fc2158705eb0b5015d6b92d41d4d985661bed07cd1e43595c1a9c902f08976f22e01825cd2c9970a2d09fa0ac68c3428fe2b4957e528deab2d1324db176761ed9a3cefd129edaa882c848e994b45d7df77a489569b1720c183902a5a7e8116223dc3cd0fe84826a28d2266834d0b09aff134611203d8704feb7f1be1736ec9868f4f638598bd530f6d0daa795ea85c2954dc188a27a14aacbe2ea7cddf85b3dc9f2df61175530127af3594ea39186f9a18348f9d60dd2b32db207e5398f59dba345511d9798613d66318c7f3504a431a0cb8e9d9 +0f8b2d8fcfd9d68cffc17ccfb117709b53d26462a3f346fb7c79b85e,3325661a828829064e99adef00e99e8b9b08a53a4c6b008fae8db1a833cf26d83f3f8c613defa9885593996adae75995dd196893de7a89718296f12611b3315e22218b8e26e8124ba7604b4cfe5f427dafa90e78d0b5e14351d52f9b8eee659b54e07f1a8aa08281b2d8672cd405359a681c74e84b1f6f6553ed9b5184d10eb608b37807e5a824c3f0e1126824acf192c9767919f1070e77e2f81a1b5e5ddafdce09de562caa1470bc1023e0edb8901eb9ccfb813366ef60decf20d0beb552e7883ea4063383b123d94c35f5d00d57827d60dfb3550485b75d2235400a696684289962c2f71227c847548961b4f3631c656acca90f9ab21547a99197c32fbdd410fb7def62d1b293bb0fa36921bee609a6d7c2c9d6abb287eb2920003c1e965bdde75a90a41518855039e3edfef1a3dddaa192fc6198aba7c0631949f140291fcdfb8d387ad4c19f71b6ec4a6c3f5b22a0f8bbc0f852e03953057ceac0183569815625f566f050ac6b14bd87d3056a8fa5d99e621632aaabe723189b0e87dcd3cc3d29a4e3acf2ea915a8a7e0ed73af0bb905a4e8b0599d20d699d2c971bbe338c964bb735f72540d8dfdc069f950aa13c814f46866a32c3efd0ec5d28482298bee0cfed7b8725e64c75ed0a35d8db157278d169849b56aff015603e1006c168276d96aaa91ebcfc6c6890d5382cdf1c6c5a1bb6a3c090f37aca605e9e7459ee +a963c3e895ff5a0be4824400518d81412f875fa50521e26e85eac90c04,1acb385112f369e6d00420faf1291b1baeb428c09017b647d7343dd2ff50870cbd47601efe679ac0724dc63cbf543c87df5060cb0f11c786e97844a02bdab528d3fa5890dbcadd9eddf2de00a639b0ffb8fb2cde673f66c54bd554e737b5f370f53823b135b3257af3394408a853666bb00139f147c6ec198a5829e8a5f85279b306a428dc2579e66e1e18eb3c4971644dbedf4f99bddc9e4096d0bc915ad1f72d522395c6306d047c399bb1c4877bd8278fd29926c3b74aac5414e9e0936e01daee1061c5cd243c380ad802459972d3c2df479719a554cd9318a8faa3016aa6ee057a4e57cccb698a4b0ec411f31d11f0642053880662eb3e098f88f74c65225669a4cc8f3a04e23f6e5e40f9a3c7fc2b4993782d58b27f80040dd94475a85a14bc792c6b86525d359cab32744e2bdb4890a392ee847c065364bfa18c85d7e328e5acd9f04e6a6542c8b734a3e3795898d7e48ffa8686cc12497883092395239a55e56ac18c4d63a9281fb8aeca2c099bdccc65cd239cbe597cf5d577585fdde3f4b573a666c2d1e3c611df94c9c519dce3110c33ea697fc1955127c91bdd420de5eb667933a49e15959eb3049c7d265cb638bdfe3d6425e20dce650892e0fc346922a4277c1cb1ade59886f8006f0d0074937e852a0542b5a111cc4acd65f3b2580670dfd41c0c9ee3ca5fccdd7743d131eefba0543646b31a9eaac4cd30de +03a18688b10cc0edf83adf0a84808a9718383c4070c6c4f295098699ac2c,3c7002a2eced36b19a3d71464f86a526d0f2a92ca76fe392810616e75a25c223f06bb1ec3bb5ba0d00a51958789de67724e1d57c4806f6752e610327b4c84e9c5e815f8765e6b452376cb1ea5e3151c21e789fcba16ed05306c53f2f089b21f2b5590cd4b48647caad444450a1a60e1cd0bd87465c2a3c2d25b15146767b6dcea1a8aeb8b717410eebab139b041fbba1f654a7136b7071573316b3a7e5bcf8929cc1465ffde55df7449c7068eb1d74c0b12418b50046fa2197a47f4cd15e7d3702e260c188cfdfbd55cf4332be6cbb157fa8e62d003d902433719b516c59d31f8f935ced0f010ee66e8e48448fb9bf3a855bed9cc604df713a689009223f858de44137cfdaf2b194131b84559a98afd4f86ab13d7a1df01e414a10768f6d48e426ea64a0602bdaca1ca56c903940a35f28842922c114f25f7000d720edd40aae30f300abce4fa5a3b6088b27377d7767762b220da383308d00a43e3b9eaa1899c3d4e261eb132c41029ac024d781001b56a1127226c3517a015782097d754233d83d3237a04754f3f22547c4321fc175f9e83e679b0ec7564d942d77f64ea480780242cca0ba64a8c41c7e94e575cd9e60c229e4765c8bc993048a81eb4d9a7f1f1fe449abcc1cc5b5cf500d922a3dd26d6abc62085249af7a60271177b19f2d150495ff3b4e8aa0414c58fc1a1979eb9938fcfc6ab3af97b9a7c8c94d12c821 +84fb51b517df6c5accb5d022f8f28da09b10232d42320ffc32dbecc3835b29,e22ac7fe9db19147b2dbd586d6c5837a5dd3df2346ea61dac753b0371274dc110612ae3db350eafeeb89bb1179eb9d84a0590b243d0dd9baa00796030d2782f0163e85328a0aa06974a7321e66649281db8c506400310ab3e21243f4c2cc5cd8b36ac7c35c235305e6b1585b33784897d82a2d31f664d963ada323a9c922a61d9aa5bef0b90c6b7183f1fd0ed4128b2fe0e12eb6b461176c52aebfd608c00c7d79799071ab30da33ca9aa26932aeee0d585905bbc853e80aa746706faf7be50c90c1fbc18e290505277e9bb9bfa9c767e952a68c4f93a044f62e066e61a0ad301bbfb921c818690bf6d116c6cbe7df174a7e57e22294303820494757b3254ac40404a7f4a6d1f9624e5cf3a770392b2df9fd1ffef01ac9afdc74442c0eb6f11e1eabc59270b4da6f2d6356e79607d6462c08a6f29154bcadf4ffd6e20ecb700e188e523b3930e35c8990afad2141ff71912adb07dc00d5bb78d7fc5590467815ba9f46ce4f5cad34910a574687d8f7fac2f60b34d4c3ba6d25d3e5118b851bcb73c1b1004a623f8ddc8a0d07ad21b45f543ca8e705b3864d1c4fe024a19ed5fb0542dba0c39fe0a82d83266d9c124e61ddb107d8e0ab57c970cfe5879daaa7170022408f7a9a228196c5c7ac614cb98cc276d1f5ecd79347a41d97360a19e65681a5b75e78c7f79addcd401da6de7ded3b1dff1f746806ae03f496ca701c8448 +9f2fcc7c90de090d6b87cd7e9718c1ea6cb21118fc2d5de9f97e5db6ac1e9c10,fcdead82f39cdfcef99c1babb674a9a8e24ac594646c31d020a4cd2bc2554afd78c4e413f7804fa1708b9f4000fd860e3070f2e1ba9eee3805352aad655b4b0a728f2d5fcc43243825bc0dce33ca716626dc76e920d72575e26ddd7110d0f991a91200b513aee23ac9bc7043a152ace0cd0b49181d2bb6bd36e93c0b627aca9c6ab6c85ed70ce762429c8f262708103284c0a792138f10e8568efb2399b38a31055c1188ba59344e6a2b73d5c04aa524056649844d1dadcd07d35df5d851ebaffca5703b80153ea627b1badfb2885f70f786d34f5650fe73e3690a8a96610059253dd3abb5fa7c54cf6e77695d24a6594077ee4d3673f9fc56c62fc7f710cf872014c0a7de8b1ca6ae8cefaadeaf5f4d055ff765ad418713f2dd08eafb5e16eed9fe344ee8d4388fdc22351f63834017b539e3ff143f394b5b74d06f65e96a7a3d028fd14f6c7001eb7ad2dcfcf4b2447aa173a2ae8edb581b5bbd89e8a468fe0a38507530b9795da3bcec6ddebce9eb3132ef18c9c2a8b936a431c8b121fa996ff9ba5ce522986b678a5ec99a103a91cf33196e08c82dc65e68aed238a9316a73e71cf5a67ce440b93bdb845b3a60539eccdce41bc723ec9a14ee4e082f60c0be3d5e50dfc8be1e86a97ecee9d88e2bb2a3aff47fbd6d6675d81efe0708926b81ab314a524fc745090162d2ac723c4326e0f9e16fbdba2b1e9914bbeedff96b +de8f1b3faa4b7040ed4563c3b8e598253178e87e4d0df75e4ff2f2dedd5a0be046,f9a4d63d82c6efa5b1ff90b26510ecf06c53bb1c3b7427b64c41de1fa03bc0728085c972e94a7fbfe5f3150a7b9fd8477c6cc1c250dc6fe017b0d0668adca12e3c1c9bdc78247529dd1f69198bb0a371072f0225420afddfd64ac1f7a8f06fefde803579491d8bf61d6ca84e985b1ebc7f0b48822b8bda9cf9aaf75b7c33c5d360547a34c68114e8a894d658e4f27e3c137e1b2a203293c015975aeb49ab315d142024767836efe41ddcf42458c5b5238ade07302a0edc28a5e4f686d1f98372a179dcdd2eff78914aefa492c05aff03a5ca3e188f611ac24922cc28ac8010572f406c0ed1bba849664952ae23842454f60d7f4091d0a4bc2ca6c7b3e1c7dc72659df6a709587bdb30ffc3bfe6391ffe3d94084d93f2186024b9aa7eb52d5cbe760e5e3a49496a2239c9c71fd2c18c199441f7509108b8e32bce086a110507038069f99477dd9f75efdad8ed861c38c61e2888f7ba3e1ac237a2703bcd64f19befe921259f88d225b9b5461f070297a28908a35d78bd66165c8ca532ec58c64da1988e39d1237588661933320c80b30c183126a10222d6c2deba60a55eb6574af1050ab4a6253817ef90a1da8b42633b97f792950364d1e7c490a5a2bbb8c3412289329d2b0a644f8a447c5ce8a420c402429b94f4fe11bcc71fa2314d4692db47ec2eb58c32513b07b7cf7db276d1ab7190232e7025f805ca2ff9f27afec20e +62f154ec394d0bc757d045c798c8b87a00e0655d0481a7d2d9fb58d93aedc676b5a0,cb65eddd9ed9fbb19e03ddbee2d0eb5f0c2610f0ae9f89c50a463a303c3cebd64345f39f1ce7e04bd5aff16b15d5ded79e717ce07ecaee9b7bf1841b17a1266b5f92f2a92d6bf964e53c3727c50fd9418c1cdbd06f0f0510fef3abed7b4cc31534e885edd00fb1316617d6433b249956e1565be72e5483edc6e5e90b470cb2e089150d3b3b70fff3227131e0dfa12a2248c064dfc83702fc462fb2165cafdbef309edf1bb785addbe17c6e6de702ba4be1229a7ab7be122306e306e92d0de7020fc1cb568f5eab5f0a2140b010587debdd8404dda2c4d6e728a4f1a55182e018789cfe03600301641d5de2dc58fecada9a9e1425dabf1f00ea013c05ef3d64113ff351f10916438c6b92b6b6bc5fd3d6cab43669a1c60ecd39829c327899885edba19b8a9b4992805916c460e5b5f72f53242d206d2b3da3a976784fc40b6a4f0fcde7422453565398a040f9e5545c482efbf9d3110100dfb04dbfb24a94fcf3fa05406ee9b7e677ba0d3a52032aebc2cba54dddd8cc0900c90f48cb9ae107de01c3218f0ef5bd9db9d7df8e926e60a384dca5299610413316bccaf2821b926174efbb791d465f887ce3020b908b07e545a386283e17f980639e81e71b0203a3d22ef233b4b2e593fadb04503f0cfc5ead74075767228458b1ef4c5da77d126d6db7eaad6a2bf5fe9c18e562afe5671dccb60f8ddef168375be45ef2a391556f +b2dcfe9ff19e2b23ce7da2a4207d3e5ec7c6112a8a22aec9675a886378e14e5bfbad4e,7a3e2cf760d677ab42125bc78324a8e42866e2c148087f92ff27e149dcb2ecc3f3209d3000583d96c60accbb637714c4175b0db1f982a99a7d121774afa37adac741ad9cf72bfe7175f591e18256a95a0cbeea06b5cace02c7903b1448ded23f3a7ad61f9c5ce0f61235520706667e94062cba04f735cff813a5b7501975bb7de70747e619efad4d548cba8fa818a0f4b59f8974429075dc492e014436ccee77ff6947fe3702659a14baf89fdee45dedcfe4cfb1d45d59ee5d79dde87c187ad1e04f06217c41c35f1185e63b625e30e67c5377a11909612dac6539f72a6bf46efa1674d41f00fc2df3a603a480517894b88556971b793fe3d14e7699762641913ace9460a4791487937fc6c94b6a0a091c465a3ef24ec55acc8be486255848dc7bace4a3f860c7df0307b70fb33d8164fe3fea9acd2bf3484baceefbb4d24d77bde756cf7614bc2f4d037e16943e08437695dae204ca08972be843f59d608325c7d6d64b136148887b49fc71ade52b11e80576facba740d88993dc77df9b7adec54a6daf3149b21b9d0d910f2eef2c39ab3304f2e5656df646e551bad1e4b2baa3c7ba7857ca2387f516a0de8600f14b653055db1221a57ceae2e4ae4d3102b60bee67a5456e0e2c0e5a0a2ec249a3ad11b533005946bc6038a98d129fc696f48f05f0914913d45bd7626046addb5ae3bb4c4e1bef5332767b49d8b576953832 +47f5697ac8c31409c0868827347a613a3562041c633cf1f1f86865a576e02835ed2c2492,0622ecabcdd9a8c2bc20fe0b9b39ce1a6a835b5181327794db2e1b40070fd9d89a498d242aaaa8fb5063d5e2af45a1cd04cb28b96edf844aa37c7cf6efe39363aae56e1e6c1e537cf8e58c20d5af57aa0687978e8ea46936defd6a6f3486abb9e1f04b6128710f75314df64706190f4aacca8fa9f4e1008385e641f40fabd228b9dd421e30184995720d49112fc429165aab6dadb0cfb6f986e11866d138dda8a5b4656b062d73cfcbc8b8873509fea2820e150672ae7c01eacf5d9575ec6b1dcff1f55e6c2dca4ece5fb4a6f1ec7bd089c24149f1136af9018920977519f390fb7929fe84228d5ecbf8fcd5291791cf7fb6ca7208350cfd5d7a761cb8b6524de5a85467dee4202232218ce6b39e5505ef02452b4fc0a87c32c9b9c9b8bf5fbd5755313f551891c5d11e26fd57b65a42def3beb07c88d117cd168335a7749b97b1fdb04c7ed3d2aa1a2db4e70226f3d8b87acc19a1f34f60bfc1cd0ea1864c5a991ca21c72c163d0b6ba5833d8efc7aaade5bc6d335e62852addab38831aa04dc4247dc7e1ca5e0b2da9ecc5358a889ead2f2cdfb538d900face60aa53228145644fc4aa2be363655ed6ccc47d23ccaa0eea0048887e2c670ab4ac85bc71d1caf7a1c02eb3c784fb189ae756ee9133115232a92105b033148c1c9806821beb545035a1359cb4290b736d3d14c5f990ad2e4fb02a1780e34db86fee3bd2a3a9fd +512a6d292e67ecb2fe486bfe92660953a75484ff4c4f2eca2b0af0edcdd4339c6b2ee4e542,0d126808ed2ac9458f8002cf172966c8daf02045518edbcf87fd315f31ea781c73579dd9be6a3000f7d6e5c400970d4b6731f90d75ca01e55ede430d8a459a98c71d9ce16bcfc334bfa1ce8e18a70a50e3b795b810fe3273b9eb7de8d9b7175f97c32fb057678d819b1134ac30797f6ff7b622ce48616436ff7c38453029dd7b35e648c14ac725eb49067de2f0dfced2cb89ac6988ca178e72d0d19ecc481748be17e8baaabdbadbb84d0b2f2a49c4e60c00018ecb61d2cd25d8841157d9b6ed74c70c7791f6f88ce61b5fe0f28ddd2b4eae5e2a71dff495907fd883ccd522ea1dd55291a5b274b4333eb62650d55b0ce61ec1761cb2d5ea39c712365309537918ebac6eb8a0be3d19cdd0f32fca2c32fda5deb68ea99ff5f7b66ec4fdbc2f8a829a4b3512a52044a7f7c567532376d971ae504601841c8091695533266d14a14ac46a7370372195cbb4bc212ef72a18f7962eee6738ef1a669b663b336cb324ed808c3affe2f39514becd5d654715c85f3e5cdbd9029c1f589cd0d563aa98c6fa99769815922ca7a30f13f55843dd952f5724ccdbb58a269da7d066a548540c23f4a740d82f90246d193c22a0cd0601c2030e08e5f0a9ab7b468de0530f50b156c38dbf08217b63b726b85227a5fad8bf9165e76b02cb00cf7ddfb03d9d38c882e81e657fe5596b66e777e672ff416a3155d4e2ebeeac5b49a8ae3851ab13ba +973cf2b4dcf0bfa872b41194cb05bb4e16760a1840d8343301802576197ec19e2a1493d8f4fb,863dd45342e1af41f682c138ee8daf96308b1973b3740cebe9c2999d4190b05c7630edc87f9942f31a089712bf2b705f1f3d835e25e51e8bc6d5ffd017a5fc2f30ecfa82c6b9033aa336acaec58fa5e0d4f4b40be4f60b0ab303ad007336b5d08989e635e92c7c0f22cbeb049bb4761e786fde0e7aa378f6c492b3357916de530e7fdfab45d2116b3137b0ba6bbc5a04313757b26cb3467031d82a98025e628f0a3bcdb234d4e7faaebd7f7f4e94a2c4ddbd947a3ad2e66f7d45e66c89aa037b956af67d7a2dd696d231d31159b5e217ef4a911a24b4c012ad67152c9a1fbf85bffdef6523629baf766e22f009b6371a4c9473a42ac84e2be89d2698e668373a01a2e8edf60f9c7d83ba415ebf8588c0812a4409a5ee205d794ec5e3b5a3688d8520c98d516c877f5448b6cdfc1a1df445008cee775160096237efc27fd32e1629835b6663601647aade495a117c025e03c80d8dc2f31bbb7cdd4d2c50c7987e8003ac04226e5e051e8d2930f93c143f2804dddb343591ce11fe55bed40a5deb0728eb575694d4f62b7e7901e3a005a306961051a0219fa49e263e85e87b2880ce9c9cad37f5dcf001df265fb448093cf08ee592c66d2bdd37907d6492b05ef24e96b08da4e55a289e6a2ccf65624257a754c133b54db543ffce3d11093576357c75d09e0e5d18d95d2fd5206a1f5750030fa789b83a81b6e81d98b1d360c179 +80beebcd2e3f8a9451d4499961c9731ae667cdc24ea020ce3b9aa4bbc0a7f79e30a934467da4b0,015bb0de6a28737d365353e9f0052edb5272a67f83863341a7b798ca9197a051039987e22e6ff95f31ef2be455956f7c5704fa4108f600db247802712ed268f35b27ab89ad0116245783dc7be9b511ee4a0388a7ef9a234e1161f69910d3c0c76738db4be4480ea0e8bbabb081428410c34cb54968f7dbb8cde3336317b6d813a9a859e4ae69bfcd855d261ec89a54c510c4dd2f68cd5d607b299204654f01de5a8158f2e2bbfcb20857f029a579cb769b3f232a17f546a653d04feffbedf3c6875db3b1905e73a4c7bb383a6b825c240f047a2b6f6b944b3c51362dd2dca46d23cb502a7267acde99a8e76e63086461eec706612452e240f97873ca213f9fe6a72e66d91bd3f60d04f7da7cb059258875f0d458120f0800bdfcebdffe2abe784189406c9bb63f3e807be88c72ceea54a55244b481875dc2c736d899d9a928cf02c2b5176d8ac5b64bba7d949c974e613f41b5ce1b687b91dbeeceb66aeba8ce8799b3484d9255d54559adb01d960710d198fa8c5a18eff47e3399a8e2c386d846bda56e5d9e7c9478dd563c50d840dc664d105ea92b62c6656e2ccd31955ee7c438256b2275036deb2380c08d26d26c1e638f7eae12f5e8539f74516f1340da7b16a4ebf8adc93f690ff39b39c612d42f8d4cbd764b2f7cecd12250527810c490b0ff8a3991e3924eaec03f67ba99759232d00cd58130bb3be9235e14772462 +7abaa12ec2a7347674e444140ae0fb659d08e1c66decd8d6eae925fa451d65f3c0308e29446b8ed3,9ce519a1f37b2c70c6f641c076f787e8ab26186efabeb6ce18eb8e75b0a8eede06fd78d326ebb3b049ae484d6af7b1daead737653717796a34de1dbcf900fc59b299756398edce063c5654205c5fd268aa71a639c35e35d4deebfb8dca17686b58a639f0da50e1a7938b47a466d03de7041b5192fdaf036547b7f22d5a23f8b6ac48e7c67b7372af0e358cf73d2fa922ab3ce823a68b95bc3a543ba236e413a3cc2b3181df4d3649474213a0f8148836230bab4ad722b2a3fc446c395977cb3875c06c0031e807c24be7ea9b025248f1a99c494472cf417a803c69b3ff8880c0d364512166f7e34f9837b5c66931017a4da3e63998d0f402d5a75212c8042712ae4af4b4900efe6c9e1ec5aca07fc230e6e7834a5a865f2da71eec9054427945a913c5345506ee32e6aefe4ea3e488ba07455d98c94b5078e75e2304f2e85dd9dd4be18f023d1ac6abe5924c8e7b8219e3248f14eb4b78b6c16fe2c3aa40b97566ad3bb89154926baf8820d7e8e4557f8138edab423cc0c800dbaec892482b6155422d2ae3c1e90dfc96ab800fd35df97092ab0a83a40c7b925514cca3833bc1ff6b7e25469d6744a117699c481e4edde082211e9d94a73a0c29fecdb271e75ad038eed0c7d5b856c1768c4b9749b25811f16b1c408c1f2e3f2bfdcfc8e5a329b675418abc4809dcdf2a3c4f867ab9e0c0ae28924fce90802715fd5424e783c4 +c88dee9927679b8af422abcbacf283b904ff31e1cac58c7819809f65d5807d46723b20f67ba610c2b7,648167774b09a9fbfbfd351051d18f9112d63b066beaf5070d3780189658febea0a4581dafc6948ec1fa96f0364ef3d1f2323efe5294bd76c28632fddeda51079e9bca5c1efe95f76bcd4593836b9c64d82dd6ed02ad07622bf2b1f7f0b0738e0e3929f49edac321268c78d47d853390fdd8f1bb29c6df469360e75e96493dd4fe5bb2d0816938d5642b87f0344fe4186ddfcca06643a691bd9272f407d6df7a1633550f076042277c325152c8673f3fd6c980d6bde4eab43018e322dd3647da183910cf4bcd3464cdfe0d0283e79201553bf03b028fe6f4862953f865c6108bce672c4db5503c1d969f87bdc310f7b78d9df08ade46f54ef718083f90e60599e41cce34110befbe315e8a0bb91d428df35af59cd4f0c8059b6ed68339307280b05c3aa490b7900c13c3e12f1a4a3983db5f0a620179af9ef900535e32146c8801c750080e363a6a67e4a9037fc4301fb28b006822598b38dc38dee16af9a1127518684bfd4a0920c7267ad52a447cbd6178a0329d4da146657549cdced7ecf9c2053541943afcd508f677549f364d7f793a7b7bb8ff12b7594ff768faf6dd77b3cefe97715fe70d8ce8468aeb8266cb09f21285a001ae13d0fc8f29cf8380685034a886ddfe8d3ad57329e6fb92d2a079e5af01f77aefd78a29d294a6a8e37e20159408bba4f10f6fba5d54d4c4d93b1acd65d84088aba61ec29e122efdcb6e +01e43fe350fcec450ec9b102053e6b5d56e09896e0ddd9074fe138e6038210270c834ce6eadc2bb86bf6,be4ddbad9be9abc823f65a647910aa06265b547b0234c1af6a12987000f710016295ea57cc5f30656c56a66f28e85c24567adf2224011191a045c23d4491e444114392b74bfbc60858e719a67bfdebc135725de961ef7a81ab90ce4192107a5ca84aabbfd919bcdb8270e8079e29eda4c22e130a1f046e5a87a4f2cdfbb4dafae337c1fdb5bdd9deb321704c585d632cbb7a0438427a86ccf7575856b535b2e92a3872f2b5d3c945c16f3547b4779e5798bc82883e850585a7fae200a47b68ffbae54b17238d7cb3fa2c9374942523584d85f1485969bf61af5e117275fad27577daad38ea3702b5dade3d27b4a2e2a66f88ccda568d5d4a11e1dda5d8ba7ed9cbdec91487c19e1f9a57d59afe374741d8fc9df32b3bb60f8fabea1eaa95289b43d1fe712a50b73bf68cad16aa25a1dd95d80a0f174061a01d9f18509589188d186bdb991ac9a41423baf9154210ed6cb098d6844699f07a388eee76e8dba801276f6d2aa7965065f3c923ab64620da1e17a444790f9b7b326a3579b9a5ea5fec313d294f97fc846d721945b6adde91b66454ff2f2a81cfa19f6b45c51d07be8216fe7c1e052a24904b2ec2e9929314cd9da48450beb8ffed8c499816c078aeb2a1b52f07b5917dec0a7beec2b83f778bfb15ce413c9a4307ccb7c83c879824d0cfccc4b3aecc519326ffab353e37c59bb99ffbeb44a95beb1dad25843becc51 +337023370a48b62ee43546f17c4ef2bf8d7ecd1d49f90bab604b839c2e6e5bd21540d29ba27ab8e309a4b7,2378c76e867947e94c0383861e60e659401b1177bdc1133fbdfba3552b458dcf1ba41c825ed8f41f7f8c8986b0a47b25bfd5f0294fdc707c8389560be932c582e2b5c63cd85754e9d96a9725c12ad234b887fd5e96ccd52507bc564f59e2e0a8fe89a444aa3542c2b302d1b9f8f3d41f1c960e1867a4fe64d5f6216e64199f3d66fe4bd22abe7b23ef97328f5fdb5cd502a118000e0606d31560c2cbd4cb7ebf90a0aa1826cb32ac85156b678198d225f4d58d3076fff881d9e6815dae811e7a04191602e4287f72c95a497c2dc47c925b7b1b78bef334b153566a8b46ac8f6cc0765300e970b12adf8e0dfacca6a59092891d73ed55dd624a2464509fb5610be2ae0696097d5645cbc9e992b7f1f39005eea0ae0a8b55ada1f28ec2a544266462e6a3ba97a000ea722701690007ea7fd41fb3f83bf85d5e19ab140f2ffe6dd70f199b7995997eec43b98abca0e7902442d0f14e7e4b288a83f8e4f5287f78f57a2df951d62bdb9b9cfdf3d28f0374bbd3b4ab955244ae444e23988721e5b3c4f536a80fbb7114de769d587600c92539d92c3b2621c679064693bd9893bed3c353af5347707b6586912d6ced5903abb41dbcd5b4bb67ef2a315f8bfd23073d76715e869f474df6f5c98e3c1e65117b1844b03835187a6b2ae054eae51797de704c7d4c88a258efb12d1fd618d9e95c4ae37ea0f54effe216c71a0f0514bd569b +6892540f964c8c74bd2db02c0ad884510cb38afd4438af31fc912756f3efec6b32b58ebc38fc2a6b913596a8,66c5253cb16c479b2d7b63e7db76ca275f14319dacc1d00c08a7e170d97366638949fe0fe252448d9749ec105105e8bb483224076fa9204f9a4585f150eaadd931b5d895edd8f2ae37e30fd991174064f7cd93b03434c22a8e5cd27cfe19b5d8f4bd405a9d182e4d7f9a2b009c68ef4798a469662e40467ad626fdd0553b0ee86320b3db087c096b54fd9f367199aae4490f796bfe72df10756bb10e336dba6305b686a291d1097fd9dcb1a629f38d2ed30b87a8f5c1ea1a2ae384bd5f316bf112f6bed8ddc50b4e17509c3d194750d02ae76fc1105753b07130861e866e89b2df9c498c87ba2b9161753303e0db34fa6a523a6bbcb262d3c644d1ec88f9fe1710a65290db69ff847d850107e028ee6cf444e5aa986c98d3d5585d66b4fafa1331ff4a6f54eacd712f39fcb234f4d4cb8c992d079471a269cd3d3f733f0806a78bfc30f8fb3aa97f2f2ad36e8ab019d7e833855299ebc91ca512fb226d797226486153133858649c31ce43308e6e0499ede16af5fcc5cc9593a71beed6206063d471a79f65e640b8c20a131fb15439b9f35d6053dba46b2f2682281e9572720bd3945cac603e61e82bce2144a19dc1f254179e011d096bd9fb2caf77bda529bf7f654118d5db1cd2f973f55ec7b11ab616e731955752fd8347718cfdb2cf6eb6551c449ca601299166dd7e10eba447df8c29e96436b6834f162d7987d9f55b12 +f5961dfd2b1ffffda4ffbf30560c165bfedab8ce0be525845deb8dc61004b7db38467205f5dcfb34a2acfe96c0,0128b09a01815373846eb62037245b4bf522303fff74a76b0ac17482ad79e0bb2686871b1916df154a7506985f2a3a6d86074c988c2fa255ddc266cb8effde2d0275bd3360c1e920595e185eda95b54a0b02d6bad88f63509c5b816cd375c0281d1fe29f11318bd35e4afe0cdf51b9c7ccea285787fa74a72878dd3878565606f4889d3454913b0dcb7abc4b2f08fa3f2aaeb6856a25185a00b1be8a8bc7a9a34670793923647ae426bb98c75e45896d4db8a990d2712401694e202ef2e3f33df1120ea9e821a874e67f37648a898ccd759a1db6fa6fd5c14756538f725c468bd3c0b6973a7592c8cf0091d347174e8d954e5795d360c4de1d0785fe45b71da884659c98bac3005e5bd88817450359b51510ad95f16f08ecc64cb9842f0f8ea005315f6cb17c1cf6e01ba64f6847ebd4472db1affcbc0e7b7f5ee8dc5dd18b148bc542cf0987e294aff2edb3ee60c8aa4b8bfbd42433243d55b4b9e00ccded77251f789aad74681880ac765b21e01d499553acefa48456a7e70a9a39163c2e089f26c94733dd63eac1d2bca7082145402fd762665c3f72760dcff13ca4e80f504148144054b714573381c7770c33e07d3a787acc072f3c35b9573fcdc352cd87be8653618d159f78baf16ecf6f8e316a97acdf4bce2c65ca1bc98f257914fce9be62e899ca3ba40a98a57afc3d63b0b0b92b69fd0df0451d7f34297523a99d58 +ca061a2eb6ceed8881ce2057172d869d73a1951e63d57261384b80ceb5451e77b06cf0f5a0ea15ca907ee1c27eba,fb206d80aa1d2af8ce64890d3fa84600f80423aa98447792f732fce4716e559f7fd4338bafa60937781b68736603b7a86f1688a2ec60880f6a90781dc8ba3d9b329d662de842961ac84d8fc876449dd8c393441767206188d561af59befe6b91e365413a5f357622a670e22e730183358f9689e70f1b0d09ca9924903379394f516003e37b800602edb84912492288a2e09b46bacfa3f4677d2b24605a584b3ce3174fcd1ae4debdc99c9a75ea7f4e770e2ef184f801e4d111ee5b11950b29376ff19b30a50c4df93a82ec891a321f9a6ea1e0f96eda2fa0c2fc176d5151a6dae7c9536ab17ba47ae31ad69b2af9248e5236aa58d7b864202512e5356da226d5750ce12c062733bd73b7163812efd452ffc4cdd8e5611996e23cc0a5824c5ae4abb59a5dae40563965483b66437b1e75369ff6ab31abfb34581ccd00ca76cf72af7eca65824a46a48fb88c8aca06cbc5d3785db3ab78bb1174354c7affa85086444d3ec92538cab178023e46c7e5e5ea2fee1a970f41d374a73fa6d477d224f095a829ae8e0835d197dc66d1dedab9427dc085a6a95c4f065cf656ad1146ed0c45ee7bcf9f6185358702685e9539c921501e3338c2a6df7b5f25bb248e567f2173164cdcbd8daf0130879ca8362cc6ca28f531d81d607258b66d589eaa9cd5a22fd7490b9a01cb6c0958c2820ff832eb94f0e0ca959b93dcae56a4fb52981f09 +1743a77251d69242750c4f1140532cd3c33f9b5ccdf7514e8584d4a5f9fbd730bcf84d0d4726364b9bf95ab251d9bb,eb74359ae344b26e3533947e26cefbe809935ce7ce0d597d1c4125542ffbf1783052e0f90a402d7888cca5f96ce9d874c600b2e026ba4e79ed427f3da96448beef4701c27ca31860790156e93b12a9f42929a8f8d9771ca3bb59ace00c4732983997dcac1046e574eb9e5c912ad4e3813001c86c91b6385e92dfe92ff5cf90652680392a33f6a1937a77df9b9ef2556643308029dc5b5fe23ac9b567e6c81d0e909a279e58215d22132ed83dcf743065c0cb16eb7b991f842125254bac71d80b64f205d799f698f0fdf7ea19c9234357c5838a0bf6add176416db3324cb07b543156c38c2ffb0df104fe3884a6b8f03b0e751b3824fd097fbd3557c5b9c962e9fb29175d1f20799ff6ad9843e1a5b64b2e69fe39f77c2d1a3fd3adb8672d1771fd6769c54775df97b0964e14b2b326362d9792c0c4cdc37aff30dc3d007ac62141d370f0984f4b3d16b87fef8028792ca92ce6620952d766474566c1e96df672f3c335bf2949228006be2b1912c0ddfe66ba6648eb6ea8624b5dbbdec70bd0a745434dc5404c7ac7dcc94197f8c48fa381a5e8e7ffd1c35442c04ee2378d2761b3647a7637423300cc09910b9a4ef90d4992a8ff8faa3b6138ad01e7c3c89660e963bb2422649589df53d5181479cd55a55b1b2807ed120fa9777acff785225129ab1802ec247c48db4bbc284768bdc155d77b072d686462d831491c80752e13 +d8faba1f5194c4db5f176fabfff856924ef627a37cd08cf55608bba8f1e324d7c7f157298eabc4dce7d89ce5162499f9,691033ab5c34d52acbb6eae6a669cfb53c39a8020a6ebe9600aca2d9a2acfc898a0dac7796d46e6f304550a8894a9e1c516a1a127287d4ef74e9a403d326dabe1fc548d1aa1323c2ac40938708d7872960e11248235d2aa39cf3ed88a18f8a2fc2794174dbd4c1fb8c686b37641c7cddc565683f0d173952d2c1dc26ed5f5b806c127114910892b1ba0b0eb07c20aef016ac83a78c152b4c4ec41ccd8974d93e686f52ca8656da6d85bebde10c4447005278630595379f57c529c4ee94b8e4100ab930206d9ccee8811fac2f1b5425b6f0740fbaf2f8470a9985b77865750326cd60f855f4427f6ebbaa27cdf0a0444ff278bc22a55bca5f90a58b27d792ee6e8998e94819b673b725079c95f0eae473f62c09d9bb1060ee9f6263950150461a13d758b8da498284f8f355259b2b332ae9117d2a35e0e09bc8ca406c14e8799ccbf0592bfbfb40c1da7b5a88609d71093b46a91fbe94c78a6c9ce9c81a2e189bd832dd746ce19ca3ac9f56572fa691cb506cae417f405088bbc6425118bdbc0c99f97702029c177d8ec398dfc19a98ae3a3f86ae1a8122adc5952b1891269c46821c1561b21e4b47f36904ff7c6814c0a08b6045400be72ec1e647887e27af46ea49c9ec4ff621e544390bf60429cdf1307c93a3a1c8fae2efb6062b9314a06faae8f84481a369b64234ecea944ec6fb3cfa31258017ddb373c55a64c0f9e74f +be9684be70340860373c9c482ba517e899fc81baaa12e5c6d7727975d1d41ba8bef788cdb5cf4606c9c1c7f61aed59f97d,68e791106da01933ec70eb650ac2f03eef1685213522f2e88ea7f8dfaf92aabe75ea0d169d9bc11d13e294338a57295279b28b41d8a4b738cffd629fd4d7d5d8ac7b4304e384db31b0328391c19ca9d381e66d41816e647acb66f312a418795c0d65fdaa6e25aa24811022c2be529c83be47274e8c01d4a2710d6ab8bdf095566f1b3dbda7d4f1bb5bbd3eafd4486afe67b682066b8cecd447b9c2e9e9416f2ce5ca8ca1282b4ae9bbd7c842f776bff7372591cb3eed785c82a27076470eca15a33d5b38ae02fccce396326f1bbe28995c0f8dde42c09182995f143a0f2d4427e8f2497f0b257ccbba286c2fb7885b642494f933b584b0ca83b545ff1521f67ec8e5ae4d93fc82544fc20778ce197f3a2f64ef3d9ca583a0d821a5151f462cd70c83724f9976457ee49d3caedf9b6cf0ab72fe7dc0c9f41f9c5ecd12d5f2d8bd6edb2cbe11f0462d36cf248a9552b0265e386dd44b9853f0ac63fece4f860107903f8db2e1f6f4017f05338fee8467c0c40720663b54f556464f4e87f20192299efc178bc73fbbf350782520900644265863223bb42a5ed2e416b9d31f3021ebdba693cd56c4b17eae16d1a10a381713ae39d5ad6a220cda8a91adfcfac51c65d03910df4aab7f7bc1ca49ca6ad08edfcc976de0229ae9d379e067aa9b3fc3a6cd0dbd7d1fc63c4ac2116f9bd3cd70b94a53b71987c17f65d5e77ad5674cc16f +7e15d2b9ea74ca60f66c8dfab377d9198b7b16deb6a1ba0ea3c7ee2042f89d3786e779cf053c77785aa9e692f821f14a7f51,3ad90f57fcffbb40076cb98869510be446f8161ae4f37f57939f8084cdcdb4e64dc7f380fef8b68cf274780a6a5ff31b1d573942e717470742e891b084e24f9441d27f7fae86a8278e84601b9d4830ad9faec738fbbf86aa299653c2eca3b233ea2d1350de9feafa76fb8986010a26eddfcf33fe976071b3c719ea15a2298d060f5af88e3f06ffb4c70ab13886686b8643843c65bd882c924e760b9d78d705b78b2ed14980e9e89d6e99e8945b3a92b9ac282642651d94600d8e5e583a59bae4cf6c4a38353b90894a7aff2881bbe06464fecd3a54b2726a55fec0fe5bb75f403defab989f75dc04123f5563999d1503413412e16d671969ad0d97a6808b1957a7481d32bccbdeec7809a90343ee59c84cd6ad134529cec5e42a31843bcca3449dd3a2e075998788811a601a3661e241a88406071b90c88799f370dc83b440c9247dffab2955dc5ef8bae47c1ad9157cd0f5db61fa245d7179a8768bb3b2da7ae28129258fb8a22f9fd4a7906432eae33158d4ac1550e379efeb091c883a0102f7daebec2aa4eacd277a7e45dc03cc85fe952d326c3521bff980e16bb00426d2138a9f32593cd1355eb7ccde7fafa16ad8638a9c16ce34920879e753c723c494e4f8b18251d20ec437fd42fb178017e7569647720d309097c982aff3d6c54ab23dfc665023a01b3990e6a8999e7037c0405a4cab91876bb660faee8ac30fdb9b +9a219be43713bd578015e9fda66c0f2d83cac563b776ab9f38f3e4f7ef229cb443304fba401efb2bdbd7ece939102298651c86,58b040b46002bc13d05c76e840037b3eb08dd51881ca6281595d39b8b12d1c15f9cd40d94dad00469bf5eb73205fc649c501b57a33f4eb39a7fd76769a6eb0f84bcf985c6acb281e4989f5eda5e823c31e94f41e577b0069809e1c3b09f4480677d56c487ca148dd5260027bd9ef399a3f08f5f5be869ac7a403b53532b9775ddef6b80918bf367af8700d6b9e75fdcc45eb405d37e9a9d7f9bfe2517fb5ba5225c72aa292ac7835a5bf4fa245e782ea67081448f31854f91f21df99bc13c615a67adad644fa6336b2288f1e29c649341c6a4959e5060a99f69981a10fecc30e29cc7784153816bd228fd7859186375fd66dcc78ee4aa5e9dc0b190fb8a6cf2ce15c7f3e0b54597a559bdce7bcfab8fcd25eb0e0c7df02882ca67e2f04e6266558c7f36fd0a2bed459b50fa2d883c9b86ac8e40a8e92f4099cabbee9e7fd1282f06b3d590897bdafd8643729b09b47544ba3f3ae28defc3dee3cd6586b340835f3ad34d6e16053e2ac94b5cbd4fcbbce2d0245421af021e6e0c55c53584cc917d99818d4f0585ad66500afb13c7cf90b233d01dfddc738c325e20b63cf82a307f44c543be58974110bdaecf43468c902429dbfb0458936f67cb59c4e4415b5d03109e88451989cced136dba9002752cf608423ca52483b4253d24e5b45443016dee2d75e7eb9de415a148c439052621ac1df79e60cb585a4b08ca70286c77949 +c8f2b693bd0d75ef99caebdc22adf4088a95a3542f637203e283bbc3268780e787d68d28cc3897452f6a22aa8573ccebf245972a,d0e4650c52bd1ff64c2f5b7853e8a906d7457b67cbea12322b5d1d5bcb8c3ebf49cc6dfe8fb41895131956661c772d2b90df4bd6b379715278c9e72b6fd93c3968fbfd3194c2c527d15c6311f1990dc2abee5b6645711251b3d39202c9d3fb147b39d1d3da108254ff8deaddae6599e17c301bc18deef2a9ba8fd035a084d5917fb9e4e56fa6ee7731332b50ca3d2bd069f793ac6867448697395cc5147481f9f6499433d6242502ea1e6226a88068032f656fc8d509d041f1d0978ebd4f2eb347e75758a29287f5be37f9d6c14e4934e5e16806d6de41ff8268bcaec27e999a7ba73b2131147fe05f9ee8a491e47a3a7c8cc93e6d2db374bd5e091810f0d7103215726a6f80d62c19d9beb92ddae8c459002376f58511792cfbe7a2158ebba922656ed88163072bf6667f121747f05b84d470193ecc8bbfab750d162cee7139efecf889accefb6cec328a184f5cbaecee51119a87cd21110fc20ee85560cc979362c12f1c7665abe62d5ada62da0ff3682b32c6da7150841205bfc43735741e07363b9cb15daedb03352bdff62cf00399cc429a8a25ca1cc765aed117b72917b25cd2729cf46f92d8d3f1131af9b6bf16226140cb57be5c96cb2e4a369d226fa82bf0df3fe2a4ee373434c5ca68682c0c594b783a0b2fa6604ef3828510e1c360a617588ac81ba8d1c18c23a30d245dadcd1c6893d3809d6eb305e538f39dca +ec0f99711016c6a2a07ad80d16427506ce6f441059fd269442baaa28c6ca037b22eeac49d5d894c0bf66219f2c08e9d0e8ab21de52,1eae5df54490647ff03985658785b5bc1480d5ddf3eb3a1fe649520e07c0174fdf1dde9a8518879833d64a99f3255568223e2dd0c9a67baabdf222c2a314936cd57578395288d40dd047d67adf8289207c6c672023e25a5f66d2baadbe2972ea32516ab753ca37ad5f436a94cfd62182b7d68ee0e7a016c8540840d1eadb3a158d88a9e7c90f551fe857c17265ac59bba6947f24582319490817b99a591978ca945d4d0f23499dd3aa73216b7c28eedb5c8f3c0851859d6ba9b04dc67fdb4bae4d73ba540e66536befe2ffbb5daaf91ceb627cf4869327c5d3c2ce79700795e7975a8c6f9c07b95265614df45e50ea89ddf9ff5f2ab150629937b9197e543ca30086e829afbde5524dc1064ad96ffb4d83ea91ce7ca8843c4b1a9722872057b0ac9ce57e7c97d22cc06ff1f74658aa28bf398ede9f186af6e485d6408ca4a4564689183ad52ec0f38250cdd837d684a1e4fae12306d066f2f1acd56797f1de2a9de8095dd464ba58d5b2d58f9312f1779eb2b2adf1773f82fbac43b18ea5b0cc9fe2ffbd9d2afdf61026363817b795a2590336ee1855384e2a26c7e15e8706aef41c671f2d8e2a0ea2b0a558cb35a80952825c845875b2a907e84397e2a3d125f64c313c15dcf0cdc6637176a58ff6c0be30315863c64a21a1fa147af0ecedc22fdbfa9cb892fb17d26c460b7ecec9713e90a46499bc30cd2735fe98b13e5fdf +0dc45181337ca32a8222fe7a3bf42fc9f89744259cff653504d6051fe84b1a7ffd20cb47d4696ce212a686bb9be9a8ab1c697b6d6a33,a8a37d45aacb607c3a2dd97a43e22e226f11eaa21daffb8ece97e42df057ddc9459eae2ad1c04abd300833e6d63600320ee9e368cd2deb5e38ed7726c583fc9eb411c193c42dd8a1d5577aca20b889a5382c0f1a59256bee99aa09a6b2cc7296a8de514ce14173e683268746738c2f8eb29d6f51ac434bf51872be626241e43183f6c7621479b62739b975b6f25e63d9668d3198e82e66e9e5fb871df0ad3a06da385c4a7fc914cb371dc1eaa929583f14db910c8883c7b90635e5d3fb5a3652e98ab62ac884c885c4606e8f453b89badb15f7b9de49efbdbd210859afc079fd2a1fd82ed87949af0906b5e75e561102739d4cc58ac9420694f5c043ddc463e0438e3851ab841ce31d994e1fe378ef75e7f979b7801a284aa8be26222b2baf06857e8ed6765c9c040798b2a6520e56877c1e4297aa43a860f734a6667c1613c0ea76eb70435bd64d34b11728113bc5ca24734a41f3203641d931cfc74e46f3d23037e3878740a6b152a77bb10791e09420b288d89e06dbd6b882913589d82dcd808918ac853ade79b7b8104637f8c73940890ab44e31dea7830f2bc08c26eba38e3b1b198650a9191f366d90bfe1a4caa7e03db8357bd8258f13e5be051e638689e99bfa6dbb5e2a623ba8b2107ab7a4c7551918a1c023f1fe7dd5564861faff0060e30c14941379117a3d1845842d935c4072b28913a3c89d1a63d4658048b8 +de286ba4206e8b005714f80fb1cdfaebde91d29f84603e4a3ebc04686f99a46c9e880b96c574825582e8812a26e5a857ffc6579f63742f,140dfa98962ab4d69b6063b0252de5e4d65e4c00a9be1f8ede781a54011d1db01366193a4235f6e7d684b847b2dc4a0a5239589b4c0266817dc37d850e5b23a40b50a6d9d1bae6e64fda20a3d27f933ae866f9c8f00d455d97bc71d5f5a7c9778cc8fe1596191c2b1882dcebcd37a9a8c3605359e886942b04ebbcac83fe730b84ba3b4b3022e0b1a1110eb4d23d2e2d05d77c230e36a1accb885c0faaa312b7f975cf8da5d6b118ed773c5f1c75366e16a1ac75be309eb328da88c9fedd1a13c84e2f856eb0dbb249b3c166f9cfe917a93a3ef624dd4782b1f84b3e2ed70e493615d6ba9928886a59617a35aefed5b46d773fd5b22cba302205ccd97426b7095872bbc7d1932f6157bd3fc9d4a2182fbbcf4beab71a026aa212bd8ccc81eee265e4f53390740e3e9b1e37ca3a7c3a4fa824d0afaaab7cc89c35756d8f80896e8686260ccd94857870490aa8aee2fd3842c62a256107a7a06f87894ee70d218b6166eeb67b6f711d421c45ff2ccc903dd1683d12eb5ebb9464ec0b3c92cb62ea6cbf37591b61e6be15fceb0c1731b42d8d3587762167c3a43f62ff57d58f2a2247cdf43cb756f6a25fce0084d74baa73a8ce12e41953c03c2a9ff94468a69c03c2b5f6b85a2f16397326c7dd562e90f8439e720c1ac0b4273a7ddcb71581db1d6a57ba4e028bb96462dc54cec9ebe36c704c44e5f60d04b993454daf405795e2 +eebcc18057252cbf3f9c070f1a73213356d5d4bc19ac2a411ec8cdeee7a571e2e20eaf61fd0c33a0ffeb297ddb77a97f0a415347db66bcaf,f0fc5662d4d28b3235e49cff708d90bcab50764c4081e2f30f0479573ed4fcada1a85443d1369e09caad970570a4ce3d8eab46ccce3e48df5f26c68c7485911286ddb1b369d13079498653b21e3ba7fba9007500be927490336082c1d7fa5b78bb741c459177c05e6294dee054fbe526d983b496e731b3379de525493733305da1e1e09612cd179efab1e6e67afccf60776e319651ce1a1fc66ac945bec6c45a99a5bd7763aba920314f04e67ee193484e54461c68e67a922daf9205faf10f4653541f2a5caae6d28449cc919341ce63939a0433a9dbd307020e80b65ab7b2ab39a9c29d167dcfc05624860b50b0c3fc3986b020b48f5fcf00c3a6bd8ffbec6a34add7e97b106b4c1daa9e5ef91b797c55de36b88e9ac19b301979bebf36fb86f4f72a6560a4125bc1f657769f89cfb1f3a29b2a0287072740e52a60c1c898ea42cd9fcfcb3987a015dedd297f8382d639cd7118ca85255d1f98abf1f5d94649a161082d7d5944b2b4efe4975d5ea38138b91ab5b61a790349d5463d2dd278196364115c18b95f916eeebd71a21de18c9aeb22566d3aef009a84ab5479222ef8f37dd29c7b22d0f1627c25ee467607f86debd8267a493ce5c361a6f6126dbc8263b6fa5d5c9b9f8ac9fdda42fad433bc9a76a218c1134c1cb5f03f3f7387e245089a5b18c96df31211b5983214b64ff3e1d90bc234a2f5ef7e993c8f4e5fa9be +416b5cdc9fe951bd361bd7abfc120a5054758eba88fdd68fd84e39d3b09ac25497d36b43cbe7b85a6a3cebda8db4e5549c3ee51bb6fcb6ac1e,aac37ff9fa6f64049b4d72457c87bee3ffc23044abe0f1d121392401b60e3fec089d4ae3340961915bbc79dca9337c4a02ee99ab932b346375169057e8bc731faa49422cf5296122471580ae4263b6c01d8bf9c7f736a4cb652aa5e3521bdfce2ce11332e53236ee4f613b2800c28e5907d2c3214f6071611496f80594193dcc09afce3eab1769a5fa2df9abe16ab019759a07154d21c3365dc20bdd7c9eca82045092ea5405b56861bba693f322871bdd64e2e41985775ed7a3f1095c74ebdca15b9eb9f2b86234967db868a082a146a439746901eba5dabde0f133d99c89a4d6f769d1c6fb1758b3cb1e8986a025f5ac2a8d6f1a9aeb66dd3c41d41221706a4824cfac6a6db69e3d157244294b9d25b59274b1fdf992988f3f18b91fd78767eccd352b7ccd335f96d3b3913902c885c470c2f7d2b00a92269709863e77d3fb4ea1c80cb58c9cfd996e0c6fb85f3bb5308b95e8b43555ccd4b589829da442bbcbf0a5c7b9b24e3de846e9e8433f1a4a326abc7af83a5bbcfe9b4bd848414b2560c58b3e9a3cad48f860ba46a5111d0ab629b91369a964bf22b5c2c6dc5c3a521de18dfcc43bb2e641afc466b75fc3529bc4b99b843a809773dd2130452e61ec162fcccb0a94b3ab0848ebd59c9fc25e84349cd2154e5e326cf2b97071e7c47f0f574d11729eedadb3d0dd0fc69a7f7224891efabe76942808d6459217f06a7d +5c5faf66f32e0f8311c32e8da8284a4ed60891a5a7e50fb2956b3cbaa79fc66ca376460e100415401fc2b8518c64502f187ea14bfc9503759705,3930d75f8aec436928f62ac548fd6b215c2e6fc22e918690f0cd699a0cb1ac218be324232295546cb3c421e939222827890a8fc563f6dc455b7d0caf24c7b1be44256de645ebfd281f263c9006f78a69e8939809538a74e646e75c4d23cd06ef68b617e6c5d36c85348373fcfccf19aa3bd69e18ca670091d2b50b0c2a3aaae21fbeff894a189512f4eef17258af048d073179f450d366295f609567eea83cb6a2e2b8170f69e739db47874e1f249ac9595442571d100ced32c151ed4399f5aec97875142ec1e8b748a9fa5c3ede5548b875e60a224d9830419e233fc9a88cf0f937566eb289591916c1d159bd68b380f784bd3e6a00d4c785694f38fe3d8fbfde5063b91fa397afca0731b97294269ef8157b531b08e15cc52ac8e5e768e6dd3905bb9e1b462481afa989441cf0780ce6b1926d71940d4ec82521a4347992b37af9970f47658b05ab54a617275f51fd723a35e72f9f965ba4330569573a58a0021e1dab0af22ea03e1bfe1e88eb2d2b97e5857793fe7b63371f3569c77a77e331924dcfa9fb8072f4eaf3a78fb6462a5c68f26d034bfc0b3bc8ada4992c66b4c8b2f0489a446b26333146b4420cf2b5aeb41934b3cc05b7ace62af74997b797c82845f4c4d7fed571879d255eb34482b86383e924d45b4c9ef52e76ff236a0daa1c9f6d342bff82305fcc88f8b13fbb724a9fe732cb33a6d53d95753fb350c4 +7167e1e02be1a7ca69d788666f823ae4eef39271f3c26a5cf7cee05bca83161066dc2e217b330df821103799df6d74810eed363adc4ab99f36046a,1c8c8643b1fa6b0d217d21e542850127895dd4e455dfd136c4e221787a8f3caf76478bde517c7dc3edb97c8ad824292edf671bc4874044b96a109bb5821858e544090e892b3eeacb739af35eb05dce51b131394c9972247f1c0d7d335d18b9355509bbe94c4debb0c1b18614cf3fa8119b70fcf5b59e37673b470cab14302d805bc32352b340fb71f7e824efdf2732ef3d74998a5ad70898115c9cbff3d5067ef05d859ff932304a5ac5f6afc46c879f0bef369ecd7b5065acb19c655f7fc2dea4dd7ad38a2ae841a67ec1eb4869ec285b5a517c930350d7cbb9c61cdba188553b9d4ef140dd1a8ed312822e79ea68662bbb1ac3643aa56de5991f5f128f036b32023ce34b7a7af7cc43d6b67deada4849bffec361699ac7175311195822382051bbe20565552014d6a4343cd94f7f4aa705e1d5388afe2d96bbe8010fa0e82305b94b70ad954bd5f6fbdeaf090ac510b75cc91db450eb522183371d6b9d09d3fca171fd10174acf3fc47d915619dc0d06d8567c4e8875d0216de9c7ac1e7d1758dd59573273886897382ce8e77552961d51ed0b87ffca38bdb6734a23fe0c9a403abb4fed73dcd504289e7e14906a10b121a57b94c2c37542ea833c55c1130ad70f753c9a368f7c7d1b51450bbbe794f2824713153f83fe6af09545ed91f0e39fa732205025a49e1538ff7daaed5b72eec88862dc0213a012239debd24fcb07 +2fda311dbba27321c5329510fae6948f03210b76d43e7448d1689a063877b6d14c4f6d0eaa96c150051371f7dd8a4119f7da5c483cc3e6723c01fb7d,1da38df421aadb3da692f4987e171113e15d3685db1017ebbfd07bb68db236903f3cd3ec679b6bc9004072e90ecbd0fe0f2fc4f5531d24fa6f25bc6eaf4b545a2149517ce19971e3afb866daa702dcb94982446e7af77418164c5e92edb14d98ea0dc32a3e0bfea4e71e9c8f58a751578200772a1e0460083021552feda426aec69346e0fd31fae18b894b67dc38d7e54b662ce051a8453c1db20f55095c177f5883625d40bc4b49965c48c4a1188954c50dfae423a12315deee0feb3548aa9752432cd6857aaf42bf80472178d0714d777135898f71d838058f9f31e6ac92d819c44775c2ede28038e565dc33f1a157d8715ae67ab993179469d6c98e8574a7d8ff2a5f12353f18544e2d623aa42af85159438f247aa947922a5aaf98bd562ae54599783853cbfa5cb67eb1fc36cfbe5af1c18c99d867cb02966d90ea8ed648831a2228657972642a17dd34fd43c11cd7d407cac86e20d8816e69763b60294c19497c151620a2b93b3b3e87639c233c17b9b865e920f6eab6c72218a182dd46177a7ad18e3775fc0a5a0ec956b5e92d8b48a22a6364006bfd2843b3ea4cb63b8c0ac10970853d196918dfd513d4e1a1558ebd3d4c60ba253078417304a50851bcb6e41b5758a08be338d62b0021851a42962313c11baaa95e434f6329fd5d6c85d67a665a675ca527c555c77c7435786bdb8d9642050931c57cb79aee5973aa +95d1474a5aab5d2422aca6e481187833a6212bd2d0f91451a67dd786dfc91dfed51b35f47e1deb8a8ab4b9cb67b70179cc26f553ae7b569969ce151b8d,660ba471fa9414c985a47b1941804295adae88bc1ba145defb407ad66f193be41eee4e0f71d175f6d1d65c4b227a899e0d282ac714e50e3002aaf8696b00a736a60c9ccf94d15e46db68228ba174dae1575138d3f9eb76cb16fb09a50a6f7024206d4a02277d2d0b53f189cd8e45e85f4c0fadfa235c963a9a63743d88fadfa6cb99bf47f32488b4e009b47f7bf59a01bd92c0b6e771e8784b67a0aeed96b29e6a1b110b868b144105b85c11cc01c589a89342dd456e154a0d2a638fefeb03058ccb301fd551294251d32b3f03bd62ac5ecf5a249940c2401f751a9fcf036a384ed26f569d227235cb47673f7003c4efb36676044d09cd586a54d744ab4922bb337d4436c4bc76cf4a478d1cff7f7d97ee2dae912c5bec910fef7baff0bc9e32df5ace8dab30840a31ca192e258a4141275534361977d2fc22eb1c1bb62a21b893a65b16c45addd3032f2ccae38beb6de32e1b5fc70214e2be1b7bcdecafd744f82edcec99f92d46aa66044efff26ef3bce081a19f1b7392c68d2414d92d426d78b4bbed4aa32d05bea547a8dcca688cef6b0bc754fae7c13915b97478bfa72ebd409fba5ae48cc89b37918f04c068aa1883f2a950675761120989a9f7821799f5eb64c07299ade85e1dc1bb488bca7b96ba7f04d49cab2b41803f17bb94cbf04b641e140d8686eedce954ed1a712bde789c31f02f721f467e167c3e9b035687 +c71bd7941f41df044a2927a8ff55b4b467c33d089f0988aa253d294addbdb32530c0d4208b10d9959823f0c0f0734684006df79f7099870f6bf53211a88d,9d027f5434c6f6ec15b26bf3d61f31d81d46c0ff426d4209e0fd3f9a3e01d0af5bafea98f9e3fb66e8390aa2ed009c0d6dba82b3e36ced600fe79c0f50eb1c1f7530f20d51782c13a79ab1d0bc655112d745043911b5a9524e6ec88122cddaf702c34fa8840e8785a7046b6794e623526826b471cd9f62cf9af02e398c077c7f8608730578ad22a44cda39df8f101ccf21052c52fc12967ddfc77c153d8068a2b0b783376fe56b1dacd9a0b3e87645132bec0f3c2c9a521deac286750c2c42b4a29b29144fb1b0f5cc997ad57d04bea965343843788daba5600a7ac5403d649097eb402205ce4bb12ef836fd4b7ceff704f8a2baca5d6381504793f1c6b47d15dfa45f749a28c7fc16c695a0bef69437ad3f8c8d3da5386a6d9752529ebcd84cf92d641a4ca1755177bf7e16ca144e270e4191ea26bfb144528521d32dfa8319fe37cd026e5f707f81dee84327cd0b74c05cf69543e94848ce616fc118f73206b132f0257925b8d93db60fa6e034d27a65ea0b2eb18056cc4690be78d9bdcb4deb61fe5089c58ad8cd08db2ac9a2c2b0811ef71309db1831d9ed1032a1267d3152e4adbf2042ea48069d0519fc5b03a5375eb355bcc327766b4b3559737dd4eacdbdf5b28f121e7c13eee9a8c10e66f22cc80ec40ae72ceb0b2821bb7215cc9e645b65e766076ab78d04771da21b501987f8bad685c6eee40c9f60605da631cd +f57c64006d9ea761892e145c99df1b24640883da79d9ed5262859dcda8c3c32e05b03d984f1ab4a230242ab6b78d368dc5aaa1e6d3498d53371e84b0c1d4ba,3951b52498f3c2e30411a6d89c55340a73066b36b1ae55d9c95142fa1ee13ee8b7296074d82e44d752ee29705606d823809786df5a2312f8922e4c50ff0d7297b864fcc3bd81311d69d2657169773c41a8f7f0e62e076f5c0055da042dde07d82172bffefbbb031fb715546ca47903895dcb4807b9c435d16f90c41ab7836a53454e089a25951545f0b39a849f329ae9568a3640f08329b0422807ab15461f6c67e1a1e5b8439f4d0613c5b4a8ce10ac1db59da2cfdc1f8fa78c60e88a7e6c0f2488afebe16bbca680ee65bb53421e29c8238b7f0d1387c60eac50ecb43af4ff075520199bee31641ca433f35d62b96fe477c304265002440018e4a4c656679189eca635fe4090724784f56db38563ef05a8ebda4271adce14b8644baf09b83574ddb6803997ac473bf537f0f93a2fbbd0e0c75c387f21edb2eebe0088ce8886e6fa9952db209bc16e624a72da33878538549aa8f955caba17947fbeb6a304eb9b1b494a197814ee4281a74334f71780455a352ee1586bf298361c40140c3b6a384167632d7efd7f3fd327e18769dd481444400b669be07eddfd2783962751896b703b3e196edc111411db17531b96d0557066dd6d2fa3eabe0e4735837d1da7bea7543d6b591e55b2d95d46f822cfab994770f8f51a58bcfc10b4a7dc9c8a645937f5aff66a59687457ca35c42dc2c9d75ee0aafd9bef334d12dc33bc0881a9 +e926ae8b0af6e53176dbffcc2a6b88c6bd765f939d3d178a9bde9ef3aa131c61e31c1e42cdfaf4b4dcde579a37e150efbef5555b4c1cb40439d835a724e2fae7,b21b2ed68fa53bf4edfb8ee5282964c8fc370a702a229d3c4bf87dfa5279b1ae2fbc85a00067f8407f586b52b5f1aaf97716025ec2e292206e18570ad50cb51e072a7a06781eb9e1b1b23c576c689deec4da40513361b413f513a0ec21491f0e6efb792688519c1e6b0760b3e1de34890c2bbb5c3a44dac9b0b0ef2b1b4cc4e30da7f93f52d656712eb12dfcf30c80273fe5a8f42b909aa2c9e1e9c82199418ab858e1b8897ad632c0c030c9f56776378a86df63a5cc284adafcef50df97847de927f296e63933fc174eb3009c5580cfe39b77bf359a865ded988d3bb631256de6eb736c637693dc5798429498609a6201c6e9cacd7782dee77b3bd4728ba32a0da88a14212bd204292b6eefd0c7ec1814b7002d8fcb08975d4a9c62100f94404cfd32ebf49407ba4c6697cd65d7c40951ce7774234c4a793265cae9037020e35d38c9c016b15d214550a94f6b245dc4f5b9b1c8298d683ac59acbf177f266f1818628b4174d66129c057b1336f718f67d5ce7a3627e31d8e64cab4baa5e89b7b2971b4c82d23c36305b01d30f830baeb2caca3baeda18f912e4dbcb1f5cdcfa9f562e3be2b01826eef5cf0d80da116765e0d467352264c8a9c1242f74d98d35f77472ca4df8234e76f7600b6052e7516c514695bbcfc1793a9c9af512e1d2edd7490d8be500710b305f9f54ffe4d87b50776a29c222b09f1913e71f63aedb32 +16e8b3d8f988e9bb04de9c96f2627811c973ce4a5296b4772ca3eefeb80a652bdf21f50df79f32db23f9f73d393b2d57d9a0297f7a2f2e79cfda39fa393df1ac00,0a7a5cbfc9ed4a55b8c8cfe99e9d71d4ec34aa1c4fe8a69a39ddd2c0e1923a3d4d7eeb8769709172866f0f93d96504307700d75f4922eb0cc199acacf31e8bdbfa166342cd7294a723608528732bc85d7ac57307c37d07ac03d99009c2052de7536b9049b0750a5186855bf41fc58560eebb743f6572c102f21d3a92f8908434519d8f797db47cfb93bbe9a567aba819fa035f64e2a718497fd815968f70869066ae8db9314f006466fbc53660bca5cc65b6586cd75e58427dc7b3f7d1a7f0a5804775234c8d0907c5906aeb4ec4df01e081695897b324a97485c22f694e48eeddc010d198e5dc4c65a24f62d6fe7ee0e60b2e4f79a6bf349f9612303cb272c0f1d0a952312f151efbde16d17d3b2f2bb9729f444db0b1b993a6cd2ea973d430291d276cb479d8f07b9fe022f384743eb3c1593f062994d2853aec6267e68c724f959ed98d9ddc0919f53dbd54e28bbb28ae5f0eabbc36a81e25a02174c14387e8c1695f97de66c74ba20cc8ec1eb5d3dafd147a894aaad4b20df7a06eb9b676846133868f02eab7102e6d7ea8bba678b0dbbf1f6d6d6ad0fa43412a8a53c6d814ba26388bef08f89042e573facac5588e4b5c4e2806542f2e68148f4b7cff1ec3da21f633372b567005f2cbe81dddd450e597fab577a1935281f758193cef43961c380b62f0cfd084fb4ff19045ceb3422c01e5ccf9eae9c3b300a117f1d81d +fc424eeb27c18a11c01f39c555d8b78a805b88dba1dc2a42ed5e2c0ec737ff68b2456d80eb85e11714fa3f8eabfb906d3c17964cb4f5e76b29c1765db03d91be37fc,0f001a78a98382078267d5de881f8717b55a31c1781473ba089c72cdb201ce93b943687e3863bc24be5d255a4c02e43eb498b9ee4d8a0cb4778a742051de21c4fc7745525abf188f38b7b46db5dd7ab30906f7a31e0b030dda800c7766eb48e0f4b12c474c3535441985f40376edb99fc2a0bb2baa9adaec49c1f5fd3a604ee8db5d0c51af7edd29306686b3795653e2ebabd2e9118b789868a7f821fb5bc5e4cf732456448417f43f6027337b4e1d481d65d239dd15eb66f5c6c289ee85e065fca3dab1126e4522dfe9a1b428310c7df543bed5d4439e87549ab0be6aca17180714d2636fbad2f7bafdbb1961764f48518ea1ecdba3328de8a6684730e747174345b77052e8cce9765abad9f7b3ac4e8c2155fa5af14fbec002b20bd2ee417f6ca5eb8b95087c34ea52c8d1dc95453f6744272bbd1f14a1affebe475eb2d20cc26c5893f71995b63e725e7b02fa02b3145944d9d8a32f898dfe1f7fd7a73ed1d67dde341c4f95b603597f74269835762a1f348e10bf5ff15b7a325077aa6da99a8b92885a344af35d9fe34a5b5549d37ec1c536d7b71962e1a54e2601e0f0ef19a2f81151a477d35f36374e7f44e00b25c2f7c4fd804490bbb68bc755f19eb25f04ff370107237153e50bb1f8867917cbb70332b41441b6434458c848970bbe860a07dccb6e6f9c076998b54ad88d500634948a73a3478afb1cba9fbb399d39 +abe3472b54e72734bdba7d9158736464251c4f21b33fbbc92d7fac9a35c4e3322ff01d2380cbaa4ef8fb07d21a2128b7b9f5b6d9f34e13f39c7ffc2e72e47888599ba5,d442b526ee0de0a7977ac04f9c822ef3369cd2cedacc05abebc71128f0c0a2f8d5c2566ccdfccee773afdd2c0f8aae2e59b56995f219a9b06b638dd91d0c2ac8d11ada3cc491a5985255716c75b474fbfe4df204b75176468511807478ff873f17225d022a78141b962e1a4edc7f93bde19dc7d804c11c49942a54ce606322693845c11eb0e20e60ac7a15287848c37eaceed986f98476ac62a23e366804ebd5690856d69e82cab976a79931fd5058f0562b006e822087dd8d277338a6e555c54a536d29831d6587b4796179a6f45c89dc9e85dd3067adf043e3cc90e96391d60145db31be7778df6402d7808f46e42c8bbe987591edf593ce50515d4dfd647afe7a65579e894ec6951c2f03ccb4fb4f4f212f3d87e953d4bf6093e4d390260791924ebc438b56693ecb11beb8b10b85cd56d39a95bfa7924b9f78e181337e550affe40cfe99c709994eb9f81ba4e14c6663733477320ee3a62955975e5f3f25eb3922ddb67f0a312d916b8ff2c14493981c7a6fae0e14f222f194b674173c051edb795ded1041073bfaf62b76d3623d065f797a82ba490cecee1136c08193d46ff6bb06b414c8a861a4604a4cbc87cc652eaae3d648e4d2cedea13344ac22cbd4dac4ac9d6662d3694b38bf12169320b5249021c85a7477e2587df9617d7d44e09bf7fdaed71e3d5818da093e6d019243a17d9f32a5046fc6ba19edb0ae6349 +36f9f0a65f2ca498d739b944d6eff3da5ebba57e7d9c41598a2b0e4380f3cf4b479ec2348d015ffe6256273511154afcf3b4b4bf09d6c4744fdd0f62d75079d440706b05,6ec28683a74038f869a23b21669f27b746a1ac2bd41e3bbaed1cfdcf79d7d1a9499f2ad4701f64830f14c27fec0cf645e553b3d76d8512b879d2d19e37d93b0e9357160ffc00f20cd96fc1aa520b0870f853b3241b687549dc2d1f119198cffae38402ce4cc77a973cf49f19a52ef7232e39b5638c680d44334762657397cee9dc65fa37cf9fa1f902ab290f8ce4cec82aba455a794b576be404ed24bd50b9a4923d04c3f19cb812e00d6d9dca00a906ec0f3460f14d3cce6cfea1c78e8400c0fc1361a4a60810bf51afa3ca21b18c7df5fdfbbdd8fc1671d21ceb404f9dd37008419cdfefbf1d57f7ab7665baefd500c38a5ab04ed47e4b3256b0b015d0511657290418d5dfecced4aa47fa14a9a0e9766f3123c80b65fdc07cbed2c8b0753f2b20ee271d11d28fee068bdd3c4f449973463c17f21f60a5e59be4fb3a3490ed87aa1709a62643e65ff82f2980bf2460fabca0719e575614a1211d256c59f86abbca382b36f970c489660c484ceab850a13011faa07c93d2fc2e8e447a997b0bfc286769017189a68d7de05cddf696eb93fb8792f25b2979aeddaea7a935589be4825e83e9bb302c3a6e88d83bbad06ba6ba274a672ced23276a499dad01555d85c620b6fc64c62282c545195eee61c8a127ea8994ad5a706a2dc17ae5c6f165b477655d067267d88374f674be12f58a35da878346bd48351175ea72a0cb5e40 +abc87763cae1ca98bd8c5b82caba54ac83286f87e9610128ae4de68ac95df5e329c360717bd349f26b872528492ca7c94c2c1e1ef56b74dbb65c2ac351981fdb31d06c77a4,ff0db45e2e8959375d3915dbb45fc32dc6cfe7d2bb227647f6877619bb6884d8bbf9668f407784739d34975576b99ab1325716c2b83212dbe9e5e33b5a6ec68fd75015124f1da731f519f983cc783f176286228e59068aec6241b24808406cd60f67d5a1ab7083d7854984a1f7030b7d700d5d48eefc6be0aea46c8022256866cecda897dc22d4a18b28126444d956b93190d7a060cebc2e8be65d90cf7837a90dfc9acf4be4193a892dba8b3a068e7bd20d12c47a95e0482a2cd4252a34e1f13bcbceb9c0a12e719a27e2759fde1b2f6e75a0a38cb80eb44c023fb0ebc33bc8290513d95c431d72450951ec1a86a89d59d435cd3d4b4e069556a00a443f045224d46a8dba8cd7e8bbc89a21d3ca024c4ec96bc7169e6affbb05def58a0f2535997f345c8660451e7cbcd83c622edd0d8a8f30d8377bb31bedefb546c989231c53447b7817ac3f822d596b5c746d5839d6cc8f6d45c48281357e87312c33f62ec568db4aef7f194de67981d67b2b6659268556ee38df95fec4bc340a3bb9539eb6143bfddc12bd233bfff5fe0743da3dc89f57dd159a475d6d8882bade66e4c93d6950ed026c747968f84ded68284f5f02a9f7549b88f244fdc261b34bd66cf2ff5a6925565a08bc8a5f8828775a5a35147c57cf327c49cfea4797cc130d1e8aa278256fcbe416420fb7683e6d0a5b1466a586e98c144f4cd5fb277c1e59b190 +94f7ca8e1a54234c6d53cc734bb3d3150c8ba8c5f880eab8d25fed13793a9701ebe320509286fd8e422e931d99c98da4df7e70ae447bab8cffd92382d8a77760a259fc4fbd72,5c00245176070cd2f23f1c5e15b21a9161beba24ba71d989bed890782ed39eb857e325afa269adb03ff1aef7d26ee524d6ce821d2c842c43d0faf47b602e55b7960fb0a9638e6da8272dab5b8db784daac730bf0394d50a59c87b422080191769c21bd08a32af4c263b09d61a13d0ec26b6d1d63a2efa5b4fb9cd4214ea76b2c915f20e242d104745ea9af73251f2ccc9e78ac8fd3c5eae80ca665a87c517ea620ce5217c215ae38cc43f2756d9331b0359fdea9cef8fbbfd3606aa5fbe2d5bd31411a857b3c8e79a2ff1b00e3ef56bc25d0d83958b64dcdc095241837e333e58e4da64f3b5b57308b165924b4c5f70567779248ef4400be3e80f699fb3b6e40c36badc2bfb504bc777733ba9b59659f8661d57b3543bd26101fc3dfd6ccf430036776df0f2979b03dff7e6b2e98f161e050a38f71ee438088d953ef72d5651b5674ea6ffd3440af8ac94d5a808ee426959131e460c858a77c4690801b5b3a28c6bf555f02b5c60de30c4301363bd6322a289f36b30e00e152627ff7485f032b61041d4c1eb872365b8bd22f1a6308f5cc56d4707752dc3e32315c8559a3b8083d2f743779a3eab10394f8df71a878cce871e0835b57de865cf16ad2d2bd1e5e5705f68c6baee103c785e43f3582f591da55077c6b9efa8f93300822c6eaac9b5a71fb676c0e73928ade3102b61284c676c140f33a17fab48002394eb36265d1 +13bd2811f6ed2b6f04ff3895aceed7bef8dcd45eb121791bc194a0f806206bffc3b9281c2b308b1a729ce008119dd3066e9378acdcc50a98a82e20738800b6cddbe5fe9694ad6d,812c14b78aeee6820ea1cf8e0f3c61ae7cbd2ae493017ade0756fbc57545830910ddc27f3183df48c1e1d6d1a9f3de220f17402830ac73f77ad2977bdef013c739ca0e9ec11ac4fbeef624f0fbbc534f0467f09e775bdbb8acbcac8b3dc6ecfa92f35ebd729a1bc90236f57ad32ffb46c055c93412d33cf612059c4d5bedb6e45807a7ce2e5029c0594cbfaecec3f9178eb01d60acb5a72d5dbabd6f95691a1f949e4da7b48aa78c1bee810b175218c5902753b88253fef57681e60fda1851a18ec1f3953cdaa6b9c32d085c7ef9beed9598354cea388f3d8eee372312168b590acd0c330816949211d8ceaea737eb87bf9e6d4929d83b87e287c887e32b66faf1540b64c53593bce073aae4bbf711fdc7af6e7cb0fe938d2f87643fc4dab4a7d4154015e82422c14600e44e41d005db80cbb4c297335ee0e616e32d7e9ba5bb0d88fbb05b4d5799df5462e4544d3883cc2c4850fbe5b43613841b0d515093d246b714e96656e1f6227341e76051d5c9c52730d66d075df0a9edeed5d8e878a1fde3ad2c962608ce17655ae769c484e676904a29f22a3b4524de2894aa633df9f65cffa329af056e9be4e67e7ebb786ac3541c00a792b4217e5ea2e51fbd979cc8c6e40f59b6a665f1be6e6f2ff4d1d48250be44572fc5b731707b8611e8cd7679037d565ba7b066781437fadbb47f68ae752e879286a25020f8e00fd7e62af6 +1eed9cba179a009ec2ec5508773dd305477ca117e6d569e66b5f64c6bc64801ce25a8424ce4a26d575b8a6fb10ead3fd1992edddeec2ebe7150dc98f63adc3237ef57b91397aa8a7,cafa188ebd8cdf392eb8e67776d6f574f72615abbb5da35999507460fb1d357938f521bb18699510d353d3b42ef72e704ee769c02a1ee7e366871f28b25f798725ca3fd147f7da2b49329fc5a00e486a19e9465b782b1176b84465a96f083957f3d55512f6cef4af5e891108b468326c1051ee1519c21051353f1eaa2ad39a32e5adfd30026d4b56a2498309c27b03a195ff5a7ca27e5184e322b9b783c44c4e0842f6695bd89d5648be09b927990dc3980e7f818392380840e1c4310ea67abf7285cfe20c50933a92e74fef83afa6b6cd6a372aaff36dc582040b34e8521285ee9a67235d016cafc9478b80d7b9778caf5da4e7d1865bdfb903dedd7fb8477f007e60af960bc04a81e77a74ad25641fdb9d81aec87634d692e445807c0ace094f99db07ffa01c2da7517d12c830973d425839722ec0c5a2df093f01eb9f5a6d2e075caea8c7aa69bc899463d0e55c81596907f1b0f81baeae734b24fae3d99984d5e39eb4822c4adeea640228d72387656938cfe5db953c1ed993fd9705ca9c9c70e6df0075392f965682bc163bd85911c99511896bafc35d9378b12e00628eef3ea11e908f92498c90314c55698a6b9c6d8fd88ab4d7250166fe57e9c106fa674619c1d53cb3de576806742fa538b5653be7d0c08282a0159e7b4f3273c4cbe1735f3b07aa0004cd5c7f763983cde554ad9926fcff1d1ac48b9777c7266c8d +ba5b67b5ec3a3ffae2c19dd8176a2ef75c0cd903725d45c9cb7009a900c0b0ca7a2967a95ae68269a6dbf8466c7b6844a1d608ac661f7eff00538e323db5f2c644b78b2d48de1a08aa,105ada0018016331e288a355daca7426116c7c0af86060a1a652af34c6d6ba4504e5c681f493aa44bb869997cf024403fe9516112c732c26dee54865adf6594bf7a546b5998ea1026feb209e30d3baa289b81651b29916eecb48e6b4d6f8cee317f46732b2bc865d78ff0237dca71eec837215d67f9b7c244232529fb1801282f77cb08dd3b4992a0b4a551175173bd50fe8798836c60bb748e6d3112d7eab27f0ac52f48fb776f92d89c895d7b1f148f27ef57b47dfea43aaee0c8507654dca384fc7c64b39227b6e750b431588d56567eae250ed6aed8f987d5a6140f0a7c9a4d47de2b2036038d43d9630e849431b7a3f7c853399871ba360107009905164d9707c0a81d00a276699249accefcdaf118a8d28fe791fa0fc4d4a2ca862913400fd550513d0ccec4a487521ec53b33d4fbd2d5f6713f0f1f3c1e6a2895c4e2b56d86904cade3ef04af4cd1f3e8ab7876de83d133170e3918639f508858a335d4244c8da8893d51a7d6cad5a2411dba3b95ee3b95f3b2ec6db652868a8158ffad739199c47c32d9a4917ad06cdd7149738e8568b0eb6b7a0252e151538286d122ab6a6a68a6bbaba4958c0572625e7f4837bdf970db69a943e5c80e5f98dd0fcc590b782308650b86e0c12a0cf2feb059a2857118507639c4b56c749f3840ad13325c5e843ed1895f6ccd47bf2fd68d708c1b2001a083777896ba92bac91e280 +0efa26ac5673167dcacab860932ed612f65ff49b80fa9ae65465e5542cb62075df1c5ae54fba4db807be25b070033efa223bdd5b1d3c94c6e1909c02b620d4b1b3a6c9fed24d70749604,b37f11d6837064d393422aa32ca502e6fc0de85697e9ddf15b45648d99cd2b0e35653fd071546d893acb91ea8438e768bf446781a2bae49c6cf7e589fe80b2c6f35628a9577cc1f902f061e425a84d224d2d8c5fd4c06f1c7cea72bbf53f982626dd1208ce375ee4f593eedf93f72011cab8281049a76ec1f90528d53aa2e0589bf90440907b0f02c51a1a1d9a4c4b31fdf378a548c4d65ce4ebbe77b4f95e9ae29a3ce0172a4d80c370d6967bf27dddb29065566b2c3205fea1e2871f6726dfd8fb5be9199c31e77615bf060a33f3adf9a1c86d205c2496dfa694d343c058f7f212d9e056d6525479df0c4c184d2d8191a9fa849fc0dbb2bc27741cd5b43c65db771dd99872862546b5d1c313456423e649e9869a43b6ecafb030897d049907f307c767885014f7dcb21fc4c7e52e1f6e95a017f9aad349bfe109ad8bcccda1e4fa761317bd7b7036a09095164a79a7a4952fa2512a5b826009414be0c504a27cc3af069718daecdbe4f43d93a1ae4e1a9b28a48f69533e6efceb17520d78ea41500797b18e193c98c574a5339d2879da6340d8ebe07723549e51f71bf956bd90e74325bd912fab8c63150bbdedd455973c084a6e96be7aa3b8ba503d5215b77151007a7d32eced117503f1f509a2f6750b242ac63d2a53873d8cbd3a30f105078f0adca870dc906c0cf7cbe1197c13c0c65fd8471bc52ed07d8090c83cffb4 +bbfd933d1fd7bf594ac7f435277dc17d8d5a5b8e4d13d96d2f64e771abbd51a5a8aea741beccbddb177bcea05243ebd003cfdeae877cca4da94605b67691919d8b033f77d384ca01593c1b,a0042e6235aff4430623e540e15655139ef9fb84bf8199702ec9a68d4802e7f37328a5cd7af4153cd203938dcd947f0c7cb7f398a4867fcb38694bc3cff4c10971c44ec166f225cd4b0f1c264743815cf7bf37933edc38c3a1453852e3b220c5d5263d67c82a7e62fc19d24c9b32c10a8a6b2dbfa059197c97dec62a05456a26cb555546a4219a905bdd2a0ffefd1d63a56258f5a9fbd535276a163745e8911d55a5e47a4c3411a128f461149b3ff20b9eb422661a67b4785f38ccc43f7b87f5844d8e4665b0f010afc1270b14176913dd56b76bfddecad17374553fbc5c31a7a28e98f58036171bbfcf79ce10861cc0cf343822399546e100c532ba2e5013126976e02c7783193ec43c7e35fc2dff6ab1483f7b5e5955c91f7f7abcb52a132a038fce9387c4635e1a3394bfe589d6c9561d05cb210b25d575bfc0251374e541d72dc2c43e8fc51f98dba46bdbd7a4c6efd775e1e5cab94c8e03540fdf4d1ea7aefe8298958b618a288a31bbc9fe7b2381200652d5b2eafc6a89f806102f753824ecef4cdcc3e7329dc8f7c93d94f98ba5cb51db8f615d59476b32bbe20111ddeb7ac6b9ac8cf66cf7b338e225bdedad4a2c5f0c2941808ee7bd2d2e59da7010ce6656f6b11fe5925508e5a266e0c6f079533c97fc0fb5559e06793ae9bfbfec8bf4d3114783acf6d0e709aa1144326d08d415e7afca80725dec248313e982de +90078999fd3c35b8afbf4066cbde335891365f0fc75c1286cdd88fa51fab94f9b8def7c9ac582a5dbcd95817afb7d1b48f63704e19c2baa4df347f48d4a6d603013c23f1e9611d595ebac37c,439e31ecafd806b8e573af44aad0b7143d82fbc725c963633d67665a2116949eed1bd5338839cb0f41ff79e4b5a7f0b3a2fdadcadf52d7379a935ad0357e7658ff2538b99a993ea6e9afdc9a2b1da9b68f9c9377ddc1caabf7334099043e0997f446dbbaeab14a507220ce36ef110128e0abdd3da6f98d2413e4742e82d749433c545eaba95151695b38d1e485c49ca747a11b83cab42896cf35b275490cbcc856b227c0bbb11ee110e37054b9d8e64e645e1bce138eae18118357c362ae2a729407efeff38ad2acfa4d17203d17b933479946e39c4e4bbc467c7b623042c4b770c179991bf159f8a1df1d3a13218a441c7a3f296c34b1736a62f1c09005cbf972a66bb46d7dc124bb43cedccd07f9c7993c9e365a13abaf64859cd4244223d074005906558147ee618f8c68403b3733aa633df77f4f743652ee53c26fa64d251c09c8adc99aee3d6ca13cac5c6a4b95b389e2fe51e11d85e060cb76e331628d0494216fb2378917d09a7558262de00a345d7ae026bcc7938bc3bc039e9c50a62f8fa7aab5ae44e8b9a1fca0b65de335f5d72fcbec9010ba19040c38b5b37e1f03ced896106c3254663a5ac8a547e5e94738eb86787cb237a2ae65a0d7dc3ef44711325bd1bd4db4abb1c17db9fae2c7defc2ce08aa1e7b68654f936355ec50abba8a1ac45c9d95f1c0669e8812f313d63dbc7f7dc40d2ea71dc8f9f1581f43a +64105eca863515c20e7cfbaa0a0b8809046164f374d691cdbd6508aaabc1819f9ac84b52bafc1b0fe7cddbc554b608c01c8904c669d8db316a0953a4c68ece324ec5a49ffdb59a1bd6a292aa0e,91349c4aca2ee1a2646a6a92e4335e7c1da9f8482c2791fb96734e3301123e4059f603bb4c42b4ff5584cce75960b5ad5f667faa54da85aca5febd5908ffe7a1ebd05ad9e4dfa8c8d8d92b7f94666c119de471326e1f673ea67eda5d66c8035e047ab08157e1228b4b09309f19a0208efe7be1788c2f77347c644b4394933f6aa3e10c1b9a984d12a6d0c68e280785efa11f1731580d6c71c98d6e6fcbcdf56dd55d87865adb395e7913dad6e9a4ec938a1d7e2391fb11cf6007fc9c02ea70f44b67edb1206dc86c00d1df6906c878ffd93b034f830c05f8571a6068d87a2ac42692dec62f4318f8fe6df3690c480e48fe406b85c9fcdaf558ac040ff15011b6c1ac183aeda7b00bd48e16b7977098ba9412b470b7e7f4016209a02f0f585c29c554b5cf8aba78e7e5e71447929e598046bae2bc32958e65a7f7aa29a29c2ec8b34e521bd3601f755bd42edf60b0d04539d4bf63ecc09943e0c12860f0c5665797a840e85496c4e3df04b36ce8fba42dda559d630bc2cec7459020fc32f1545b520b0806bac854e6974a28fb95b41eeaf1cf01dfb3e89b8861f205c100dfc063cd8393330f6a00fb379901d0c47ec2e4ea5d96722ef13fe456e03107ad1179625f968864fb40d7b64879535cca63cfdd660651fac389ce4864bc3b382073d74d5346e6499801fbbdb590c1d4d983bea74fa6a26fafa4e57b65be886d55a54622 +d4654be288b9f3b711c2d02015978a8cc57471d5680a092aa534f7372c71ceaab725a383c4fcf4d8deaa57fca3ce056f312961eccf9b86f14981ba5bed6ab5b4498e1f6c82c6cae6fc14845b3c8a,5f8ecc71a5d264abddaf1b4895cb11ec9dd50f3dccb1e1562f1840a0c196a85181be2b69011de4a3c75087a3a303555c074a281bee10e66aa2f15e6a531e5133b6075f84a82bacac7d771c3ebc74da2a1cc1921b3c20e99e2866031bf725d08b4400f38bfefa0f810f82fd1e4bc12dc9e20b3295745b7f132530583c44a18806f537d96b3f352e61adf285810d32758284d29ae60ff4845893ed07eaf2720282016cf95e28c9bd49f0ad80b87a4c71179ed9d5744843e811d9c162cf57013a7fa9aa9d0a313d44c6be7ff069506067817bfeb731eaff820c812765614f3c1a33abe050dcde56fd5c6fac1a43515e2f5cafbb00a75db2fa51145a994045b8f71a6998e6fe47cd467549e548ec4fb43c23e7759445bb36a444fb0c91db3f9a81f1048e21cf32bc3e427a6109de84fd0ea8b006ced78d08bb7c5678ee401eb2b73f0cd2638b2c7134edf7f40166eb23d56f7e4bed122b70981f8133b594121abead3e6c96e0c2d76d93b4323dc8cbd869a1811cab6285e0caf2c021792a759f8fb907fa45e2b276383f6a385eb299fa5c070ac7b1b713685d6454afb9ae4850aeeba6a042f25b1902d18cf5069edee770ca2b342b3d3208bdebfd50822b1ca0c9526306c061b2b4ec6724a35d86b352504d79f44ea7b1a8926c392001eaf2018d4840500e5500472ab05593f3aee0250c27ebdb3eeb5955dd7d73dda812d988ff45 +12d9394888305ac96e65f2bf0e1b18c29c90fe9d714dd59f651f52b88b3008c588435548066ea2fc4c101118c91f32556224a540de6efddbca296ef1fb00341f5b01fecfc146bdb251b3bdad556cd2,ff65b09e0a806202e10997ec4f42a049e0a97654626056ebf7b92a44e06aa3d11769160a5ebf6357dd6591b373f9943110f609ba15b5893e7869b17c381b549267130047c1286ed9c56f83776a0f99124f8e8939c8ead777da433f8c786beb7b16b3ca4e4f13cef93b4236d82e870cd3c6945fd7b8f0ca527aee5ba66b753d0e6dc84e4acc7d51686c2d9e7e3a31bb0731fd0ef488f1cae2a8ca588b428068e09e63696f05b71bfdbd89f4e7dcac2bb804939868dfe7849fc68b095c8c6e7bfddb3f35e9a8c1b353158c1f3533a0a327789ca271f6b5ee1711adbe112166ecf76bd0bc91bf957d4b60d84440beaccacbce2c2775ad1a2437ffa3b7dcfe2b4a0cbde28b09e4c306d8133eca952810d22c132bdc680cfc7e74bf5949e7d532da24aa71b22b4576ca48ec1fb264d157a0cec81377adc125f29b27cff0640e0cde89d3875b749e412a50a919a08586a62b8788c4aceaacc2842c7799d125e99c6a2c1f6150cc503fd420f5900dc509b4815a54b893b8f36b1fe27052a5c66324d7eae83957db1ff627508b77fa072f2a01c4f406b6fefc5f552cb38ea06fc2dba6a9428f4980d880751e459a1d5b9b3e637917f177920314c7882afc3298b3e21e18cc126e690a594fefa0ab722e2b1edd1c24c0eb118f9c16e4964d637c4bfc6865b9e290c4db71c510a1ce623132fdc742ccb5c5bbbbaefcfe6f95f40c861964f5 +871a0d7a5f36c3da1dfce57acd8ab8487c274fad336bc137ebd6ff4658b547c1dcfab65f037aa58f35ef16aff4abe77ba61f65826f7be681b5b6d5a1ea8085e2ae9cd5cf0991878a311b549a6d6af230,0c3f7284a63d46a75707ece96d5dd51409a0e601765e8760f696175433bf34a781b7dcf131e425f25c5cce52fb457cb5745e62e7a8f9bcbcb9113fba1299d82e403e34a6e7438660d0c7930b8a5cf3f127084885447a91d1f5d5f117e3ee8e2c529abe188745609e9948e02d82f1f87855bbf46e8e4fd39402f749ad00fe886759956faf77e0689485c08022343167e23180f5f1b1d33b8beb5f73ec818b92426ce60f5016b8e644dbacdba9900caa61d75985b5d063a3bbdd5b95937483a970bac40a0664e95c7c4f26a2791754d77a6fe5c8a80dc3d7321badcee567b7950a686b1490fb0ca411f08fdaa06753b67477f67a1caaa38f09530fe58184ca552decc0e54b4b0073e77ff4351fdfc5f7c6e6f153935c1e5288ecb57c3dd6022dd0854b2f986e292fcafad0421aaeb47a7ba53c981defe9cfb53c95eaa02ac7f1dd155e476b6746dd2f1692a7e2d6edf79e795924a0b919beb278a2e65af71fa1cac81c5d5efb138b1dd374f98b98cb5a14d96d9249f0f9cd42856a275f92075330b1926dde0bdbf123a8becbb6b6b3797dd89ba4eac728e6b56696a752a07eeb1a09810d450b2682f2699dc6117bfb45fe306abb889976838dd1bf31791402ce24f2895f70434fad1ad4dc86f0f309ee90fafacc7e72c0b717289d695e4000fadc058a119d9c4bde9ac0f8b45cad48c78bd2686105d9a27680cb82800509914206 +e90b4ffef4d457bc7711ff4aa72231ca25af6b2e206f8bf859d8758b89a7cd36105db2538d06da83bad5f663ba11a5f6f61f236fd5f8d53c5e89f183a3cec615b50c7c681e773d109ff7491b5cc22296c5,88c391f4788dbba363859497f71794349f3a81cc9d1746ca273208680a0ce4accc12021e1efa31ae40ea75a009e95da25f9f0cf451f658739e2453280ec6253bfc1d8dd72e91b4abdcfcb240c6efb4e829934bef46069274a60b268df86a7f265b23089dcc09d77b8bf9a02a84ecfbca193208aed46101f48c10778619c154f880893fc0c440662ab04106b272a9fd18b8723eacdb8ad190dd58e9514bcd43a9299fb361da76f7e079a0e83615b6cce6e69ce3e724c36561c728010134ade4c44b18d1fce86289310d30195a936bb1e23c0cf98dfad41e6007e56c905f5db8dc13b56e16c3454146c31c9866628736b5f537268e0ffe463dbeb2f3daf103d24f95cf5ba0a4d94c68d61b6319389761ef1a0f22b3d416e67af916aa4772277f4e51d3a8df919300805a0caf8c36a43215e7307b49aa9697b6febeeec4f4f5f7f664c120ff27c8ddca2224cea4733db2d1a1c28f8c030a23039bd0514ad6808805fb5111f514a10efec4f425e1c91b0ee3dbff70ccf6346e6f4640db8184da28fd8c63156b28226491c1922b862203f23c870a2d88eb5ff5a6930820a4d81a62dd8c4f381f35c18012336011dcf71d58d167f8c5bbd3e5f0f278507d085f01b0db2ea2860490aabe253df4694288ea862f9ab78fc60827241768dfe617e725482df62275031474592a57fd33fffdd837654c22c96424a09a62a5f146fcbce1f2ad +e728de62d75856500c4c77a428612cd804f30c3f10d36fb219c5ca0aa30726ab190e5f3f279e0733d77e7267c17be27d21650a9a4d1e32f649627638dbada9702c7ca303269ed14014b2f3cf8b894eac8554,20f8fca8bc4274e6ce95c558fcf5efe7f6a43fb47ba3a4aeb4afbcb53dbf5bf224654a242dfc1f318a4a26924e5f2759abc96d8b9c50c7185b5a7c3ace2bc0adaf1e39c6eefd79cf89d2f3a8829f180699df802662f285960eb6676560655facd507528d862473623aae970e559117687f87af4a981c7f2f1e40a1e01f2a3ac0e89d1c62ed751b9b178155f2a72f215e51e49a4e585f4422c757f891ad4004fa618da654ba3ce4c6a7614924b9c0abb8b2c6cde9b8ccf22a1e30a21a33723992ade39424252850535da5fef4f047cd998ec7ad87dc784da7d755bfb9d5f6cdc9ee52ba15cfb7f1429a15f8f0c67f98d6e44cbc8ba16d0dfda6d72fbc1a44932aefc2d8a618814957d8b748e0ca0d3b5095bc8785b6c20053e4a204343316d74fc96e16c775ab43cc33ff2b4f4ce85086d47bcd132c0b0e196344b01cf6e8bda3e06e2618d5604bb5040474413fb54669bb744704d89c5b06deea58d4e29f6df9c926a6cea1297967dc66583654fdd3f6449033a496199e4b6f37e0fb31be50747376122951575095467010006d5f9ea709d0f15927a060d828af4180393eaafa27701b919daf424bfdb3f59af0b40d0a4890006c98894bdf402861c76655414ae631a50fd80f0e5c63002b604ad1ab9684c094bcdb82c0540fd6e5924ac51f3fc6da074ac7dd7da1a87a633c16ecde716641975182803039231320e9fa16430b +6348f229e7b1df3b770c77544e5166e081850fa1c6c88169db74c76e42eb983facb276ad6a0d1fa7b50d3e3b6fcd799ec97470920a7abed47d288ff883e24ca21c7f8016b93bb9b9e078bdb9703d2b781b616e,f0e4f184d33e8b5f8aabc173b04e61bfb420e34ad22e3e8ac318ad06d92e8b5dfdf4b0f28157fc9e7d64545f527c805d9f953626bc35923c922fc09e7d2947d342bf91e54ef34fb5987704f7d0c36c9a9347f3a99027e192907342b2531bd1da066d34ecc1fb50c85c261da65f4af9c2c9e93775f39d632e3dfc1216abbbcc8dd2680f8081a2816bbdc1646540cefe4881fce2ed57b4822e11461b5e6443ae2de5cca426258d68b01520594b9547a714b0a377ad398f42599358f7f33855e64f12f88d9e2909e6397acf34acf79632afde5711858814b84f472ebcd03ebc9671f3985c99dcab92fed40de97a3c425d38dbc48ed34c2023771edfa4f988931b7bab6fdd612d4ab6dc39d43e66d74307ea8a9359ad73e0965e885ad919f12e6c645c0dc9925ce65f5f3eb132c7090bdff4230cb16b6c9567aa62dd92949af10a6fe66cc50b29cf189dbb521477a99dc45c937856de855c303a5eec572da0cb0f584961971a15d8b0907151a046cc1b193e55f7e8419601c1699db52bbff3142270f22d628f53a18e64736c1dcc09f7497cb56abd9af5917ec07c35bfe8d041d00b379067f2d85e05732d5270c61c592f8088deda0cb76bb2826492a61be9270a8cd7f9d26f51db2207763bf41a465ecc8b877fc53139925d45541ec090deb2622864d9e3529f0f23b090912e04bb95f56b1bd33381611d973ae347fcc232cbff00 +4b127fde5de733a1680c2790363627e63ac8a3f1b4707d982caea258655d9bf18f89afe54127482ba01e08845594b671306a025c9a5c5b6f93b0a39522dc877437be5c2436cbf300ce7ab6747934fcfc30aeaaf6,1893ff8490baef747390acac15d42cedb909c2ff3d30b2250a3f9de11e79943b9aaa5c5747736e29e559f93115b0c029ad6ad8779804083c3f211c8d6cee56ae65f0b650cc45b9df5436456879f62648ec81fbf968583582cf4063b5f007e1b04a9bcb2249833170c1968e3040c808f2d9eba238e74931cbafafd94690a275d1a1c1c29f71b8dcccacc4e9543ff05900417d7e46c64fb4454b3ddb7a0bc01b85a0aecbdf9272eefbda881d2abe77adc9f17a26c50de64def1ad2a09a79ec9f9c64895540fd56e93423dd7df3e566d168e2560d8336177937f46df87ac29f9fbdee919dd8d2462fc1db70e27b992e35f1376459fc15b76fdc3c6d9c3f6d994b300423f154b6fb28f845aa3dc8537de62d81c78326bbf8a89e39c865f395be31b38bad26cfd4cd866b872d427ece798968e66658839121301bc52e07cae272b6c373b01c4ecd42f75d3cd45b2cb1131179a9f21f8cc84c08368547dacccd56985477b4067b865b0268c1366d35c59d7c4ebe54e0c7eb383860eecffe308a2e71858ace60ee4a2898ffffc507f0011f47b16bc9d696955c8e2c7fb64f4ee9dc9f9cf9987ee2ccb0fb780bff780c4253e398763ac6668ff7082a848bd5e1e31e6b5e1e771f7ae21918c1ada32e788d89822ecd3029ac5604132a681aed4348b631a2c9ccf19d14cb10f570e3b7f9f301b041e6b901cc007cdb125ad9cfdf7a889aeb +08461f006cff4cc64b752c957287e5a0faabc05c9bff89d23fd902d324c79903b48fcb8f8f4b01f3e4ddb483593d25f000386698f5ade7faade9615fdc50d32785ea51d49894e45baa3dc707e224688c6408b68b11,56758ce6042783cf0d18a2c44fbf953065571bcfc3d19deec28f0d6564b18b227b6daebae658dd065f414e4ffaf756d10820fe38c61a767bf2fd0c242ea3e994ccc6516fcf68bd7514833e061a65392d175cb6eb87374de426730e4e771c7905706bb5d7e3364f946b8a061462519d0be6f72b0220451f2c6c6e5ce217262323e4fc81dbff169dca043487d88f02bb5c22434fc31043603a5140364b7c2cf179ff13241ced0911adce30c4d7b7eea34e094c86b522ea88f0126943fc2e3f8c1c81753c4a10b844add7868457dfc91094458806b2c115a052bd616161aed4bc1690e5daa09badffb3be59318d7abec04e7b5b439b92e63ba3ebde71aae8c5bec81c9073072ea49e85b53539c2462a446448f4d362136638eec10f227a0a977b3460499a77a9e951124b55340e49f9d2b0a60808153d357b585f2c940398b12bb807e730da556c3d156d84e5c0be2c625e3fa725ac5659e07348894842711a704a15201c72f4fd2e54cae47531c07c7d1fdbc61446e35666175b2cb7b25a5feedc1e5fefd2547f408f0e91d65c7ad0e636fc7d8bafba355275aacd0e2bfaae9ff7b750ae20c828d66793a7d275de882deb8a97002c9b7b90f5aba4d1e7b9d5e4bab59dcc44e487be10854c76d2ee6eb5628f1e791b731e5b1cf339270e90b3f25aa78b28efdb906ab2d5560d976aa8fd4a560a29de12c47a360131bb5f1f8fd71a +68c8f8849b120e6e0c9969a5866af591a829b92f33cd9a4a3196957a148c49138e1e2f5c7619a6d5edebe995acd81ec8bb9c7b9cfca678d081ea9e25a75d39db04e18d475920ce828b94e72241f24db72546b352a0e4,d5076fe06dc454041f41d77df1680958cb4eb8311940d58cba2d6ccc1b57ef7d66d0d947b068928e0284a292d6f3610be7ccdcd2117d59edf468f4cef33de2be52adfea056f586047f8fbd3bdfded58237c4cf541200488a3de301d5f36c735c387dd852959609a9609d370f63ec8e1649119f6966887c38c99f94b2293ce52ee234aa5af55b0eb3afb8b5a1d283bde8f3580f5ad1951d8bedb834eecbac86ca72435b52519091d94647acbbcb1b55dfd9a531c6c966b481fefa1396cf42fbe362ecf403fb046aff1b080d47bc282f4d053ba30c2a00364e11ef82feffc4096df1f8ab109b45331611a8ac84b8df0b7b94952a5ac80b075bffbf16065d8e5a47f771c0f983e045d4104b7e8e5226ebd9d7add387de852df26ee9da3ee70c7e20b877a45797de836548664026a380f306705232ed37f4104114d58065b1c74441eb9cbf00b8073325b40851b44033fa4e65148161b0de0c1517b6830cf5417ea3c004b7465c48f9b2766c43cce5738e9eef6d9d0f296dcbdb41db35924ec1b746225142775268908a63ebe1240cec4f02972523c8c7de4b44530d1821bd43694647f355fc0473d7bd4d3e6d30ea453efdeac396e0dc03f796f70709f118920f8a76d4d85da2b5dc2964a8824bb96aa892e43fcad95470cdde85433d5cab38424609a9682e1fedf7776f2d77f2ffd9707ff110387de49f9422f11933d6cce6ddf1 +b8d56472954e31fb54e28fca743f84d8dc34891cb564c64b08f7b71636debd64ca1edbdba7fc5c3e40049ce982bba8c7e0703034e331384695e9de76b5104f2fbc4535ecbeebc33bc27f29f18f6f27e8023b0fbb6f563c,904786dcb5a8f3c4be4dc96cf168c65efd3de65fbe92dfd96b1cb99f33581f561e02a9d85740fc7295726f36f966392956b2c61122481d7da372662d0f2b42beb4228877bb85a3afb52c689b3da75637b52b81b9182ea56980e2c0afd0d27644d0cd86b770fb3f4ff2618ff000ff7846055449e1acb3721f03a0e65fc377f189824e06b13ea6a797dc7e8a8af064075a9424a709456cba62c43b51f4145d6f5456159678b09ff1a97bb19f4a41a836b0e6090617a2bb9b9abb7d4b6777489ff1cc36e6ff828bb27b26dd61245a3f583839f4efa1c453d6d5e9b2b3947eee25d006de476bb37d505fc5f0ac0ab97f8b56b8587a8ff2eb61c3f83598120b469e9cbc5fc03afe2f72ee0b117f818eb8b33cd538afad801cb75d4b2f51578d628a1701df56b9b9bbf10a30de0893b6e3cad4e264c5829b1c5c35b3a1b859ba7e49c29c93f98e69ebebf8909f535956dcf767c51e2afc49103c052aac1a39d02909383ac02ab8220e4985872916dd6deaa9e3f57475a33b0dec69f266f1b990df7f9f85eaa82fa226dbdb94292b91c3f124b8ba13c3abe0908e52b67ea7131e61afbf20293a61cb3659415ee890c151a5628225d61ded612dad545b62d819a4f3d1ade9cae43b9cfdfa4c32a8d16116a58ee3743483663e9401cf1280da465025efb103139e4e8850d1329f1b9bf5e1a8c05d20e963e824eae0af586635d19d13244d +0d58ac665fa84342e60cefee31b1a4eacdb092f122dfc68309077aed1f3e528f578859ee9e4cefb4a728e946324927b675cd4f4ac84f64db3dacfe850c1dd18744c74ceccd9fe4dc214085108f404eab6d8f452b5442a47d,9fb52b8120553ca1f4b801fcb753dbb0e45af3f160749a05fc2adf8ff1f507dc304214d785c5e0797c2f6f767d76a3ee22cbe0d114f5f8c32bbf8da8505090381e16064c001f1807289d0db586c09a85ef727f393bd2ef1f95cdc1777e137b43de60d425c5f5d685d43d5f6912458fda3f4acecdc2024cb7e6f4340fcf6333cb29ba1801aa80c0f8a248a21305ba62d62e689d55d905eb03368783cb32f765a55d3061774c9344e85c35f8b944420f47070b34c9e8996c281d890e591d5b5cef03463d86e88211917e7db7f5bd4f36565bd855efddb859c97c206d5f3836840ff3863b93e17aa19281202af6ec0b1b5dcc7c00d9dc08c2dcccae41ee2fb8e591a4aadadf2b28fc2133067d45f98b4ecbbb234593159888f832cdf1bd4864b8b720e42219a220c7feaf6c0d6a1c14af2f1020218c65a475386a71788f7bfdb172b12819f2d78d6d200382992d9f39500c4f15e44e1e48fd5734d110ffd1967e098f673492630074df33434c36ec9fe067e8e794794191f355c2d564fa4bb691702dc55f4e6c83d1c487abb281f0246814a1ebe626f05f06d09a371afb4e746653872f83b42509504b057db7bf06afdc913f679eae1fa4d945b93c4bb07e70f48f147bd668b121b05a777a5637cfe24a2bc155c97b9330b3e3b848f689a00ab1f916f321fec05763ddc6d6563e7aaa3ca309acecbb0884dec5815558d8ff72e820 +1755e2d2e5d1c1b0156456b539753ff416651d44698e87002dcf61dcfa2b4e72f264d9ad591df1fdee7b41b2eb00283c5aebb3411323b672eaa145c5125185104f20f335804b02325b6dea65603f349f4d5d8b782dd3469ccd,906bfc0b13dbd86acc32b93c56c7187acc1e5984c1a7ab8cb4ec39a00355837f70b6790360ac9c447e28e93cdfb58cfab3dc8ee4c2378e68298eca240869fb5652803f590245f8f40810febd33ff25794e39758e9984e47626eea8ab2145cd2e260873d4524759a855b2da0c8a80c6c365e76e8b37ab4b9a6d9882870dc22f61a341fc932152be5c84af645eb71e6713b1d9b582491653a8365be531d565b27159f9c5c7faeca04fe1e626c1c9a7e7ff3882662b084b827ba96e865b753fe73e3936e47ef9f1ea151878f671af51722a4755041960ec2a7c2c4cd364c4914f64e90bcaffbef147e935a6b03166065506fa7f20a707ad4771ff026d7bb0db7e744fecd63782dcbd9da7573d77f82e6a5446b1595f7ef81084caeae91e522fa604a370612a6bf464d5872ecdddf46285a407d7835e22438e82e62ca0f1fdf7b420e15f9dc061a3519b8f389022bd06e9b31a34f854f0f75fb9cc538adc0ae1d981db68c17e6f3a91d6c60efbaa357a49fbd148ab7ee2d96eaa8909782e74a9895890d02fe8c8b09b8a9f2a8e18200825c51896c42c59af9ad93d847f4a4fcff008d1bb8d6bb2e7c75912a086a23646939de69d7bc42f568fcb076ef9c37912bcbc0259ffe04ca17f799ff7aca1d34fbea76ebefdcf8d22bda634de9b6852a5da831edd0b92ac09d9d8235a0af2bd5fa6b0157722115561efe7c14c22145137d729 +b180de1a611111ee7584ba2c4b020598cd574ac77e404e853d15a101c6f5a2e5c801d7d85dc95286a1804c870bb9f00fd4dcb03aa8328275158819dcad7253f3e3d237aeaa7979268a5db1c6ce08a9ec7c2579783c8afc1f91a7,e2746cd339332913e436fdc5b21215b39d0326e95882f291849bef33afc6c7b9a02f438c2e6f4175de5ff04b79256b845213b917b34a0111814af58b06c8b5af9d2478ad18f012373b9f030abb79bd7bf380c2c2ef07061e75d7ba113845c80e43bb718377732064b80339e8316068bcfd37abe6aea6eda3c58bbf95a77799155b30fd6776012f098ef9f29db911e11baa67937a52ee25c429836fa45a2adcfbc704a404af8421fb3b75dfea979f65415ce0e9b6d17b2e5825929115dafa8e9a51e16f8e2563876702e04854d48ac2159bb782aa6b1b764a8359f7ec423cb00e9915bc63b27f6e758402b56799d7c3093b1a222ffb8c0f08273a6d5115d2cc7429b9382763807fcf97ba5ee82f78f835bcfa65645ad36f56d595ed06924574b581d6c460bb0209cd69581732ef9d1de78f0b8109a6d4c271f2ac07179a84bf36ae328b1d0862f65b4abfffc0e4b6a17fde288304234cc2447abaaa223d16db5aae8e026d17a9addba9c51f3b63446defbb9cc80323e6b22dfee9d9e438bcf5e14eddc490d9dcec2f5c635d32a1b6c64d1cfd07dc72e954c97db2a6e82db75575172f6ab0d4519158f84c836f3b7b4830ce0856c37839dd7d7fab6a9ab00f9dbc020ae45c6450c257b7c0661cd75f515ee380c2864f0610a682d49cb4d19409a317aa0d6667e3e61fbc2d9027f4a5bf4fb1a0d142183f84ffefeb92ead6ecb2a9 +cf3583cbdfd4cbc17063b1e7d90b02f0e6e2ee05f99d77e24e560392535e47e05077157f96813544a17046914f9efb64762a23cf7a49fe52a0a4c01c630cfe8727b81fb99a89ff7cc11dca5173057e0417b8fe7a9efba6d95c555f,0b82455171770082ff4a4fad8a5de99df716033d27071278e9c1256d63c34778980889fdb7661153982eeb0ff904e24d31c8d48d89f412178e527d054f822dd2df6c4fd555e55ccf3452fec05f9cb3bd4f0b4d2ee851ee3e22ed180f0c02e618563ba89e42c4c6a7da1a9256029b6449a9c63625cefcd003f936613092cf59f676ac91298c820436f58bcbb2f61f3945e67353c854cc384d607dc11b906a1c1a5143d9aaa294cbe03f946cf2703c0983727faacafab85c6725e8a9caa7aa69891799c560bf6b885255674a2940deae220bbda252e636c4526449ba895de17312ee0bd0520fa68db28bf122219e571c081df18c2437e4174d1d6b529e394c4090e5fa957a996564d11a3b4652522fe2999903f6095422b4aee2d47f2cdd4301bbe42af671f58228d76d7cbfdce870242872ef85d0d1e18cea60c87565e48a1463030566c9e34df8829a58fa36770e861d6543b50ac6a439abc062236a065bbdd866a237c09897f3ce2ea5b0b1d8b576048685a53da7a409fc6f121da36ac23b9419f254c76e7024faff9d45bee4392ce4c968e737e8f9eecd4800f7c928e30ef664fd4d2a7150954e0599ce5c4f07b9351a408ce35166da4240f1e751ca4a7cc4946f5451a0bd137857dc003b61424a6682d942f4da9644672ece7a1eee295eef46b5aaba3f46099e93e01be7ad9a5e27d378701cf9514b374204d387145349f5 +072fc02340ef99115bad72f92c01e4c093b9599f6cfc45cb380ee686cb5eb019e806ab9bd55e634ab10aa62a9510cc0672cd3eddb589c7df2b67fcd3329f61b1a4441eca87a33c8f55da4fbbad5cf2b2527b8e983bb31a2fadec7523,4167bce24865262adadc78e611a960807758ec6d0d46e3cac221b4fe9818937092bd3ac5219f0fd765b613f2eb7e36a5f48fcbe3cecc67540f9282db1842f95cecf0648c12e52e7ea0c96ff7249a8446d0ddd7625bc55568642da2f2cc897b14d2995dc382293cf2dba9a63eab9f6940ac9ca87fe5cffa196dc930ff3353e34313894a3d2a0a86b0fcf7631735a2c663bcb71d5947c4b2e97441982b791a4f20bb86f7fb033210e4fe58dce7256309fdbecd7d7f3fef2d1df7e0247ff981d417c56eb7b14b7c9453786c7b30f173c372275324e834d94dbc6d10714407ea7886d92f810f2dbafd57484a09d70951cf85c0b7820643d0e7ef706934cea0cccf94b1d1f75f1e05b5d033a5ce1f804c3bc7a9ccf00c8cfebdb62f8c654805c5acd4fbeecb6745803721d17f2b8303a98abb9b8618107b4493735b4001757890d772f78093aaeca244e5297cfbf0b9442370c9fe0efec199201e8667d61fe4b9ce20ede827433c91f521ef2b296b15cff658e18226f17df114675f57e988a14b9f104f933bb685a3a9dbda96a9b87f2eafe028a7c656300814692c3dcf00d9f07cff361f601bf2a1fac9ea58d7543604382ed7cf35de7ad7355247318796466081fbaa05fdaa65665448de1fe67ab560250a213fe60f506e9eee720fa762af7d2a23492597bf37e0067997095ffd63480bfaff67c084edc5be6c0bfff969bf06e25e +76eecf956a52649f877528146de33df249cd800e21830f65e90f0f25ca9d6540fde40603230eca6760f1139c7f268deba2060631eea92b1fff05f93fd5572fbe29579ecd48bc3a8d6c2eb4a6b26e38d6c5fbf2c08044aeea470a8f2f26,4ec44e5e1f62935eca450494add6aef7db1c1c8353f1354c4c9366e9e56a8d5bdd02383b9a04ba4927959531b9169606cd982b6b72927d2e433d900f3b402d7f5bca979b3742e2e2c1df8d4e163628357aeb37c94161f8a9269832dc28a4e4983b45140a5a7c9a4313fe39bb2c117453c2e5cec3c0d4d5c1169b042e319c77712c0171e3487c590fe9b223b7f681f6c4b46adc912baba3f1e190cb66da0b38b3389abcaca3d4eacc26046cc71c4b3ee1520ea84a1b8897a7e39b9efd65130de8f694a0a81f4ce994a0f4fe1cd94439d6551ca8b695a5f22ec51022ada24c3ebf42840c42b2e345f8ac07bd5561db40d66da87fff248909eafa8d35c380133ac87303c83a8368492406b45424cd0c7143bca5bf6ddb6b2fa45fdf45b96bd1cb33f16c1843985c5a8b1b902361d10b235f3965457ccbf2ade247cd371b9ad808fecfd503272d4918bc3ca6edf09bdecd56dff372de8e2e1d35ccf55e7e81ac5dd717c49f492bd1b242331eb66287f10e15d7bc69dee9c3f1032c162b0845083ed653d38f270747510f82e43f0eae6ebdfcaf296d360998a5ae8e735fce78aee2332f7766fa8b289b46cd1f129bec02dd6c3d7c63d544c22687ad7e4802e0363d05b8b7965c1d9c9ee8d08b0b54a8d55d2a52e0a053d31857ef350c713caf7d7b00fa5513cbbd6fcccaac97501e3964ddb3012d2e101c59cb8fd8b28aa567292e27 +7adc0b6693e61c269f278e6944a5a2d8300981e40022f839ac644387bfac9086650085c2cdc585fea47b9d2e52d65a2b29a7dc370401ef5d60dd0d21f9e2b90fae919319b14b8c5565b0423cefb827d5f1203302a9d01523498a4db10374,4d2597545337647a12662a7a13065021a6d206ebd13459db348c1f5361c5990daff469677e61da9a4add24a1b4adc67a092bdcf80d98c0a858ea96b0be188619a82a1f5055b461660cf805ae75e4f869cb830e153e840d6f164deabe9065695f6c8f982bbb7d2acbfcd7de93e8028ac978e0d78ce878d3f813abf1e1b51806099da8d76e16c47d0c1d6cb70e766f5f3f2336642b9bdc2958deea3d6efc30fc4e54a90fdca6bfa5e8d4410d38cece522b3a32f11d4599d464e9cf16949385110d71d86a2943c03e67b19da04ecdf7d30a3b9e16d256d5cb1545b1312b6e62ae028d61317e689cc3eac351b034e83cbe91140e20e292a3af44c27a026dca5674b9497a10876ca0f21d79184922ce71fc11ac98072c2368f70d113a413e2b9faf616e3729e515fe22146a35cb93d0178c1c07ff9f403ba947759ca0fbb09fd66c7eb562307f46c074501ea7418fc64911ac940c28e75e2146231e0b94893efdb0ded97478796e87dd906fffe9232368cd0673f9966e7b312c44f26649355448fe2faeea198a5f6eb45040d56068e5b98c02dd948277e1fe5061effcb028b61748e2d10128e0e0f7b70ec8cc6ffd071c65b5c1b9ced47c9b0df76d3b0a5255e27391409b07b0c112ca444e2e926bfcffb1ae7b00252f6831fff4992d63ba2114502df0a3489ac58f463c8f9a1b3cbd3c8836f4caa301b7336d8dcd255c0762c15e24 +e1fffa9826cce8b86bccefb8794e48c46cdf372013f782eced1e378269b7be2b7bf51374092261ae120e822be685f2e7a83664bcfbe38fe8633f24e633ffe1988e1bc5acf59a587079a57a910bda60060e85b5f5b6f776f0529639d9cce4bd,05a819096b5b6835090cad5109cd34f40a234f1569b226c42f0207ae06e6eb37a50ad688c81a98c9e747beb1bb2ad741454430c0e36a8b4de03a1de7c3d1fbd836f90ddbf10b10ad9dc427f0039de7c0a8336b10a5f2a24ef2a0de7d5765abe3eccae743ad3339521d78006f5859339f15b5a4c82fe758294cdcad306d30e57ebfca0c22042fd0ca678bf2e5d59cc39cf1174b1629243115b9247b620bb14217c7edea7cbfacd209fe77206275ca39d15f6995e27108c9740a27e98bc205606d68f4d5592756390dcf9c3b5c58585142bb6e31928ab39843538001d792db744145e5e148f15336c1d6f334608d514c8a0d28515c17cd88c47aafc95a7d42785d8425aae5d2d8d74a90914aa30bd428f0282e51445deef80b7c1a4429e4e810c753de4ab21d2e6e895fa4797f3b4c267cfb123c337cbe0ed977a9c3d4147780dd20b2e0c1781e3a8ec690f3d32f38d55d8ae641f61537e0649fd681857156837dd46d1e6005f5747882f895684a6817d40ea1df7b6b049db621ca257a3705896da9b5e38a6d5efd1d2fb4906285b1af522d34a5f141c1b72e74fbf02c9bfc38d744c4d6b77c32317774f4f3743b7e684a72ab54beae64994f20dc8ab350facab35726b55667abcdc7cdc18576076b5fcaab6264687d497d32ec0d0a5c42fef8899441f36f7b72925326885e1b67d59d7bc7de352f8844f44c3b634753812844e5 +69f9abba65592ee01db4dce52dbab90b08fc04193602792ee4daa263033d59081587b09bbe49d0b49c9825d22840b2ff5d9c5155f975f8f2c2e7a90c75d2e4a8040fe39f63bbafb403d9e28cc3b86e04e394a9c9e8065bd3c85fa9f0c7891600,b83d4f95feafc7e5aa60bb1035f69c8074b1a25ff516ad6a18de1808ae64ae212b63fd05f983a65baf28b228ea3ab587b163e334a70ecea2691a77ac940259827355c5459d074532a3efd811f419e29fd67d8ce82bb4f79451f6ab0a8eac6bc48713a04f318aa45da6246fb8cd9c866fafc9a48c5e6c6d05d501d00e08f7d4320e5e294fca2b6439dd7ea3bef65cfcf256e9c4e6f902bd9f6aefa2af303e0028d0dd0b7e266f31e21a23f546fc4ceb9bea5a4034d3ddf7bf63b546f8a1d73f9f56e1c70b6b5e1ecbc244651322025086a933d94d1f21c9ba03493e38d28cddf351f4dec99c734589cc45684dee9aac79f367b940d6e1ab57afdaff422f9d60e83fd6a080d60267d19de6626fccde0759697dc7ccec6384b7ac7e936a7f12e134c053b80cfdc38609149b277b9f6881495562eb466b99d4d4a1b80c3751f51b3d53261dd5bbdaf1b5401373140c35d31907ea197397dfea7c420a80c2151e73e0ee8e27495b0c9eda13b93e8ddf9426c26995317cd273960301973faa9aafebdec14d92466b059d3fa7cdd533075f5861c538d69de08f490616b650ab5a0fd177b500f05e011ae3ac06c2480816770d0eef7908761af08302dfcac984be0b3e60affcf5281fc6e28aee30421e1dbef6775ca9bcb2803954c0be501d55d5d0a1cc7882ab5f1287b5a3ef564b91735b9ca85d5e7103d0175b2ca00eac7b627bae5e +38a10a352ca5aedfa8e19c64787d8e9c3a75dbf3b8674bfab29b5dbfc15a63d10fae66cd1a6e6d2452d557967eaad89a4c98449787b0b3164ca5b717a93f24eb0b506ceb70cbbcb8d72b2a72993f909aad92f044e0b5a2c9ac9cb16a0ca2f81f49,5a81fb81f8cb6473c04930bdc5c0a9ca96d4a500a7ba5a9167491573aa7178101d64f46a93486406614ab9f397e78b0198fc988cca849ef70c39b0b3a844493439ceca2b7cff8a32d18285bbd32b1e5ee26ab0f82626f4130c1b40cd6e2c9dbd6677e6644a1ed6a016dbda139b868fc2f7c9263bf4535e8ecc24dc626b1f3abf4b08e229ccd076dfccd89c8eddc77e9ff0252bdec35dbf712cf0a5bbba7b4c7b702cb9353ea4ba3d0e0df48d6c56d0b51ca269c9e428b22951555c8ce65b5704cc3f4ed38649474c4c049a63894405186e116e616d686c7c033cfdb75b8202fc6b6eeaef697a4f5277da6c5e7eb9814a6798262535292ab6791633cd687e68ef223464493ae8d1e27f8b2f483f5b137e48f4390cc27d96a694971b28c9cdb1a24648a0e0573141da6a1ab54789199e8e909f6fdb0766dea735e2d87ccbf975fe8cdd6c728df888fed6f049008d349a476eb63a87e0cda622f9b611278868e8396bf4e878bfb58aa847f04c2e3a90dbf386954874bb7b1e8cec42f1ac16c1824f328af9cb154cafd4c9e2348a02b0f9638c8562655cd5e3fc2bded644db61ea0c4dd27e8b79c7be52f55c321619b5c8beda60d00dd3da3c19d4c226adf2d5c4a66518940f2441bcaffa704c80900512516be2710301579f023393892fb27ee9dbc71ad34ef26651e133b3c21d8914bb6e9446f11288e1a76431c3999686881d62 +6d8c6e449bc13634f115749c248c17cd148b72157a2c37bf8969ea83b4d6ba8c0ee2711c28ee11495f43049596520ce436004b026b6c1f7292b9c436b055cbb72d530d860d1276a1502a5140e3c3f54a93663e4d20edec32d284e25564f624955b52,e41027e76a055f0a826481c650fc24f7816460ed519af8802ab191e411eca719ca1696ea14cd62306071d4e1dd65333619d0193d9830b6e8796234f892010681923bf30a1a0ab89d82e36dcef3acc00dd286b84240d0282f5ae182ffb84bda59531c519374ed5a2e80db2137bee790cf49b9faa524f75abcdc5ac3c3027f6dca443b2cb5976b9b8d66e9eaa1f9f62a23d5c9a9d5fec16a5925eccf1021d3253bd67f471ba1530c0601dd96a4d7ed6e37dea3efb24284b61002158af78e35f8bd617c9e7d33fa4128c31980a6d8631a009feb0039b635d1030c200ab651c3701cebe8f2caaba57e452c0e8fe41facfb398a2769aabccb21ad2aa39ddb53ec706e796e7327e30fb4a631e6f2a35a8dca86769bf6697f8490ec5980f3143ea2fb79faa9a5f2ac7b5030170a4548af817cd80c26e1b013bdece9cbfc553464f1597077e3ed435804dcff5fe05bd39e87b9b35d9f2810c32eef8e30459566ea3cf380a7f9e1e2bd3e4843d06b018b55006fdb22ee1ccc0ae615917e8d17fb019f7419fedb242f0676ff4815989821135073e5cf91df42cc6c6f532d3bd8be9118ea6e583d360f1f8c20600a740d9310a984af3c82a48fba84a84aff42f2f1ec8c4115b5704704ac2073f2014bbef1913fef7862f514b198983ba63f4d38e81d822cfb548af76f561ebab987b208b11824481309b7aedf0ef44376847162326193dcaa +6efcbcaf451c129dbe00b9cef0c3749d3ee9d41c7bd500ade40cdc65dedbbbadb885a5b14b32a0c0d087825201e303288a733842fa7e599c0c514e078f05c821c7a4498b01c40032e9f1872a1c925fa17ce253e8935e4c3c71282242cb716b2089ccc1,28e204a3450796ba182a339cef54a3b224626681c51297a71c2bc0add56bf57c7653badcc1438e3cf7156ef7ed4ea9a084f3041a8157e1fd2aead827a5e79257c1bf7e37d4fbc089422acfbe116a2e3889614b8b01bddcf63b66589061a690790357bc31c68014ce422060cab07f2a254c83e1a7a9ac1a0807462e6de48b194ae5fa0d6bbf39ad1835c86bb25f5c273cb266dd5167350904ea22f912343e261e38b298495b38019724a1eec356ed016bde8a81b3764a39d153a5691c196557e6fd50dc5e42b6e6376e388d9c14970b67e9910499d94f5839ed933246dafb712a122043d7d5047f1b53923c14979244dfed3cb742c1bd30176985ae2f76b912a6a3ab059f2bdc49da4eb6a9d3fc9cba1dfb1ed0a4acf46829d51fda861b8dcd62424a6e4272a1bcf28ab878fa9709db43d800e9e6e33f6d644b62ea30bf758e496bd152e41715e6aadd766f1fc6bb95dbf19f497729bb30b29fdc4bc4f5502396969cf6957be8fa7f17a4f04a6fde71264b0f1b40effdfd560868056daa10a6cce695aa8a815e43121c971e4c4a3fc5e6eb27170d4539f3a37a4665f179cc6c804dbfb199814fb2d5121fbf93a472de6f4d1db176ced29f254f228538b065f8494adcdc3d1117b33a1a51eb1ac3f6d7c8315e5a674703827c0c506977d1cd68873b4f18d9a03ca54f74d7f82900a27e8863ce13e92e0eaa86c2cd5bc99121f1d0 +433c5303131624c0021d868a30825475e8d0bd3052a022180398f4ca4423b98214b6beaac21c8807a2c33f8c93bd42b092cc1b06cedf3224d5ed1ec29784444f22e08a55aa58542b524b02cd3d5d5f6907afe71c5d7462224a3f9d9e53e7e0846dcbb4ce,fe3145a2e9e54b8888c1fb87a70402eb4600b0a2d636dfb23f869583900544f602b9dc325b6a9e8c0a9192602eb5ee581e3b0be65e918dbbb49ef017f174c3aeb12c20d13d20c3370e1cfc19634899833a91375631713db2954a8e33ca839ee5f12703c814a63496bb438195d89af5cde1f22ed8af340b72b6fd95660bb304568af54f162d47cc3783806274f967835038858719a4e3115e76690b4e848fd6acec695b3174c7bbed140db8fcc2187fc0585f4e975fa5ef3907588e415638f1487e6244f3a773f8e2b3d9c23b4154509f87564bc76fd437c718bfdedbdad24e3393a851eb30a82a641d3b144e3d9d223b1e92813de477daa28bc9cb621f8b3d06b4a3e3f9a52efd9095365976144325269160f7b859ec570a14dd43057bf4ab3cd2ecf13e921fb8212f4379c59b332fa1817360747f58a63e0f635fa52c59e31962951aaa64264dd3f26eca0af7c423c0d3dca624a4d33c383ba0f4e04630d74a40f760349116d6cc1a8ba17f228d7bf24af707d130d13ac825db8e6ed4b97b4aa589230ce9a471decbb2dbac9f68269030add24c712f1c2ce7e6dbd330deb3249f7af42e31e717666236de7299283063d3dd6cc88d0096359a1e83795844714bcc9d88da6fba06d1156114c62ffb5d9a58274ae471d544d7e9701ecdab9b63b2ec4feeb07126f8c1cf8bcae823e7bb18a9566627cf95e6d8af7be94275932629 +a873e0c67ca639026b6683008f7aa6324d4979550e9bce064ca1e1fb97a30b147a24f3f666c0a72d71348ede701cf2d17e2253c34d1ec3b647dbcef2f879f4eb881c4830b791378c901eb725ea5c172316c6d606e0af7df4df7f76e490cd30b2badf45685f,4a021c69d45ecf926fe7592ac05951d86facb97509b459d0459cda7dcf2b084b91c8550a9f2a92c490c270ca90c41018c4f205e5a33b1584fb54bb1f163a3be83df0c721235e24d4410f73b2680c0835b840db4c4244c1f85598c2b3a50a896f40c8fd249e99588a8ae1fd6d706a394541b942ec543343fb377854141a35bd35f10983543b17fc5c30b31f86c48f601506c21ea462420c5992f5b5dd12ae33cdd99bdd92667d4bc87410b1456929350d06c91a558a2a17964c3eaf7bdf67f743af6adaaa92766f36655a9496263b38f26a7f1dadb95b6a5b63f3ff9e0081f61d0351ee557199851596e5d221ee891cba27349b4ba671eae59473ff0c30f0daa2f9706977c79746c8c1b70aa1397df9f692dc4d1182eb479c98343de7bc11d940dbb778ae8a75ff09d3ba328a032122318c021bf07ac179bef0ee42fde3d8a64fa0453057b1b2ff6804ac6719f6823270647e142be5d338b1458f8cc7ad7637942ad4f0fcab36ea6ff768273362b8ef001d50c4e5bdbe74f48dd91854a92ff02872c0963a2c2c52d0156e58ba1df0b7fd9a178de79cbcdedc20ca2a226551c86835ae9ecae09fff19aeb6b114f7cc602065cbf6a6a740874fbd6662a3ee1d407337b935c4975d269db7c54c453ac4674b9cff128dc20c62cc86b9d14259e06315eac81923d415e1f35bccf48f48bf655e6b87f8a0b55a21ac760bdb828ba351df +006917b64f9dcdf1d2d87c8a6173b64f6587168e80faa80f82d84f60301e561e312d9fbce62f39a6fb476e01e925f26bcc91de621449be6504c504830aae394096c8fc7694651051365d4ee9070101ec9b68086f2ea8f8ab7b811ea8ad934d5c9b62c60a4771,2d008f8ed51c6a86910c30ecaf2b6441262d7cc66e54b39b9aabceecaf2e96a0b5f1cba234f45242bd8f96a57baa98cad302814c95e067cf8f47b2a4e6fb6bcc5c70a7a750f754824e9f970e4c54d43cf8f4e0d433b931df2b6beb10fe5b28f2a6b5cce24d0c6b414dc8e3c064bd3b26ba82e4464b34c3735e935ec3b7aa36e6af002a0aaade986b0a15af0e9f1ac5b8cdf3e9022cb6d2be9cf5b30ac8e2bb5e766f528802fcab3c3c3405f25367feefc12f1c7d99717f2ea62d7001b4845793b288dd9e777270608fe40586605af8c9ff52d0fe4111e8da8c315958694abe386c85a86aaf2038df6281d8cd73e201973704d314dff7a5c3b4d6543a34c6ffc561195cb3b782c1acc2793ba6a75974126bd3e4188faa0e69b255336366ded52d809d6f70daf11ba57b604ddc8359c1e5d9e8f2863edfe71935ba18a4d373e4acb73cca7887b0f3a84b2bfbb5340afb87beab7e3708484bb4ea2e17cff49dab7236bd83dd11b2761af3e7e58452e9bafe5c665abc543f41d98c6478465bb67c6d9adffdefecb1adc2e22b97504590d07fc112e03d1e221cd860928d13995ff1db025927b2b7edb434df01f1692ab329d07a1c6947e64258e53a8082ea6945e1fe21acbcc1475054a0a9493acf37e5b607c79a54c985e70a99041f3eb3d5511390a1f81fc845c9e29fc39f12d019a0de262fa9426c123ec8c2c733adb2217deaab +f13c972c52cb3cc4a4df28c97f2df11ce089b815466be88863243eb318c2adb1a417cb1041308598541720197b9b1cb5ba2318bd5574d1df2174af14884149ba9b2f446d609df240ce335599957b8ec80876d9a085ae084907bc5961b20bf5f6ca58d5dab38adb,7a46b367baa023ee1922a3408b145dabc97a55ebc78cfff95fd8d6206e5c10efc9cbe3644a49c200097ba79f68b08193c6914e016dab98361705d27b8b046f087df7dd998c02bc80bb173772843645c4f93080b0ea657eb0902afddb28963bfc845adaff3a431705c74d92346bd678ee699fc12e9b06e0c0e08785a419cbc944e770ccbf89203faf5d3b629d541bd51eafa5857f585537ca60ece26e09d6b9d05166360417b5259dfcbddc5b6fa5b653423fe052e98387c97aed7dfac41274d9bd912bdd661a02cb80caae1bd1704320ba54acca5ec6854d4f83e938f8535ef287ad26f9d47d047c74ff6e4ec338222bc7a1e346ecb50a72572d3f7a9621dd0574a9a109979992f18690750d035a65b29f0387fe78e91948b8ea8ea31a074fa405ac30d44fa3cf16bec6d44b5c5791dc2376bd1c192175058c4ca5b1e0d989d866d9e076e8252aa53c5b89d7aafe5b753705020dd7f79c93d31f768ade1f54496b62f6d7b126a2558e4b2a3b7dff1f046f9fdc7bb2902389e1c0fa49e00f4e892d75fbb5a18b22f863b7d57a8f1895b13ac99042b8be114308b730adcc2b8e5c2e6db1c7df35cc9e8160df55bed2c9083a2bf79c8f141e44d48ab49da6a77d7ab22f4e8a6401c9a600657c4e3d66700f452219be1b5008344fd3b6e76d10445853c2814d7eaf753f57a70e0644c94a2e3d21478ed44d6c5d568e68231aa180bb +e35780eb9799ad4c77535d4ddb683cf33ef367715327cf4c4a58ed9cbdcdd486f669f80189d549a9364fa82a51a52654ec721bb3aab95dceb4a86a6afa93826db923517e928f33e3fba850d45660ef83b9876accafa2a9987a254b137c6e140a21691e1069413848,224e3495d98a8729f88069bc2578f98f76ee3d73b1309f75357ef595d217e4d851beef015dc7bb03f9b8c80ad1b132af1b99f42459527fb67abe4b5eb3dbecb90e679454903bfb51e9ace93a4784722b2d0453f3400632a86870a427df2aaf93081af99cfb012807766c440a010e6ea068c2bfe388f26d95bdb1947bdf1e364d252c81835ab7083ae5cdfc12eee193016e5bc5a90c2529419df2c0e14f8fd900d4b9519705221c70db7178b81817b0becaccee975b396e63383f03fc8097ce6ee9a612d53ebc572738b17442c8c5f2d8e7c67073b6fe241e6dd00d356641552eed0d1c32a09a34223f1d3e0305a38675ee066b63155bc2b7851e0f51967df90aac3ed7f88b1edbdf123d02c2f4ba23fd2f1da2cfc2410cad5188975bb5465f502b33a4f41d7b2dbf63b71085ddeeeeb6b9bd0c9f89f4424f55dda4804e86e2b983130b46403fde7b70c5006fea04cf3350fd6124c735613dcec7696fc3f75ceb8238d09d1b440e759afa129788a91c43ff7423f05c6e9132f644458ce8369dd714ca9e4841dfbb29b942475058837ffbf1f59706915ebc473868a718f2887aac888d2c7fecfc1f8e5cfdb5d3b2c71cf1ce400a0cab18982baa41b84415a0a49a25e18a8f4575b46a544f1079431e5f07915b92d8ba512340f2e43b689dee6118786a2410d58ce5ef6e8446ee49ccd2a50557d32fd1e9e0954a4373545da250cc +64ec021c9585e01ffe6d31bb50d44c79b6993d72678163db474947a053674619d158016adb243f5c8d50aa92f50ab36e579ff2dabb780a2b529370daa299207cfbcdd3a9a25006d19c4f1fe33e4b1eaec315d8c6ee1e730623fd1941875b924eb57d6d0c2edc4e78d6,cb85425a1cc6a4fa6d8593bd03206867737f8d749d2bd7135ade0d7a1f216fb92ac5c4897ce355835490699a0f715a2357100cb8932befadad55c0b5d90c909f0272f16beee79ca7f7f1002f711bfa3bde142fa6d5c908e8f5923291e0d48495e50de065cff609a24aaf17491d228e5ab226e21e790c13f8917c1284be0434c8b2b2a3cc672d484a25a47820390fc50f2736faf26e65e09db68f52a9a65280789017f1336250d41c0df4c93af9e94036e598e6f06494068f4a59813d1396b00e65e179572fbec6d30ddafb3a898cc244e1b0e82043c1470b7602d0a65e455d297770265f72d82d584657316e52caf4c8ba8cb4e3ecd82433dbdce526ebc60217529cf03548cb114d7208b93726b5556e4dcbf2764712144024510af30265fd4fb13e38ba677b34d69409f91f6f44df602c9f84362767d1e1b587054ff7cab98a3cd4bcd2319278f0144da884306660dade52096a10928c5af800819e3d890dbcdba7cdf1bfa4d992074d60cd6ba33c98ce2d9d849d60eda8307b0f509ae78215ba900d5a571b3eab6df1575d7d2b8cac2f03c4b552e5247aafe2349f5eeb0aaa56627eb4d5c33c92d8b1fe5d591fd25828a5114c0f8b3b6e799bb69adcfd03566c7959d1db21b6feb79e02006d1920ca35ceada75b22a0b8235e9c6182872377b56a762ac54a719d8aed8dba18ad925fd21c77e84d92a75f3feb8692144f7d28 +5954bab512cf327d66b5d9f296180080402624ad7628506b555eea8382562324cf452fba4a2130de3e165d11831a270d9cb97ce8c2d32a96f50d71600bb4ca268cf98e90d6496b0a6619a5a8c63db6d8a0634dfc6c7ec8ea9c006b6c456f1b20cd19e781af20454ac880,93bf13dcddef177eecfac1d8731237cbf8ce4459adffc34289016a689e88e5b000553f08989ef2b007acb4ac69edeb6ce2e5a7f85c9d75f7656858a7b824472bb89c2d25701ccef18e8707d2c3444a28ae245d337cb3dbd4e2000d7c44d474ccb34033ab203d9b1ca69816ace4569771e1f7f66c7e482f81a332d8d16d0a4ab5142df5742570acd048c52e8bb777d68041a67e870946aec83db5464ae2863020a4126ec32e1d64b5b1a21425c66471c7fb6c5caca4091a96ace9bb25dfe5627562892149ef463ed60d03549cb9643e9bc7403b244a0e9a5a8a38fd785984661c926fd959117c229ebd357847f853768f632a0a2a0f1703ab5e130524a33f825731740ad0b08df92f8ff6ee73c1e60a35ded2882675c6a7941deff0d934bc2bce9005dfd49a9ceb0f08a27cc972a66232a068a93c2b4a143c57387c257218e850cdaeb93c474c8b5aec355bba3a4d0b09fa9f7f32534caaa727120c2d937cee1039de63aa5af5803f7a1bb2f203c87dab85aca2e68a88c9c7584c1444024109f9e02cb994cd7c89e87b976a6bf7d75e570d4a11d15640a4235667669bafad64cf940158bba56184aba70e6097ee4f2379727f7bfc5ff67595b3dbbb7efbc13ea4aa9c1093ee2174b5f0304b10a089ad1980c8a64a9b4e29f68f2bce9ab7d31ac30b9ecb5e009169413b64d661e7bc6d909396c25ee3e64de744ff937f2498a361 +03d9f92b2c565709a568724a0aff90f8f347f43b02338f94a03ed32e6f33666ff5802da4c81bdce0d0e86c04afd4edc2fc8b4141c2975b6f07639b1994c973d9a9afce3d9d365862003498513bfa166d2629e314d97441667b007414e739d7febf0fe3c32c17aa188a8683,0da9bf94215fda7f85a36b7d31080f48fe09c92514a844e7f8e5a54e422997be17e0ead0c8caf75a27b4d721f63de3f4a9326e74081ec77a71de52aa4e7df346c7206c8acece21f739352b2efd6446878075b585735471a189b32f41cf0c48c0e92bf492752792d05e324fddbeaa786decd3c0e24be3cbfdf160f45cd87cf73e61c643e46772ef8c62daae119e0010fd84530025ecce198b2b86fb6e8ee88f6c47f6b4710e5764f405e7856688ef030e5fb84b24b48292df29260b918dd4fc54c325708b83a9e44ab92f67217b9ea0a488c9b45920b76a7644c38d36f9ae1a48f56284cc354bf35cb53f0e7a5745955e0e9a77400ecf97b0dee9f4b32e8e7dbb100a1749762821ac0746ccafeb49162b0115b4e3d26eb3b9fbf662cdca1cedaf5ad8933c7ec1ce6ebf154474fdecace144f8b86e24b85c4ff0ec29736bb0b778ac071d2286ea20302c98b6883520d5b4ba22afbec4b6188fefeefbc487d147622b3e97dab9319dcf6c7efd3374fec69d575bdac70d400923234cc41435a803dda6f1c1e91802f56d048b5147a1b9778fdce25afa4b0846d7d5fbd04614ea62263370b4caa6e87e0b6d2befca78e6a0b7e5a6b5e891f7bf4accb221359c98b3091c75ffd25805ec452f7251d8720ae51ac49620c6ad376f13a16a269942842facd25c2f68a4b93a5a7ce9ed38c7285b2777af32307d84a84cc5f937b7950689cf +f31e8b4f9e0621d531d22a380be5d9abd56faec53cbd39b1fab230ea67184440e5b1d15457bd25f56204fa917fa48e669016cb48c1ffc1e1e45274b3b47379e00a43843cf8601a5551411ec12503e5aac43d8676a1b2297ec7a0800dbfee04292e937f21c005f17411473041,5bc15e410825d711c7219161491c5f068dc27d0b66b5a7f0af4f86dba7392037e886d236ffc9ea19511aa43fa27dd2c4b8026d074b3033d7184c95858db5f237a84e93065f9aa4b40123aaf318356caba01c20c97df8ecf528f56b22a927c705f6db6c2e64b60d36fadb2d867c0f5a515a2dc7df26b151d700e43540b82a0cc2e105269eb6cabd3148871ccd3b2f36b101d051d60e28fa838c67e8f655b1532976e512db752a2941dbf6ffbcfc0afed99d379d4e86b8c32327f6105bb75d7669a2d69bd7a2c40df3b13899377a29ad7d724574f545cd91a67659b3781b788b4e9efb137be1b3b8d93c491bc70581c241b184c915b651737a0b2a99b50e8786df067cfe443879d4bf2efa9970a2c214e538c2086ac7bc47da706513bfcc4cbc6d5f387a9e3bac080138f2d713c6c9aad2e0ce7a938adf4bfa3cf688cbe7e22fd5707eef2d707e5004cf90dc880e3af23a435a2682f9c117beaeb8f5a57f521708ef7233bc6ad5750df2272ec379142283bf5ef492240335740f43dd5042124c9b37e726438357472013abe81abe2c32e8e859e4d064c3c4220e5f0b5dc984eb1a8bbfd6db41470174bfb8a1ed5df559a65b1ff02ccfef42dd546cff79d34fee13317be00eabe8c6ff6d722d048eb757e7a38c65ca1a7b2418994d53ce8090122c94a934554d0bc3856e041d0a29f8539246924f7634b5265708208b4c59dcc084 +758ea3fea738973db0b8be7e599bbef4519373d6e6dcd7195ea885fc991d896762992759c2a09002912fb08e0cb5b76f49162aeb8cf87b172cf3ad190253df612f77b1f0c532e3b5fc99c2d31f8f65011695a087a35ee4eee5e334c369d8ee5d29f695815d866da99df3f79403,d289fc6490f9dfe3335fe9f43131ade538280b78dc2e16822d5fce70e0bb307fc497e1390e04108c66c682fd6edc0b47450ac2fca43c151982f2ede9f82196cab4381f873ac6e21085b2b64c21a1a5dc59c440adf566159798d6773a09fc737b6cf1bfe0cd0c9b90346f1290de5e6aecc1f464e1b3e522df1a986d8ad7c2a42b1a6067a3448fcf9e4bbb2335a3e4276b330c421894bacc448db09f72751d2ea50873a9df900c775d5e36579dc26830c37851bf456085925185b91ccf9a35b36e5358c4cc4f1c807d285421192be028cb7d5d3db67aa11ab666382641abde3f1690490de0d556b0a25016d5b7171ae26592b5c460e41296c01222d074b8c53a9f73aec29c63e54ef0d68fa1e57c604a2f4302b7af05b20d28e5722b0229eab76fdcdb1d2f7e58eebe4bfcc82b4e4b6d5e6faef0ac442b78b483622ebcd98efa538527d4c0e72526d9cfd1f13e24613be03a79ce2612b19d7c9b639d3c2bad28e968e7859d224958c017637458526521c770dcab61a84181cd0e92aa485ac2d3883070e8db9fb5f06eb5e71d10c175e0d7ec69947d1fbff8a857362383368f52c193efc3df83f5a9b6ddd53d736a3543d46388b2845632c00f0676715ce8c1aa3329515495eeaf860a9afdc9630b06e9b5cedcc7cb571179f35735d02d185d7b03eda48d30fc86c239aa3580816f3af360fe78e84364872c2cd9ac5eba876af94f +47c6e0c2b74948465921868804f0f7bd50dd323583dc784f998a93cd1ca4c6ef84d41dc81c2c40f34b5bee6a93867b3bdba0052c5f59e6f3657918c382e771d33109122cc8bb0e1e53c4e3d13b43ce44970f5e0c079d2ad7d7a3549cd75760c21bb15b447589e86e8d76b1e9ced2,b8c21de1f120c5744352eb71eaee81e9de8a8cf6ee3e2394438013d9b1d7780803c28186e334a34b4cf17550aefb58de785e358d2aa6a61bd59beb1b2f494cc9976d67085210d64fd1c8ffb0fe69814c2048d0937b17e79ac9ce6303562065d4c79438e87c7687b8b10ad1e8f9364eb9ef997b09b963c7a57fa9eafed8571f5ff9b7981418aa8904fcc2267f3723fd67a427e7cd3d5ee6620be53367aba1bf9d2ee74c33be1049356cd8a3b4ae481748872717394d6793a25cf02f95b6ee62efd8e269841234f07041d5c3940c7bdff37686b8e72c23342578fa0db4dc21f4dc03d3539b851f5441b54bcd991322ef0fcc85c14def9be72b8b4294ef34a6620854c291f91ca67152b48560683df13f4de00216180391aea39bdd22d563e48cc622bdc72c990f795cc6cdc280bf917743a04854bbcaa2cf64128de9c42e38b40107a97f71cd1b89dfeaf194674cdb35e036b45cac35c45eb2ed6bd9f8acb9402be9e57acc00e0ab6c5b32eebb9867878c23f4275dc2a8754328ded15e206ae31b60beeaf27f7e2a571c42994414355c28715621d39566fcaebe6251eb5955fb8a9b1bf4d897a4931c5e7c29f27f28ab4d2b9950a81dabba7ee63b679df6e5c1da4e23bb9529946e4f467a73ef02d1ff59d7141e6d59e14450b7a35bb4795eaeee51545563bdf99bdb5dc0b17cc60fa04dfb3070930ee46577250ffa863528a498 +f690a132ab46b28edfa6479283d6444e371c6459108afd9c35dbd235e0b6b6ff4c4ea58e7554bd002460433b2164ca51e868f7947d7d7a0d792e4abf0be5f450853cc40d85485b2b8857ea31b5ea6e4ccfa2f3a7ef3380066d7d8979fdac618aad3d7e886dea4f005ae4ad05e5065f,f1e1e702011f4a39197d769a6af63160bed980db70888266afcb744a8fe41f1bd9a1b668b4a96a6c3c2fea3ec1564592134854b26e31102d1b95f112118c959475aa6f2dfc300e389fd061fd6667db36c32055901609ef59b3a8de4f9bc05d52745c78e8d155738f30eb3a8e3b61b36ad34a6bf7c59b59c1f973b9f94c9ed61a746f85610b060e8bd04cc9691e7979ebde5e9833aeef21f9dce96f61a21d2b8864f07fdcd6d3f2bb3db29cecb6670e859a4962a5fe0179236be7426e9c9b2a0b97d11b6c9e049abaab494513128471f88914e506c6a5006ed295f436410cd24b4cd1ec5aa0ca7a66e29df6c362389c7a9b731e0720400c0923bd8c4a98a651b62aa8aadaa5fad481e08a17a2b3f86ad23ff6303463da6300b47483f7696962d33af1de2739c30346665f60c90fa35b74cc240d3831c01ed8cb91fa34a584dea37846cf4a0b43b5d1c26597b2aa1c973a070f120f08c78a9fc8d524fec1f10274f03a4a7e8e8c4c1fdb415a1ab18b4c1f07e1936f81ffe7f2a0a1a815e2f29334f1b1e8029e7e12a798187ccb20f6c1eaf91b14b61b2fe4c3852bc670295bcdad418ca7fcf39c69fa9f9ce54af17e695f1d614bcbd49fee3935238ce59d9e378f3e596b34149149e14d9b81f0bb09c2df8e6e632436ebd525bbdb657822940d25713b737a2dfdcdf0b4f6dd7920a8d1e69eaf7b764d0a469cc1ce6deb70ddd69e +58d6a99bc6458824b256916770a8417040721cccfd4b79eacd8b65a3767ce5ba7e74104c985ac56b8cc9aebd16febd4cda5adb130b0ff2329cc8d611eb14dac268a2f9e633c99de33997fea41c52a7c5e1317d5b5daed35eba7d5a60e45d1fa7eaabc35f5c2b0a0f2379231953322c4e,98326be2f713456ec96c941fa0b58e311c226474487f78734c8d0514afde43293116d6c33fa3ec687d1e9087572c68479ae1080ff8b2238c11aea13d9a020a7b3feee56fc2fa69914489ee11b17cb9d3af448525c3992232b58f2182ad27d93ab88b22dc94368d10b112aaac096dcd8ab76250984ee4e4d3ccab7fa3124f7b02d05111d97ef0cc52c5b8221383a6256c42762e546acd6691de9810fc2271d92834da1992cf4031b98cd0919e01d35dddc738d6a305c6e400049a97e14afbf40822558832d23165cacaf16a514efd6d207a95f97c330ca333c810c19aefae12f3aa267cc9fcab0b73d2b7e5f3b007cd8055d0c4665c9c53fc818a53ecd9c0da776eeb3904409ed63b337f755cc7783da8cb713b51c720c2826711ff36d98723c8b00c4853eed1b3e2f8b8d74ecfad079a49f37665de5031f2fbf54da6f1fb796913b9dce2ba1206e4255f39c314a34aeea01f1965c36caf89a2f7fb9eaf7e9c97e2b70636abf0ed00f59d1ddad409ac33055e6f7517e962bc535eedfcbaec203f91fbd2b13c26a20f9c2236c55f4b506c7aea579ed3a0204bc67002d158d80139379dc23da06b0defea079e8fc1d51976757e9a455719c45b8965959a2958e75b7e6da966b86029d22fa50841494303ab6b16600324ef918aff9df161224f1a7f26b7df364772724d4b1afba11b5c114563f9da2604a2d1b60bcc3c116a5e9c58 +befab574396d7f8b6705e2d5b58b2c1c820bb24e3f4bae3e8fbcd36dbf734ee14e5d6ab972aedd3540235466e825850ee4c512ea9795abfd33f330d9fd7f79e62bbb63a6ea85de15beaeea6f8d204a28956059e2632d11861dfb0e65bc07ac8a159388d5c3277e227286f65ff5e5b5aec1,d539b406312a6a14a2cb8c2b2bccb28b7c164dca4bc34564e65b807f59809e0844fc897bbda2fd7a0082be317b8cd94c2b2dc8a625691d56ab21a2c854cc6952a4374cc34374aaad9090326d493eaecc945848fc4653a15e2566a960cdeff139508882b766a1ed60cd292c696cc75136a6dbc0bda628ed1e16129a9025d715b7f83ce3a35f4efc7178bdad06fe6030e086d416775be9df9db66a365f56129f7b25a8701502bd36cd439a4cc122da4d78b1d832f5033123d9a9d72ede2ed7d7815eb7a3eabbd21e2e507de4ec4aea0b40792337953dcd9d7bb952f710f8bbcd7e8cc1acf3b7ab4eea9c066d9d0d27aad600405ab5daab1fe4551cddea659307b7ed1913bd8635aa409754a1860377e0453a63ee7c2c6cd1a33099a81240b92382572caf3698c809237548002eafcea5bd042db3a7506189e3fbb4dda6dfb1c95be136011fa127b0fa3a4a386da3c327b072417bbc5346a5060d770933142b6ceeee1021bc0de076c2fc8ecf7a16a6cb752f39b8fa1ead88a7d4364204bf613f5b108e2fb60854f801210180b9dc4757d145e715d4e2d79a7d4e8aa891977dfe08a92aa423a05d22b06c6a3d1ea5953214855be7cbe9c2e62f2a7171bf014f3f077ad244fabf9c1584ee12dfcbea4e4816c470aed4fcb900a5175c35189380829e92805e47969ff5a1c3b52fd850fb404bfe189866844e7b586dcdcbb236910011 +8e58144fa9179d686478622ce450c748260c95d1ba43b8f9b59abeca8d93488da73463ef40198b4d16fb0b0707201347e0506ff19d01bea0f42b8af9e71a1f1bd168781069d4d338fdef00bf419fbb003031df671f4a37979564f69282de9c65407847dd0da505ab1641c02dea4f0d834986,60565a24b70c76463cdc5397bd0c077b77cc70cf33128a0366a7c30161e21c32f2f024511a9605040d699e1410311ec3e8952938c91d73ad71803be3f7ab60e2aac7a91d62fc0729294bcbb031ddd5926f775fa85d25c85e1cbc349237f9d1e400e64c15a797c1651fbe5b8079d586bb751e1b765c36a40008c9c612a8a67c49a2d4c15001562d7f7197ce107aa7601e490fd3cee738d397a5d9e1a9568385a243975b9aef5e24c4235cb3612527b7abb7dcfd22a124f9bf5e1e169f2f58512b8ab04f4953d40e6b1d4ffb920186e4c0751f5d8516f142c426f3893b6b4f45567461059968369b3d333b74f9a596e7585c6646af458173500b052213ec6074890af149a6554a92106868a64c3957f43c8730dfb3136040ec688adfd0e79ea74e07f6a6418656343d24e446013add76058241f19f5cd42f256f8e98c7a5f7b9c4ce3f5d19cfae69af8de868ffb5807dde0c4a5dac1409297c5b8ad27c1e1b8ffd570bc41f71f21af7c9639bc6502511ff9d6cf63bfe2e8ae791b50527d79334cb87d9bca919833d7123b8d77f96d07106bdb50a3c4b9860e5e1cdbfe4b49cd4063d0c4796bff2fe1507f43cee6ca6bd19038cd6b7118120c25ea0dd1bad05018df08db67af168880c284daf7dd33a7bf18248ba7e79bf18b68c3e14664d0e1349d458ce7e128999cda5ee706fd48fad8d0489ca8c5718cf3d2c16563178ae3309 +b55c10eae0ec684c16d13463f29291bf26c82e2fa0422a99c71db4af14dd9c7f33eda52fd73d017cc0f2dbe734d831f0d820d06d5f89dacc485739144f8cfd4799223b1aff9031a105cb6a029ba71e6e5867d85a554991c38df3c9ef8c1e1e9a7630be61caabca69280c399c1fb7a12d12aefc,7fd57ac85310e74667c025609a2cd37d12eb3fa49f9d9b9aa4568c1300c4b5fa69b6591f82d4c7c5b25ee6f4a6e2521090aca1588d75b4f6bc1d58b106e825ba2409f84be64ab520cf4513a7bff52fa7a67a761b86e9d749ffc71532f202a2b619ff772ec25c00c269e7ff10ec38b93999dd8bc7b3db40cbe870cbcee6c0a6842a72f978ba9af677cf4f055762abb1c8da60cf57e9352c48b0bdc0031fde8a146b8d881dd4d0d05bd5d14b52c89adb6a27cfda2b3d7650ea650bb75d86748a722d7e3003e10e43d89ae21e9155231556b7335f576a922248ea2040de648a0d49d8eb88da240e586deaaf9895cb2f35cdfe60e61d6643e5b38fbe40e82bcc8462fac98f078dfef5d42e1d562997ebbeaef637fa8f65510e604e99933d92798ca05dfee0e935910be5086dbc8ba9493ce52cc49b85b062164f6be8ebfb4f0c27641b65c397b92182a47d4e926c6d6947aab598ea0d012efc47556ec7f6407a2dfb3cbae71237d968efcf9192379384fd2dda510bad5b30f01852064938a17c38b6166170fe15f09f645cc740383715dc35c98f6e2738473d324c7c6f63e76124824554b0ea34120facd2826c7f2a717d2817d871babacf1f061cac045ea61bed8d4aaaa1d41a277e50c09606b1786be65e1abef10f6dc6d28eb8206d3e3b8a56fc83728291420acbf606c34b2b3e852381ef31556fdaa341e05bee90dc9ab7173d +2eeea693f585f4ed6f6f8865bbae47a6908aecd7c429e4bec4f0de1d0ca0183fa201a0cb14a529b7d7ac0e6ff6607a3243ee9fb11bcf3e2304fe75ffcddd6c5c2e2a4cd45f63c962d010645058d36571404a6d2b4f44755434d76998e83409c3205aa1615db44057db991231d2cb42624574f545,cc03a5bacc26e1580f37813e60005111261ae521159086c7a6c3087e238d2731a02be233200fa54bded93d6959dd03b71a1a4c7cca20e9685406f70d722dfa1718b3a169be6a8c5fa275eac81667046a605ae8514bac24f216358a27f036bb618951a1ff5aeca2f64fe1571cd01ec7139f86d370bcba6a721520bc115330398f55691d7a212be824f27aa10305523f7c11262d2ea2520d72af1e34a887bbb4a8df9966fdea757351eb67df1df9f9dfd7d7892d3cfd1f0b8a3a16ad5055d5904ddd900e4a5f94941fa796e8f32a04e807ede1958191d58551378a57087a62f48e3ae2852ec03654cb142d2b851c5995324d15927f3daaaab188ddb6665e08596b71d9c2b740a15f8e78f02c6a820c79c3223a98d79d225375f6375ec21a5216a9d01d0238fb456857e7d6611cadc2df844d99c6380cf59e7bdc268ce91d733fe00ee99a50acfbed98e6ac17dd8a377ee4af9f318baf14143ad4873422dc56aa6e4dfb6b0c312ab14f16105d8cbeb7f57da85644005ca4294fc8667c1cc1fc78256562cd7aea9779899f431fb581ad6ce91a46f003248a42bd286e9f4a0909dde99e2ff674d4d5e71eda126995da15f9c00f11ba6691e3614ce6fff05aad6b7c63a72da235e900698d09ba3787742ef61701eb25c3d70927272441709d2625b23fc97fbfeb1fc06d3693509424ff5dbf005023ce06d80d7956d1dc0030bae8d0bc +dab11dc0b047db0420a585f56c42d93175562852428499f66a0db811fcdddab2f7cdffed1543e5fb72110b64686bc7b6887a538ad44c050f1e42631bc4ec8a9f2a047163d822a38989ee4aab01b4c1f161b062d873b1cfa388fd301514f62224157b9bef423c7783b7aac8d30d65cd1bba8d689c2d,fdaed26927dc53f12f002a9c47467a4eb53d941b08106d6cd0bdff6021b6ae116562d2255562f70be884427a8b6d593e0cb7040addb87663e5f03981992435c2baace87c49cdabda178d0663cf81e96c2edfcb6d50d48ed128128f6f3b56e33bf33187bccb5c2bceb418dacd4c820eaf880b80e32f00b7105615ce305065716316221019a84ca2d29fa57565cea5239484b8e9740ae07048bd0f75b50827c138979fc9671b4e684952df9a681e0c7ed8101df50620defd82132ec81f5073991e65e1dd72a52b596cdafe6c5b6d9205533ef15d137a1feea7564c03e3a19e2b9f40600ff1a66a241737ef7faa29eb83793bc40d1e48cdacf3936c499b572aebf2def5086354df7dfe682b9c281f4cf68405d0268168f5495913f930b6009357867398acc5f951d55d854b0c42d2e2127cac73ad0b75139111414f6d6a68e01cdb794ea6e524e45a62a82970d22168f37ed72575a513751368718af490e28acc47d2bb7d59f567daaed80093929fafc0eba01f66d67dac97a99886d0b11ec0c4c23a593bbf05f3f80a047a07c883063a9fb967cb9a796d18168d0a7f731132aadb3d105b1475c583bcd4b939015f460fee9b6f23b0d3bb3e2e7b7c5615ac8ef7305567397ec4c1de8ef5a05c2a14196ad00660dd0fd11838a707c0fad38d343ad9d65056a4c3701490b3ca235063d7d21bf02ffb2e0da3d9b9092e20da716bf450 +42e99a2f80aee0e001279a2434f731e01d34a44b1a8101726921c0590c30f3120eb83059f325e894a5ac959dca71ce2214799916424e859d27d789437b9d27240bf8c35adbafcecc322b48aa205b293962d858652abacbd588bcf6cbc388d0993bd622f96ed54614c25b6a9aa527589eaaffcf17ddf7,f375fb504784706dcd5bc3a500bae8de6630009d865739a0b30c81c74e0379a59996410854fdff996b46f9f30bedd7dba1c5801a68d1d3792119d7feb29a648e08502ca04637afb9427027d59e9da235baa4d602ab2ff257bb5fba4aa79c9d285e99fc4314685181020c2e9c1cfb22d1e7b1add9c037a7f81b7e0135f9628cd67b8591271bc12d025322bc21e7bf4e91b049e291da2828de012384aa65e3ce26f98186828a3c144a095d82bbf5a325e41dc28a33828d9717baed4bb8bc50116cf39c8eb6df037e29ed6a32fc5039ec1704e199aff83768e58f1858ed741dddcf75e8b2621bbbe14420217cdae7561c24213f76530204141ef5c7ce0a76c587c2223181f5f2df58ba5d89ebd209c004f5a2155cbd896a17701b19d5cd5d555f2a964bfbef27d22fb428db161c0ab99d040af196efb7640efc55b7ca8e1bac86f4368f612edb120e2a7ca084b9f5ef8da0a11136c760dcf4426ca98f20514049bee2f9e6f66aafc4225cfbd4397bbbfba872a47be903ee0dbebc7ef85a1395b14504c18a8b5bc5416739daa543dfad6b4b8a88bb87b388a6974ab90756e836de528869ea2734e75d8aad84ef1a60bd371190808436d5c7632a2f027c3ccfe8f3d94b0c262fb7ac99103b0688238be68f26b8cf35876b6e214ed1973fb44b9c3f3dc7d7296be8e150f82e80594e34a3e008ef40d9647ee26e1e4cfdd8dc673f2ac5 +3c9b46450c0f2cae8e3823f8bdb4277f31b744ce2eb17054bddc6dff36af7f49fb8a2320cc3bdf8e0a2ea29ad3a55de1165d219adeddb5175253e2d1489e9b6fdd02e2c3d3a4b54d60e3a47334c37913c5695378a669e9b72dec32af5434f93f46176ebf044c4784467c700470d0c0b40c8a088c815816,98d27ac62145261bf2cdf99f8f77ac04697d2fe6f1531d3b1e113a7bea4b9be780394cde5ec43ef820b0d39e20a287b29390a68091a8938ef5640437a0f09f5262bfb4c55f703d44e7e21eb69c27566b66bdc95a525b988be281243dac0cef5e04195b318cdc96035205ccc556ad42b220fcb0e01516e66d8ca2d045ae0af7fff91119cd4c92e664fb339203e8c0b3766c78874dc85d48fe668bace760a96f5d562fe4ace97fb33c93f160057c0475ec440111c46777b0e2c95df666ec753057596713ff452ee59dd7e1d4dc278238518e23c78e8882393b86427e8f6188d7a08d770b2d19e08ca672c89582431f30cf4a0ce89e87a635ec2e05765da600115b704e35b787fa90ac545877ebc8a5616eb998380d4ea1c6b127844a422789b9b3a41daee940f75cf975b464736616d80d89387c171d919874f38453af44ed16888212ac279d4890cbb5672254d76d5fb922412a2eeda598087558b1e89528fb1ea285303ecf4843b18edaf6130d1374273dede9eaafd6e6f448547e96aa385235919600e4bfd04cc2bdd89e6860adac61e73e37c563709f3187439a305b9ea8de8eb552a615712451d1da495a8e02b9733aa1f7b78de6c0f0cf6a379959efbfa8a78cb6e93a758889d826d7e3dc741a10bfb55544993683b2383419d3f5bfbab13eb1ea0575e528fcdd10fedb0c0133c8e78fa0dde413fd951262e0cc958d2850 +d1e654b77cb155f5c77971a64df9e5d34c26a3cad6c7f6b300d39deb1910094691adaa095be4ba5d86690a976428635d5526f3e946f7dc3bd4dbc78999e653441187a81f9adcd5a3c5f254bc8256b0158f54673dcc1232f6e918ebfc6c51ce67eaeb042d9f57eec4bfe910e169af78b3de48d137df4f2840,6095c8caf02d995daac5f6cd94a33fe0cfc2743574b352fc35a056135d20be12fa7826dd41bacca18c90060c08c5bac8b3e706622a2bc8aad1fb6ef93259a5b8092540f68497f09e47476f9d94111b2fafe27cb04deeaff43a435e2a5c0e44aac6dc3104453896c9c702e8f59bb61a62acf889174955beac0319fc897bf989c97307a997f4570f3544e5a003f22a7c5295705201f025ee7d6b5b278deba559ffb82f22aff5db6d534e6c50fc4e55fdaa0dcdf977178db7ac2d98416a6e0f5ab5a49c29e414bc0ac0122d608a592c605e418edcd083b26429ba0a1a53584ebfeb4fc005f144f04ceacc971c9edd23950a1b7e6a4a9308c517ff80ebb1610f8e78d963e222bf148659bef6b0c8be1f466fe786128431a9950d3c70493d1cd72731d0a3c956e34f35339aea578f614806dbad3c02389643340db162661003d2cf42f1c913a7fab77ec3b9e8e3177dc0394305c21d6e9713f34516cee321992e4bfca4db5dd03e240a7fdbc83826efff82e2b36bda326d8fd0c858b00e02a83d0df7216a475cdf0a37b0389095f501cf47c497e23f199d711991fe71dfb56d789f30c86d3bd17c8bdef8a797bcfd3ebcd5e62cf99ba0403b79bbc8a0fcf4fa7c4e65b674a796af85e7d09134fe214ce8355ee337faf6f04660753c1a96d95964e587f72f0fa5bff435778084eadb1807dc66772850152aea381866202c8a38723121 +626f68c18a69a6590159a9c46be03d5965698f2dac3de779b878b3d9c421e0f21b955a16c715c1ec1e22ce3eb645b8b4f263f60660ea3028981eebd6c8c3a367285b691c8ee56944a7cd1217997e1d9c21620b536bdbd5de8925ff71dec6fbc06624ab6b21e329813de90d1e572dfb89a18120c3f606355d25,765a48e25ee43ac1630c65bf5138f5f792095e182483de8887f0f56abdfc0526a5b9ee792a2533409f3fcad2b9cd43d7cfb5454194344169dea3fc67ccb5b9969449454e18869e7cfd821ed0f3d655f5b33c528bed1778bd504b2c84bd38dbcbfbf5cad7e46f37394622c4b065686773ac0171ef70717e8c6a887ad952343d02ee96b4129b3f189c631a719910f543540de4ad65993b634afcf313100771468c81b0e270769abe2bd6603e525682aaf172cedeadd12d9389b86dd6459dc490cb89a637f6e24c5819dfb51c817a3ac9837092d408c6816b57a4b0dcd0fd1c7ac49fc012bc9c22d16c779066a670252515938764f4e05fc57908fb67a3c6927b4639014aea06ef91f8d43e507c48a567f36b94591ea1319d7f266722bc9ad6f5cb8196994f7ddea570720edd94e6c56d215d8290cf0227de007b71e80b65301d53363d51c73303fdfe76a064bb1169862a02f541d782fc64c3da45fdfe2fefbef8a9383690f1d6c695855387cc206b9e7266d6e6c9a2160074a962de01febfabacc6e88cf7f724cb4b2f09862d63cfccf1d880d956e7e5381f44568de6bada3923f2f09cae80d25661b9431201c1918df1e442f26710314d8b3f88e94502e6e9514c2efeec7a816e82517767bf7972d6329bb54ad1bf67842c449f54c8cfe2ffa312129995f17059f59e7ae05d21ea17f8e93c1ff4d9e2e71c9ecc9dd5512fd374 +651a6fb3c4b80c7c68c6011675e6094eb56abf5fc3057324ebc6477825061f9f27e7a94633abd1fa598a746e4a577caf524c52ec1788471f92b8c37f23795ca19d559d446cab16cbcdce90b79fa1026cee77bf4ab1b503c5b94c2256ad75b3eac6fd5dcb96aca4b03a834bfb4e9af988cecbf2ae597cb9097940,270ee64e434d9cfa8a81b256aa86959d6d9e92b10325a1816776a309002e7c9346f21bfcbeffb2fb31bf7214572a7f437e3450af26743b418cdea45ae28557078d8275e406864bca916f178181caa3396b8582b04148249102d761111507c48722506d0314a05767e89b3d9d5125a43a2b13ea8827ccecaeca6cbc864b8b7591b15bbe0bf1093cd15c5c14b4b3705e37cd97752cfcca1c1a4340c02298b028a633cab0e218525e94c3e150eeb8ba36c3ac4e8eafa5ed05d9a79519cee2a8b8eea9d8ebaf54624acb2bd593cbb353bd2f577cab60508dab081bd29200e9a9e9357978cc15f4b98a383c4a46594303143ad019d5bcb052504efd2ecdabd1731db02d6fa4ac9e1d3037b75b7a5cff8702f8eda7f2ce848a0b96ec2f7c62bdb1e23dec39af110a4e6c0597d61c8aee900276fc7b1ab2f63bc9874a00c79705d87de2135218ef233c8939671399a32c02db4a6d779f7f933e7f7a467d236178e2137f1e5ff53a3e8fbbdd8d01b737ea95c762b4d4d65bddf50c527e01da1a322151757e0f10525196d3293e1443bc7282496f3da971869ded47ddfb7bd99e799ee60fd3cc31bd4b3956daf6d70f79d4a5e4348004f526d90ca47d7c3a9eb09074eeb00d799f14de7ae5a4615d87496faf2c60d1074c194e7cdddc0765c7fe7c6fd419335189c2d584438d3879c50d43e6cb25d5776b4802819c5dec7cb2197b334615 +8aaf072fce8a2d96bc10b3c91c809ee93072fb205ca7f10abd82ecd82cf040b1bc49ea13d1857815c0e99781de3adbb5443ce1c897e55188ceaf221aa9681638de05ae1b322938f46bce51543b57ecdb4c266272259d1798de13be90e10efec2d07484d9b21a3870e2aa9e06c21aa2d0c9cf420080a80a91dee16f,652a6b87d0e770909bbaa2172f47cd05b7a07b57d9ec47396e9cca40edb76b99bae0a8fafa517d12ed62b5e95ad89560f3eacd241a2af24bb1f02bda6f0a5acfa85f4f86cff75be9e7a57e0f182890c39acb6de889d24ea360dd5a4c59e54dca7306aae46768205c3440ad777a853dc8fe2d2ef2e6a5fdef23bf514472b89405fe1b7342aa4fb448e0eed8a46b6f259073057571b03a4df2eaf696838a51449a5f7dbe9644a9d092ac68b9a30034460c1891a389d06a2ac3165eca91f203ded47b5192c8f6aa2e5fabde178a012d94a8a35a1d446d08edf55f4e4163c2bb9c46025d8253b3f062926d17f853728efefb10d69e6846bce7e7a037996654e1c36c3a55404a1fa579a1d55fb95b30eb61eb14a29bfb54878c0d59a4209e1c746f7b2a2f2a28bb19a5f0342026bd807bb366363623bd68d4c9d9bb42d2ac67df49dd3727f4d2aab52a678f6f98816fc86ba0073f4afa336a32cd55daafff5d993926522d770aa44d62f6aff7e758ad33dae3c642318894c2da99f43adf2f97e53ba48657604259a8bac4268933f1b97bd47fb30f95ad284f8345d6e013aeb9dc2478ce49ceb054555d25e36b13b322e51bf1c1e7c062e328aa440f87ee883c7760fe2f86b487bba73163a13755e6cba804f0ea6399e875bdb2966d427933d66d82c4d17faf6cdfbcda36f09621a3923b4eb93a27e44796cd1c1770835b83e89d28ed +53f918fd00b1701bd504f8cdea803acca21ac18c564ab90c2a17da592c7d69688f6580575395551e8cd33e0fef08ca6ed4588d4d140b3e44c032355df1c531564d7f4835753344345a6781e11cd5e095b73df5f82c8ae3ad00877936896671e947cc52e2b29dcd463d90a0c9929128da222b5a211450bbc0e02448e2,2716a3a219bd690b9b0450cc0bf4f0713c46c4c02744f8f71de261b94159278566583d4dd04cd573e79c576c1f25834c91d3af69f3a301aefa516082869f3ceb0f916a903d902175ef29a0b29aee92cad8555a26e7cd0395bb937750246a8d5a722dcade4f44459a15ecc29b207fd8ffb8510722d925627372d86528b9b513967b5bcbbb233b459afb5aeace48e5355c3e7a387f9dcc9a55773276d14c85b8eebe3d211fa08cbdd8aac4656f028fc16a6d6083a969bd6eb5247695d8f6de51c036a743d2db7480dea41c228ffdfaf129bcf0d0d5f7644405ff8af778ad9a63eb54f62e1517ea4cfaa92f2f25e5f001a562b6b4d28bfb398c26df8e88c288aed5b7afe8686aa4aac77c032d21203fb7ba79707a7e00371f56fdfeb0e607252448cda319c39447ecb7c69f36424d74e33d723ae53996b35e5554182015493ae03daec5c31b00d481cd430f4723677c7b33f6e325a855300e66db559ddbccd550de02d797d6b28a1ee01fa13a62f721bcc577a6c3363a03ed976391e969379ba3bb6bbf99271f3e5dfadddbf0bb32db9ecd658f0da2863fe8f48ce2a13539d8e8276c083c4cab1aa9d92914acb238c3ef0a5952e5686e39d2804ded740e0457f69fee9489b7e548514feb18fce21f265dcd56f0081528a24fca7595e96d31caef0969f56b122749c74fa108c41d34902828b22f814bf352a1b5b52e9c65f75f232e +a64599b8a61b5ccec9e67aed69447459c8da3d1ec6c7c7c82a7428b9b584fa67e90f68e2c00fbbed4613666e5168da4a16f395f7a3c3832b3b134bfc9cbaa95d2a0fe252f44ac6681eb6d40ab91c1d0282fed6701c57463d3c5f2bb8c6a7301fb4576aa3b5f15510db8956ff77478c26a7c09bea7b398cfc83503f538e,6995a90158ea5fd54f6d4da0c129b92ea3e716e196de4ac014caf106ef4cabdfb9ed799545a0e53e32aba2ea78a6c7cb936947f79817d200f32053e81d10131278cbcb903980e13125c99b1696f26d355882a107fa65fa43766c929485696d56d49d371643e9d360e25668b5b7bc7cde13b678723fdc4598b60b6b19b47791ba99f4258acd94604f26d5587ee8dff613dd53e083cb2b0a202930d61435601a1d3ca8d97c198cc278967ba493b675d2f42cf4f41072b7a9403df36e0e15b8811e37ce1119542c5168c95396653f72fc9e59727de36b693ca58fe374aee8defc657035fc874b7851ec0dede274be064d258c0b39a238d2863bf8b7ebd0f7e2c3fb2a7eda6800dab2def61fa8f5e6891652796c2e9cf586bb0549f6f73b3374a4d7c6345ff73fbf99fb25ca47823a4b0470738aa67cd26d2eb954ef40a4121dfed58a1741ef335e8adb32a588452774ff26b04eae29ec1ac3bd83d2f3a27af2a464d29589aa837890d7711cc0af76ecd6142eeef1c904c0cfbb287babf951b8a10281a7cd1b49d766704350c7612a74606d2bb80de11a37ca9aaa1ccb91f4aac8d382a5a16e0cc7b426065f3af566592c51b52bbbf007f4f4b7910dd0c7042406f61e5efb6e04eaac76e07a7e86c6e3a5706b833c52bddf814e1261724f97da9b7887399b7fdcfb14321d8a16683c1dc615ea8c738f0bf6076e05855f80d8da43f0 +0e3ab0e054739b00cdb6a87bd12cae024b54cb5e550e6c425360c2e87e59401f5ec24ef0314855f0f56c47695d56a7fb1417693af2a1ed5291f2fee95f75eed54a1b1c2e81226fbff6f63ade584911c71967a8eb70933bc3f5d15bc91b5c2644d9516d3c3a8c154ee48e118bd1442c043c7a0dba5ac5b1d5360aae5b9065,791c8b8021bee5393ffaf003b9c429a5abd2e35c5c7f556e843d735265c5b7807343ee946bff31f45b5626555cfd792f55465ad9ff95647a41d9759de484a0564492236fd770ed3f78c92514b90636ceec76d3fc44a6cca482bcf45d3b5bbcdbb1eef6d5d6eabfd0fd10b0b4aea88c5fa68182a8a9805b5e90b1767c9e79500237d07be59c0f09a9af2236aa954f9ddaade492d691e36f3f4043f28bf0ba6349591700c4211185d99cb25553e2f6f405f9d8e00fb658bdf4a091cbc7092934a6dc6d65e42cc9042f90d169662f80d66386489d2e7f750251130e1529cd8ba70929252551b0617c960203ede536cca5eb0c5217e9e4756d7b57ccbe5087a4fb9710ee89ff62355203df415975ad106d84dd5526b3ef3432770b163856b4d46f7315f1ed70055cbcc4c78c5c0cd4b19fced545ea00f0e2e9752a227445dec6d50b3d73abd2d81c9aac6b53e108da04c42d491254af39584068e34ce2f4026fb63c29a52b913e5d2fa42ff7adf413227b784711a3513bea6aaa97dc019a25a0f09ee27a46feac4ec13b43e341c505c308ada1db5d72e0609a0a68698c809067f2ef17434f3205e03be67433c1d67072e8cad0e2276723ae7d9f552df19c142a68a7b875cd7a73fb586e128856a9259f7373242c498e621e7f16e7af57f36953001925115806972ed2795b9a2f398676bf37f2ef8fd4325863d599e10fd84d8d77d1 +a62fc595b4096e6336e53fcdfc8d1cc175d71dac9d750a6133d23199eaac288207944cea6b16d27631915b4619f743da2e30a0c00bbdb1bbb35ab852ef3b9aec6b0a8dcc6e9e1abaa3ad62ac0a6c5de765de2c3711b769e3fde44a74016fff82ac46fa8f1797d3b2a726b696e3dea5530439acee3a45c2a51bc32dd055650b,42aef4301642ed54cb1ff9b446bfab73cdfac0320167ca3460a9af1995b5dd50c1adb402a55a3e5c4f7be66bb2041f3e4c9eddf7f08826f8b9c1163b0ce8b31769aa72ab4c598b3bb1cd5791a6bc30d11f0591d0eaab34d80f134734d792bcc6ea61aa535f4f28331aa6e9a572d43f776341c971829c67c0e7d9321b09807965e1e9c70e611a4bbc3c42743a2d04f50804730c857f02e631c1b81dbd33d3ea2539f9aeeca9842b3c95fa1b8b1c330926fe5c6a396214537bd06b49b7951af0f9ae04d158f364757a52ab1f21b4155895929480d87ab365a7950b321d5fd0c18fe3ff63b10d3cfd74af45774500ad3fad98da5d240d613b386e677d57211b8781aea7ef4052a25e122064bae6dd59b00d533e6b041130b89778db87f88dd37deb78136b55a958744b9769612a0dc6d29b6c0ef863934302029c800b50ab385de742d436809c7665b868c83dc450e438e94ea3124dc080355ae5931797e75dfacd09a7c97345608e021bd2034f7660ecd194f628a9868bc0def0231da66ab89e2df1eda2c403203f971c1e61e4098fd306202b9f96c78ccc37efaa7983c5d7712034328d1e65fbe96db94b3bd88732e60ace5ef946e896abd4e1f6978700c12c4a8a372ca54b6f8efb3402b898838a26d8900f69393e56d2addd2a0ea26e7f630ba6d19c46de493c516277fc491f1fe273d013f4a32bde43994b031ea51c2cc8f5 +2b6db7ced8665ebe9deb080295218426bdaa7c6da9add2088932cdffbaa1c14129bccdd70f369efb149285858d2b1d155d14de2fdb680a8b027284055182a0cae275234cc9c92863c1b4ab66f304cf0621cd54565f5bff461d3b461bd40df28198e3732501b4860eadd503d26d6e69338f4e0456e9e9baf3d827ae685fb1d817,5e0693e64dbe678055a31d80da85a81a1ba5eb1cb6394b7b1aa2adc2b8c1fee4f41dff3623502fcc349d4b2bebbc1311ef291ef47f490c6fc1323075b519c87dbd77cb94c213eb548278a6c11b0c321c941fbeb9742b690a9777875d8a1fd0627b5ce3679a6dbcc8b53d775e73ac9f951749fc353eee7220cab40f4f7c2eea311cd0b50974af188ea9742509c4121fc07a70fc28f0633b56babb451554bdf86396594b57b1f88dfa07dd4f8c47ab5ffbad03da1da642ef4a6e75a952e8acb3989136b8a792e6f33b24da2cc4e422192eebaf121561bd33a6d79df6517b3f001e674f39bb98d9aa0e15226389b17655e7b2796d75ede0430a0e7d07039b8e35642570f6457f8344a59dbdd5128f74f9ab83cd152db17987019aa0b27b6e7951cef67b574d05535ceb5eb023a39b5731b6afe6cbb8bfee0f71819d791c288bfe9ebe6706778fe62a80aef22cb9c0920938502f30a20fb4a4822d0c0d42d50d67fa6a76ef919c985c6306fea73a3bf41006f0fe60c0d92b80106d8c715b97e35e39fa8eca59220b86c2c46b9c61eebce07da4b64cad247a67112f6548aa693bfc4bfc9ae78144571cbe7b81b83c8832938a71fd3ac6b8e4aecf17fd2848fd9558dc5ddb261ccaaf083affa341ea295c7264f35734f5179038ab70c90e03bf53e3ff438a9c0655ec38f5b9dab7a4c3ba852a2a0593c80999818b460015c79093b1d6 +10db509b2cdcaba6c062ae33be48116a29eb18e390e1bbada5ca0a2718afbcd23431440106594893043cc7f2625281bf7de2655880966a23705f0c5155c2f5cca9f2c2142e96d0a2e763b70686cd421b5db812daced0c6d65035fde558e94f26b3e6dde5bd13980cc80292b723013bd033284584bff27657871b0cf07a849f4ae2,b620ceaa437e16a85be761a8563ac80d9c49608dd0ebf9a4f049b9541623f4a3783c9e67b85820ba44a80f1afe3fd835791d9f3c785bd8a77c9623eaf11f695675e3a2fb951d54050d0500688860bd270d3b723be51579b81cf4ed94cebc294a97beebb5a851160012514d3bafee6e275adc7bcc64eb7879c32d8e0605241786dc3cc1bd44db64bbb2e9c6e1fc581a5124a734625cd811b6bbe00b203319a736eea07af977190d777c12465e1614fca56db7154f9c456f59989062d60899d7cd7925df1e1ac2eecd9b070f7e380b0775089f303b864d5ce049c55177e3421443b508edeedac6307967a4321121ee2227c47e357fa92b741fab390957ccd9337b42bc18e6981fd9efc9241fdd24bad0c6772216bcccb92c2eacab3a312ce020216ddc9175f3f86343e204e1a76573294de6ec6bb75679379645fb973c37354323e15202415172d7f3d6a1060fcd35dc011b3b2fb4fae21c69ad0119191ba4277ed6f71045fcd69f267e667dc4d219fa256bf35abfa06a05738d212c42eab91c2c993a5b6adf9adc0f276e79ec9eed6f115af4bcafba9cec43b0532038e863b2686996e997807ed67de7f48c14b17d40cfccefd9a943cfd7c96fc665eabc70e606213da37cd7eb6f942a6a5608305b8cd8b9bd4d625de5d7dccb554d3ce466d6ea8c1d9f111fa4e96b253ea11b4dee3be218c880844006d6401659c35c2a293da2 +9334de60c997bda6086101a6314f64e4458f5ff9450c509df006e8c547983c651ca97879175aaba0c539e82d05c1e02c480975cbb30118121061b1ebac4f8d9a3781e2db6b18042e01ecf9017a64a0e57447ec7fcbe6a7f82585f7403ee2223d52d37b4bf426428613d6b4257980972a0acab508a7620c1cb28eb4e9d30fc41361ec,224d0de7b21690b72a375907a10a4284e9e730a20cb3b4fe396cc6078d9dda5d1a8e81934745361d8eed0b31b6276db8f280104cc0e0ff4b36723cb302381a9be703b0de4c624a27996155599204dd2e219ff77008463beb4461de2de3010a002fdb300c24b1a80c8df311c80d174590043ec365fac147a671daae41f38914e1e6614cb62c4db154735363d7c7b7135096d7edc6dbff1db407c0061c3135ba4577d5682e57007ad6e5b9adc87dc27eac3d03b3fece4d9b4c2b2667e6d9311e342d037d58bf67cf38a4ab448aa4db2c847e678f66ab45f0bd1b581af6e881e63fc170f44fd0f8d87d6fb160a78097a4896be055d0167007d9cba610da08c8c342e4bcdacec6f0bbb30108f29a21947a9d842510e68fb175078b9064364046e544023ccae9448c0727e8fd26330f26fa60ef891489b8cfaa623086372c09c0373c9ffd7e3648ea0f8da7fa99d9f2d6617c0467f2f069f85adee5535100c519a528c690ee9192a888acbc11befea2b81e8fd380cb8679b6d80e37cbe3271ad1ef633204a8b97da2e05565f8500db9b1fd8032c69f57409251932cbdf046e0ab99896109f2eb1217351b242eaf3236139f20eeac594750231186628453970f3c8452e454be3d4d80e99503f350be1eff8778ed13f3d8828768e2f66e03c246b4fb59cc2ced5cdd266d320195a601c4e4928d84c62cdd8ae2ea357e4a8f34223fb18a +e88ab086891693aa535ceb20e64c7ab97c7dd3548f3786339897a5f0c39031549ca870166e477743ccfbe016b4428d89738e426f5ffe81626137f17aecff61b72dbee2dc20961880cfe281dfab5ee38b1921881450e16032de5e4d55ad8d4fca609721b0692bac79be5a06e177fe8c80c0c83519fb3347de9f43d5561cb8107b9b5edc,78023c45dc98541f14c21df4148a80ecd01f52ebeaecf7c28e9fe2b2c69b4b882805515064800089e6f18223a624155de37ec8ec07e68e282204f3ac9bc33f8ed6dd98ed2ffd9ebbd0627b0efc88f7bbcb7815795928766698dd530bd0aa461ad9499971fe935bfe38b6a84ed2d842572eeb97d7290ace13c41899656bc30317a95efafe163494eb7e358fc31a39a20012a82f564813234d598efdba11edd2b0f3a2554bf4fb216084772df94e3d43e55f188bd8b8b5b297e406f2b8407ffdede7ede9227ed6ad78e098147a658269c26ccc0f2988f06de00651a7156407cad75884eddf56a755eddd45030a4c43a82d55600d8fdad155d13014cd27f827a30f6031e0173a2e8da9a8fd9f7590eca5f37747e5abcc9c0a0ea589422bf9647f3fa9893ba3616c38c15ed6cf1f9ec2a64b616a3c5e6c5862fdef36e2a44a911269f4ade8f7b90272eab51fda36d9cd0b88dc8951088eb0d7d68bebb332d22c4240f5dd354cc67650cfe4659d354742ada6828a7cdfa82f77f1c846361087d14173775f44c8601a56774280d941f256a89eeb850056b38480972a6bc0d893a2105c584bcc3e963df2dca0b39b82823f5a4261fb9d4412ababa7785fca635a84bb757e1380531f5ef986f3a771e4948653178b240a32f8672b8b655f0bc832f853c206d2f6e73dbbdc2669da67666947ee50ca82cca023b5a3c485a9d21623d8a3d8 +fd19e01a83eb6ec810b94582cb8fbfa2fcb992b53684fb748d2264f020d3b960cb1d6b8c348c2b54a9fcea72330c2aaa9a24ecdb00c436abc702361a82bb8828b85369b8c72ece0082fe06557163899c2a0efa466c33c04343a839417057399a63a3929be1ee4805d6ce3e5d0d0967fe9004696a5663f4cac9179006a2ceb75542d75d68,31edb63fa182a6daadae56c08bc794e74677457c69cb23ec82d2b8f74b8649f79754a8d9bd42ba3bdabe0c4a161f7464d2cd80972824e6a04bd9cecca798c2e26937afa93194246468d66bc8769a26088513962435d3dad9b1db5544e6a2050238a242397ff6e7419569ab3ce2ec14c54481d634f56d1f32d453aaeb23b2078502190c8d1cf54e467cfd51dcbc6e82f95197ad1f6cd301849b76ccde540cff8403d19ecb88db81a45fc13629800d000fc5cfdf508014d4324ff6d2414535e5ef3418555b81aa3ccc74ffc80c6f4f170a3ddd304d1d5efacf554164e0ea798572dbb3393f63a7b9c066ad68cf25af0d36400e427a5db9b3ce639be2db8edac6ab1eb2e362682d6b0ed0d2b84cb28b56f1af4f4a9df0faf3447de9a2841b49cb2aff2423a2cf58930d0be6331349511c26d6f07a0abd32a54f70bff5f43c599aad00931ea7f28a85010abe8c93f941b4b4931813796419fb41f3bd0a6203b14bbb288116736b3a31cb53ff26eba377624c1a0a280b768dadaac7ac69835d8c324234eb907b64053678f629784c6cf34e0ab5522d6e9326998aaf24d1c1c62b93652896cc6a9bd7de4f4ce7f6d309ac957c2bb446e6beb8b026537f7fcb7e45ba1083f1d690bcda15b1487defbf59dcc1a5a6edb3dfc783b4224702a7f6e466b4e48da6c1abdd918512783b6a7fb6446d32fb580fd292f2ebf8e3d0302545b8c163 +59ae20b6f7e0b3c7a989afb28324a40fca25d8651cf1f46ae383ef6d8441587aa1c04c3e3bf88e8131ce6145cfb8973d961e8432b202fa5af3e09d625faad825bc19da9b5c6c20d02abda2fcc58b5bd3fe507bf201263f30543819510c12bc23e2ddb4f711d087a86edb1b355313363a2de996b891025e147036087401ccf3ca7815bf3c49,2611992c1226b5b402f19662fdf3d9c44d118b949c8aa1073b8bf8a5daf30d9802df7b1ecfe6a9a1e9db9aade3b308867397bd48b89eeaf36c3ebdc97b35eecc2c241941ce702a0ae96f02e881f82ae2842e1a7ba19d3390b2d4b5e2bf3883ecadc81afeb6543dce3857fab5f926b1621d32aaa0b1be10452a4e4d2229b0e50b478e28595e564122318eca4de680e354a745501a8a11ad263e22b5a69e2f70a3f53594540b2b9160c3057a32e633c616f6dbdf8d6ee19936ce8ebe8bb7bbc118d720ec88f3536fad10fb623801c720d07365148672384bdc9039f0118c356ce20eeb8ce68e7c85a0e4ba3ac5bc7b21e6b567f13fa1d5a4db953589913cf2424b7b3def3b234388b7327a4e737b590b9ab1ee126d949c630420a04c32edce22da326236980734249cfae18ac0fc2a253ce77d2813694ffc66b0e60d3ad245ab4add0bdb1cca7e4228b73c18335558959a06bbdf24da8095184b31cde2f4dead983c9e29db2d4a3c5c40c7775ea30a80cdca44b4db2783379074017ffb6f27e45b86f26ca42742db1b11e11bc5b99d5642e482409aafab2bc833b31774a8ac578bff32131d714b2f8dfe91f4db4448c34e341d26fb64ae00e5e985f16a35857e44b9a846402858a192edc0ceb7a6fbfa90f0eb6d743bda4bb9c9e621d7433ae693cfcc991b71eec3b03df1fb03bdba05a63b9bf17c3caabd40808cbea2df0697c8 +77ee804b9f3295ab2362798b72b0a1b2d3291dceb8139896355830f34b3b328561531f8079b79a6e9980705150866402fdc176c05897e359a6cb1a7ab067383eb497182a7e5aef7038e4c96d133b2782917417e391535b5e1b51f47d8ed7e4d4025fe98dc87b9c1622614bff3d1029e68e372de719803857ca52067cddaad958951cb2068cc6,6e722a099b2b47e38c69a0b967420fc5c1ca2926568bce435e5f97d945b261c61483b45f517827dca03ff3ae670883077d5625112aca377e731364932767e5b3ae406adc06283549d64fbf3eeafbd79064420edd544914fa479355f6bc6cd0a88269eb1b4c5e6e2f43f380ba5c1d343338fe73da047e9aa9a06c4a14aa7096b5ae025759244a99a8fbe61b7e326841edd3779a84591e9e44e810cc24870b42bce705f06039fe93627b51dbb8163cf8d4ac0ad3983eccd3a90a85c58ab222463323d5f786292dffe07e607c100d2c830436aa1e4741adc7a7439053045ee3538822cadfe37413ef7948b67f858951df901a7e3d39ebac040eaaf4c6277656eff711034ee862dcc247672dd0bff9b577286750083fef332f630348119461cadc2089c332f9a0078d074cebee2e8b5b8a1a5b4818a53e9c99c330da1682073a7631acf1bf621c59aa45935fb82e634d2549ff405d36b23327c66f9b4c7e092b409228f8b0c95539c3a9d89fd7ff92d2f811055f6ed23cfd984445f7be0b906f6a920ee0af326f4f60d8b5987c736710796b33e58d2661af11f8ddddb12a12b196308f6493567904d49124da69d291d73b104b5c99c002a6606718eac2ca92f8a6be6328a5df6968db53ca0df2990b68f0a15a7f8b006baff2483a0f6d93281c62fe689f5856909cf3c56c5b16169482cd779a3137b6c702c7641b2ef2e9987f5497 +b771d5cef5d1a41a93d15643d7181d2a2ef0a8e84d91812f20ed21f147bef732bf3a60ef4067c3734b85bc8cd471780f10dc9e8291b58339a677b960218f71e793f2797aea349406512829065d37bb55ea796fa4f56fd8896b49b2cd19b43215ad967c712b24e5032d065232e02c127409d2ed4146b9d75d763d52db98d949d3b0fed6a8052fbb,7b35855b74d677ab6dbdbbbeed8f8bed3b08df15055606a7e7fe9f5e319bc70bd9df00a8571abb6e6c202461ea00a2d701da5c3942975c48d78ce565689e36379ea603fb1c6c53b508e0952b892a5aba6660980a38fbf7c91d43bdad1f3eb20910beb91502404b21d3c5283a0a88403c6aa47d9dd0a04a23dcefcd3527e4e961782a0e585aae6bc9b7e6acdbbbff9cc76f757887174cee9cfa531c380467388fd2153ba8acc2af706f35667253216d3a1e623a747748fad46ad65265e4530ab84d39d9988eb876853e976156900d9de464cc2c57385f55242608c9e9c26b67683293b1f83181c60bd77549c576f2beb8e54b3ec5be2feac8cd340cf104b0a49d9fb484b538296b31e30e55f7a8421e5e16b91869214d2f7f4dc68736e09ff2981518ff83f24d51e5f9d9300938600ea6c007c9c98a392b2e63216dc1f07ef4d602f47c1f234b857d8650d23edd344152ebb5daa47bff8e394931397ab2231df1e22c566384112e8560e69ee422758e8a76e03d16770e5d417b6fb5c68d9cc93e16759987fe02bb8c99b8d368248a6893adbea888315d4ad251fc57fb1eabb2ab314b24ecd374f4566989038134788f344453714f05a81ccaebe92c75200fd8a019e33a362722f222708c4f3894307d09a4b4d3666002a8eaf2d6cd19db119a957d2b66b0c788241cb7702ddecb63142aa7ca5b028327cb51d72904f2d819b707 +b32d95b0b9aad2a8816de6d06d1f86008505bd8c14124f6e9a163b5a2ade55f835d0ec3880ef50700d3b25e42cc0af050ccd1be5e555b23087e04d7bf9813622780c7313a1954f8740b6ee2d3f71f768dd417f520482bd3a08d4f222b4ee9dbd015447b33507dd50f3ab4247c5de9a8abd62a8decea01e3b87c8b927f5b08beb37674c6f8e380c04,5b31c72a95d9ea4ab6ebfb2b2501f14ec41223a010e123b68865dfb7061f8cc00f69be86e56a376a377e9544860f44b543b48c8a56c6a25546aa7573c29daba9b746a94ee82a33825047c019eead9e7a79d50362f649acd1ef27df8bdeab02965aa0c0ce67312433e0511b19a5d213ef9720e688a80cbdc7ba1c50032701676bd4aab79675f85f76b7458f3e6d723c62802b1892f0c2b45138142ad9ef329d771e6873be098cb8c501c3732836eed9165b69ad40ae5a642d980c7bc843fa76b605fb68872de523c591ce09f21976ab47ff64f773b5d7eb54366bc003fd6f75745c4b14efbd1acdfec8439550681208543e469274a1fddb16d4125a01e9107855149aeddb7e21298dd8c309ab1c1bd506f2d377042f27fc275017b642456c93fc882e3cf44c1978307e7b9bba16f612e28e99d2e18d2d85ddaa235fe65ee40d905a845768372dd621e6394afa4c59378db5feeadee6e342d004598779f08eb9a231ba0ccda0a1c7d19ac741505f0d931c73f241d1999eede40aa53a8a47f629937d29d1a6d2aef1807be7c333daa332b4c5551a7f37177f484740be772eb03d04e82b2487aa65a2e4ad00f553060c6a9577d21a6c3b731d9d1659e54bf14ce4e4b7932250a8f3711feb7d9997a5c554dba364dd1f16ab4f34b37fcf5afba5b06bed58e6acd232d69963aaed993f51a1c4a2347d8119d381686ab0942190680cca +04410e31082a47584b406f051398a6abe74e4da59bb6f85e6b49e8a1f7f2ca00dfba5462c2cd2bfde8b64fb21d70c083f11318b56a52d03b81cac5eec29eb31bd0078b6156786da3d6d8c33098c5c47bb67ac64db14165af65b44544d806dde5f487d5373c7f9792c299e9686b7e5821e7c8e2458315b996b5677d926dac57b3f22da873c601016a0d,d4d8f990acbc762bf3bf4382ee78466d36aee8e7d3597c8acdae9a6245020ba5d936e82c2c8d7f861186d428f3abac5e1f5f4fa25ea3feb4fcb850abb7f654167118574a730ceb1ea5d4a3ef579ac58169cd02defb896fb0e8c0797d9a326c1aa696eb1ae150eb2ece9b49725fc6c285af8da2908eed93b6b01512b80e03bdc74e9a528843acd2b9fdeb352230bc1bd9f0f94eb5c9356259530e8e0060e0eb0751ee2f5cfcc2890e0fb8e5512530ea0d6a7475afd535c34bfd14ebc48a0268f3fa671e87effe404d63a03ee92759c6490adda245bc924d582209e7406905678cdde5529f68db56602d546d2e36f5417db7d3acbfdaac622a65560611ff98a262558b304728cbd7ba748174c0eb2faa8907e1056b4af0f820b849bd9411129f4fcf0ccbaa3400c2b7b16a2126c53ef6ca35122f8a8b92549e6ab330c4436268080898ac9c03c27cee9164ebb9c4b1e54d211b65284047f2c535d3f871ff50b81c437daebc09507a318c296f1ff48572e4babeaf96082b177b4b80bdfc2f99fc5b5bd6983e0defb28c98f5eb2ed1d4b36641d3ddded2d8268c10900284b8146359694f4d09f176eeb550b7629e6a936e0bce2877c8525cf4983327227e13b119791d465f9febaad25943ade5631f1dab35aeeb7312ea7b908d19f257015c1cf6bfaa29728437f7620cc9c0b00e79f684e4f4313375845b9b524b3842fa0dd1560b +8b81e9badde026f14d95c019977024c9e13db7a5cd21f9e9fc491d716164bbacdc7060d882615d411438aea056c340cdf977788f6e17d118de55026855f93270472d1fd18b9e7e812bae107e0dfde7063301b71f6cfe4e225cab3b232905a56e994f08ee2891ba922d49c3dafeb75f7c69750cb67d822c96176c46bd8a29f1701373fb09a1a6e3c7158f,77a1157dfd30a79c34d64cc29b9712c9e1ca76ca5565d0861d337627c20a25d85aa061b876a850b43c5ea74946d03e35b6669336aa47c5859ebff82333c03741bdb0930375c34275f2b2caeb83cfd28965da12f60a646ee52372773de04613a3ddee266e20e0ac047b09260e0b69f4f134b5ab8eeee481f887087c0f8639cd32c19fa514a3114e938ec70e8e7e6cf40d11342775c0aeaafd8f8b2dcc884caa603bc8ffb7a282fa6291bb3aa37f37cf9707632879532cc93c6f5c46fa6d6235d7fac64dd9104faf484275cc635c3f732c30b155e22552d2bec2967af002683df1286f98f25d916ea9972dc6d2c5af1a1572bc5363023621a33c0fe41285148ca9bfec731acf75743c9c64b48bf98fa32b6d92befc777f6b29996319bdd632d56f1bcea5c52db9e72bc71d6cc4d1ce7876b02fd48e4eb1110d727afba35afbf8c43e3445b650f06c91b90b12c3036ebbdaeb3d2193129b22e188469a3c2d469f24b530200a08e931b2e95891d966c7a50c2365a73d169d010fdccb7f3a739d4a589a84780ecdd84bb34d54ee5ced2c729a04b27f9c82deb329e491c7b462308c397beec649e4d76239a75bc8bf28b1a8cbb81f25f73e53e19b882f0855ab1e93d45f9293508c66c2211e978267686f5f54ae987d59d73db8144834fdb2df2d52631c7671aca994a99b8009c98a4f847b71a29b3a0636670721aa58baa5a11b6fe8 +fa6eed24da6666a22208146b19a532c2ec9ba94f09f1def1e7fc13c399a48e41acc2a589d099276296348f396253b57cb0e40291bd282773656b6e0d8bea1cda084a3738816a840485fcf3fb307f777fa5feac48695c2af4769720258c77943fb4556c362d9cba8bf103aeb9034baa8ea8bfb9c4f8e6742ce0d52c49ea8e974f339612e830e9e7a9c29065,4031b77c2a88ab9a31a357652b5ec18239ea42fef5b390156d7a50a1c1d826a52297b169bc808725b00a671f83f856fc37ab8c48e5d12e277558896f19fde5038c03a95a3762ff48dfae4d644b904845dcba1145084e6b7316fcb5742f31325308942fc31d7f465f6c4d686be9788de37fb57a6cbc67ccc39f09831acb1b1d8010254e131ff7a05031f031e6375cfbed440bf0d66f7021a927ad249bd3c78e2596dcc4e4ffc58d0f7331bed5bcf249c8092832c17c701c65bda1dc9c50894726b04661f5fb4feb570d5d3773e33d2dcd957c171ed631e4ac5a8f42b3828f78ba032630596dd8b8462a2f25e502b25da1747d80f96dafff366e787a340a0af43aeb8d95d565b1bd8d7f8db4fa4c76f5f8422e6c240339c3dfe8d4d13e1db745d8212bcfe232aa5c519beccf64b38085109753e2fe5014f9eae6761d6d600ea05cf0ae6d4300c7670fa1849333bb739b43a7ce58998e4f834309e9505856ed020eb8205571d3fcbf3a9d316a4a8b6e3a397c0200977ca95e854aae35a5581c88448966112ffc0128f6a7b5de197019d830c619d70803b72d318d78fa067dbcad646857fd8ca5b6ffbcd7e0e3d02b6d13ea02b9c346e0000c2488fca6e8e868fdee7891fa12b095860b11b7c5459465d09b6a7b388d9bf6edb0b99486a8c949dcb2431cc8ef13870bb15956b17405dd1047b6d54cc74d0d4edc3df689e09d7381c2 +9bb4af1b4f09c071ce3cafa92e4eb73ce8a6f5d82a85733440368dee4eb1cbc7b55ac150773b6fe47dbe036c45582ed67e23f4c74585dab509df1b83610564545642b2b1ec463e18048fc23477c6b2aa035594ecd33791af6af4cbc2a1166aba8d628c57e707f0b0e8707caf91cd44bdb915e0296e0190d56d33d8dde10b5b60377838973c1d943c22ed335e,31b51a74b7392b14e2fd94e248e7fb7740536fb6e88ca508d019066c6cdf83baf2162f4dd175bd7e78326f1a5d6bd3a9d9b5874c474c08612edc3935ee24bd643a0a3abee5626c43e99bfc73ea434872aa22bea87311ab71880096ce23085dcd489fbb2cefa4cfbb06d12ceabd4b1d28611606cae04ef71e7b37e881c2c1089e08268ce45e0d25aaf6843b45aa50f2bfcbf8fe291fb2745b770cbd758cb0a86c8fa439893d93b5667011a8ebf345fa5059f062da72d0e5c3417bbd3c6abff924eb6bc74f6dd0b30bf48848117e7820ac9892ec18dfb1b567612627f9c2585342d165418d211ca7fa4a1ad6511d3b68539cf2db2f6c3a4c1055785517e0528a6cfb006b54808d7f897b0386f7514897874c5a4a3a30d8d8a277a6a59710d0ba870df52f2a0916aedb0870963c205bf49c6a2251ea92e2f9b4a9b9df98bbe752a5dc258e55a8b3854bf19873f1908e95b537de470319ce3648bba5a038d11c87b4fb9dfc9ecca1bed391c0d48825b022132db26fa3d17d60985d5d0611353f96b03c4b5831fb9bc0c411d1909393b54734b59b15ee26a1952438c886d61c5faad119ebe8576aa904f18fbe19c549abd70f02b1be98d343ce0082cb6005db51a6a10ab5e50a89ee44f3502ab19d62c04637acd5c49de78f5a509674ae8eae906693fd8110e0d750f61562d088e0b87ddaf96fc775ceb0f13800669bf2a00424e6ed +2167f02118cc62043e9091a647cadbed95611a521fe0d64e8518f16c808ab297725598ae296880a773607a798f7c3cfce80d251ebec6885015f9abf7eaabae46798f82cb5926de5c23f44a3f9f9534b3c6f405b5364c2f8a8bdc5ca49c749bed8ce4ba48897062ae8424ca6dde5f55c0e42a95d1e292ca54fb46a84fbc9cd87f2d0c9e7448de3043ae22fdd229,3cc7fd2aa14a9dba70ada029992842231c54ecd7d14fa4687424fe1b54a58c7df8a1e9c87569b695cda9b2a27548398440c77a5a66ba94217dc24854462faac1caa8d171e610b6d280668bfbc87c8ee2160e148a6eea29dc04a57ffc139089ad5ea85f89eed89212ec7439530767563137a4c028a5fb28c1ac53b3696282560e15c1585e51b799273709cc5a1c1a93c774bdb19c4e336cdfdb696a39ef6a8ed8eeae92c5660718a7e90c691c84a56bfff85da418c9df7a913352fa53d8635f9ff4644b8ef03892ffffc937bcee4b9d66154964623db90bab15eb783eb14888411cfe2ea417a373beb4be6ca5771f6fc0ea8266d56275f139eb3a90c3915ad6355287e06ffce64d84fd8b0e06bad9dfaf7f7ebc17cd7ed316977ab481ac47253e2508d349993fed324fbf97067ad19c255275d7ee2e119fc0f4490c62edda700c27b5088d57a7223729a64ac1a418071f4365c61f898a350cb9b82f59562847016a40e72f862e10398fdcca0b86fa1f92d17f35a07c46b3ed570738d231df3b80b0c2261ed932822d811970509d7c664d20bfd597543b3ff61d6ce3b6ccf924ecab5fdd9d0b0deb0444e62d950cb6a688bf470c53930b44ff4fc9b4dc7903e97bf29c5373582ddd79c115f66d31f839d7bbd34808539025ae3da3ffd56778160e18f8fcdbf6744431d42caf155028e96ce1096f856e805d7435ab1da522708411 +94b7fa0bc1c44e949b1d7617d31b4720cbe7ca57c6fa4f4094d4761567e389ecc64f6968e4064df70df836a47d0c713336b5028b35930d29eb7a7f9a5af9ad5cf441745baec9bb014ceeff5a41ba5c1ce085feb980bab9cf79f2158e03ef7e63e29c38d7816a84d4f71e0f548b7fc316085ae38a060ff9b8dec36f91ad9ebc0a5b6c338cbb8f6659d342a24368cf,4144315dae1fa8fa09e41ed69b72fb8fc64a62f8133eb9c4bd53d6ca7c3475048afe1d0bc778672d715ed01c5532b393888bddbdc4d43dfd82fbde560a80329d03ab5f4d62358e65d36eae4094880e810d022529a8945ac9be8255cac708fc435310a7741825257babd70e84be8a0099ca66754c135476340f1438237d7c227c31353d3878e67a1856868c665cf049e16fab2fa6a2316053712c3ee808762920fc814b3f336ff8c9846cb43422458f743acc398f922eea476823cce9aaba48d159c55bdce636d231f18f49c9b70794fbf1dbc4f71d87b917ec9d1ad5545a4471592883d63f91cfaf7e64805f82411e715bb61cd96eaf2aaf6a22c14790fc76310facf3c2fb78b34d3cff50bb3f3a19227a18a91e7a6d3cd38d5281cda2cebe333c7eff4d357c55889109d5e0b762471c565e1aad50839d0298eab2723eb4e9d1be73fbfe507189e5f20c54f256084e5ebc04cc622b080ef52c38329f301f8f97fff2a7d8249e2efca30bf77a8a3b9630cb5af5e9a34318b94e17bd8248edabdebfdc37e3476155434d32b7a7905786487ba232786c290bdd790ac255bd100efae4be59fa6b1674c651e8eb9fd2adc4bf5be6a763408dc558825b3a22bf141fa45e6df862959f9f47a91bde715afa65099573f1062333ffed43870cecfaa423fd2211f82389bd80f0f033b4fa12964448846e55ae2ba46ac9e7422c228d75a1bd +ea40e83cb18b3a242c1ecc6ccd0b7853a439dab2c569cfc6dc38a19f5c90acbf76aef9ea3742ff3b54ef7d36eb7ce4ff1c9ab3bc119cff6be93c03e208783335c0ab8137be5b10cdc66ff3f89a1bddc6a1eed74f504cbe7290690bb295a872b9e3fe2cee9e6c67c41db8efd7d863cf10f840fe618e7936da3dca5ca6df933f24f6954ba0801a1294cd8d7e66dfafec,95597492cd331a89c013d6179031ddaa08a90fa825c5a77bb5e27e32ee7eb1f02ea0d348b5372eef60a45a84b84d45c18695270fcfc07f3ec95e00a2ffe901e5c9ee3dad600273af0d73ffecfaf141c3b63f3faea90633917e260857cd1c4ed198fbd4753e82a42128f2525764b5a40a66e1623b81804bd3f17622598bf39fca57d8c8d0e2e2ec45a4ef13a2b6b0acd6e6878ba5baeed796e3b3498385ad7e88576ea08e148698be845b3d7483371b43fa9b35d785a0028ba84b0c8fd81122935dc09869e065d47d95287d3cb4346d8bca8bf5d4dca3bedb1aad70ea3b5acd48c5c02fed30b4706c104dc159ea96971e8f44248501bb782ddc201569622c1f98e893f820d149164f9c465c41a998ffb561cfcd7b3e327f78961636192d6158da80a7987533c01c2dd380912c1acf14330b85e93ce05f2238ad0c1a05995b631abc9cfbe70aca565e9a1cdd424d3f8ddfeddc0d3d3360ca917b30d7216a85a14bb13e8da29228e57aecf1906b084c72236b91d669a312f01a4b7787c4decee4f63ca276f63766edd2e46555c328d538581e86f2e3d74f5592c1016396082ed06adf8df9ea53b5e0c020ac75b636a828ccaffc064657a657f24e62107d772afb24a5eddfdaa4eaf2b99341affaa1651010e15f6f4e41a67c1ea2101bf5a61c491d5a88577c1fa3be0a0e0781c53ba9f9bb85da59c5d0f3b2aac31f45c9ca283928 +157d5b7e4507f66d9a267476d33831e7bb768d4d04cc3438da12f9010263ea5fcafbde2579db2f6b58f911d593d5f79fb05fe3596e3fa80ff2f761d1b0e57080055c118c53e53cdb63055261d7c9b2b39bd90acc32520cbbdbda2c4fd8856dbcee173132a2679198daf83007a9b5c51511ae49766c792a29520388444ebefe28256fb33d4260439cba73a9479ee00c63,e7814e78cf280cd8d0b27b311476f21d6185abf37fdfe2851143ec3425f12dcccc0faa95b2e6f8ece8c4156124c9dfbffa77624e5a4a9553f11675844c3af0e816cefcc3eea430d7c730cf135ff6a34e542e50f25fcbdbf3a051f39cb028f20b8d6f85221b7dcde00d7e45b78529638508ab2e6bb8d885752ca6c97455e61564c2ffac68e5892bdedfbadfcc88018a92b599807583e9b8bad62306948fe52b397cf88d20d440898075e3674fd09469d1fdbbb2350751f21e48be74f2b04e7a148286fd25a90995b5a95716d67ab566b78394746da84326b83cff482f82df9b8cbdf3d92992d0f05275d37af3fcd4ce211a9480dad745b6cbc4789c9015ae23d1c3a25d067c9a9f7e611ad05b8d44940ad622c48730282789a839af93d0735725cbee9dc4231e8773b6dad31178053014f11421ad0abcbf32b1e6386691759d58ef7e2a6e2bbcc11b5e62ced89c4be975fda74abe9395dffd9e8c102a5142933252d94b0266ff776e9224985f3f2c96f7beed03ba881b99479862f8b7dfa96ae0b2d2a97f773164e1b473a0c671ecccea64dc67f3a53a21e51b794afc4531ae4f41898e250c80622e123b27fa28eb7f07d4b4fe63d75866fbdd730b54a9297697f541fb429084ad43dc69cce73c6c17253c481a002ad7ee11fe077554a4bb45aca4e9d8b8c8e8407866c011b749c3dba372c2966aa0c20f43c86c01ea74be5bff +836b34b515476f613fe447a4e0c3f3b8f20910ac89a3977055c960d2d5d2b72bd8acc715a9035321b86703a411dde0466d58a59769672aa60ad587b8481de4bba552a1645779789501ec53d540b904821f32b0bd1855b04e4848f9f8cfe9ebd8911be95781a759d7ad9724a7102dbe576776b7c632bc39b9b5e19057e226552a5994c1dbb3b5c7871a11f5537011044c53,50f678ce2970c84ea11dbdaf399535a692df95267340a394616760ba82bad865f920932dce65d0f10b5af1b378f76bbe05cd8c8e16e5720e527326fbf375a5f08aff54c4554282058636c69b6010330c1defba22f175bbfe434b6430c24c06f034f6bac59d1063a4db1fb4243162f368385c5083a93a7e693009bab0f3d8f24ab45f3d20e9582d1e9d0af578bfc8c9a0f09a92e4d76643eba46e71ab177307edbb2dc46139ded52fad1459a41114ee88f439ddd064600402e237835797b4be67efcecfac28d9f3f8b8cc773147400526202984c0cc2cc6616ad2ef5e0fc16509372f9efe63d66cd41c61ae88928411054953bd95813e520e02abbb52bc49cef99cf09bc3c83dcfecf2f6f4768ecccc8639752a28531c0a4038284c174b34978850b02e45d7810c4feb224e3de0c89ce69b06dfee9ce2abe8afb209e29194acb6c526eac490d5a9518d5a7e1c1a7cf734c92579d162f2862ebe0722e2dce53dffe84a52a459b9c1d0a677a41b0f1a945ab597ebd8544afdb1af97cc1e3027ec287df62ea1e81e91cf4325d202ddab62e09e6094fab327cdcfe2ba6f760c2ff7d7992a3fb675c07f77db5bad69056bbd3a50a0a24df64a73abc3ce3c1f131e7e6c76f0fb207f6d6db54c8d128f2c8b670350602d7b0a52153452cc92ee4f185f4570405e54cb95647758a31b8434ebcefdcbf00a43857a58f6506cf8b7aaff3b4b +cc7784a4912a7ab5ad3620aab29ba87077cd3cb83636adc9f3dc94f51edf521b2161ef108f21a0a298557981c0e53ce6ced45bdf782c1ef200d29bab81dd6460586964edab7cebdbbec75fd7925060f7da2b853b2b089588fa0f8c16ec6498b14c55dcee335cb3a91d698e4d393ab8e8eac0825f8adebeee196df41205c011674e53426caa453f8de1cbb57932b0b741d4c6,c860cd3e9223e1cb941e130f9f71c376ee3a9b89da339c61d90ff2b48d1f285fc48a4b6d87c199989d3cffce4fd84699fe385c7ca018d4f31f00e41216412932a833794af207132ea430b07201eed784c2fbaf9506957fb9f7e18eb9fdb06f051419bcc7d67acdb93a9f78529d9b5344ae3c4fccffc406350847e228be20c93b22760ba43977451b3740be9e3b283c86959cf062b69d5bcca35ba5362ef0b2ecfdae225cfeeac473e420ea1ab7ca03d4f4a82f6c32fff843712b78476acc46e4b88f280e3612d5ae2fdb94fc26d5c40812b0e9577dd995fd4f5282e180c37a02d6140fc88ebf5972739d591f13aeab894f240ed4be309daa4f3b0e2d536f3def87ba53a881794b80efeef855bd35026ee9d8492c90208c313288cde719a111bbbdc3bb56aa218ed1b466e6e01728da23950f821016f313a69665d43bf2c619884d20e83d6202acbf85bf86d271a1633f32372b067be55570ccc2c7600b0cea6133ffc787b743f3d2346564a2d598049d92f9c4160873ac7e03143bc3ac5366ee6c4621c25aac1e0ae4eff6a35add223a61dd044593629c082603847bf2b7f07a4115dc1c87af0f7854563eb18ffa8e24ee09e299738ffd4f1e79019fce4e4582b063ec1f36442b085f82ffb99d409b4f692a8ebe9aacf2589306204fe0f168373476393783874525fb808c2b90f1fc5d7a368c90aab7ae46e21feab48d667a5a +7639b461fff270b2455ac1d1afce782944aea5e9087eb4a39eb96bb5c3baaf0e868c8526d3404f9405e79e77bfac5ffb89bf1957b523e17d341d7323c302ea7083872dd5e8705694acdda36d5a1b895aaa16eca6104c82688532c8bfe1790b5dc9f4ec5fe95baed37e1d287be710431f1e5e8ee105bc42ed37d74b1e55984bf1c09fe6a1fa13ef3b96faeaed6a2a1950a12153,97afed51ea7ce6d0082a0ef242c37fd626db617daec0c967076d8e63e4861db3ae1308f19ef4b9f0b7246aa0e255e7535b5c70b341be15ea4537cd1f0235c0f9e60c2168c2b04fdb3dd871460e0bbf1e3193d04e171e0a24bece6517cb04a0b020ad042f28680ed42ee01d4a05c3892b0654c961743591722054ccb0756341b54643817802b3e05d70d71e339e487206ec34765f5c0d2346135070f50d28b8afd91ea2e88fb9dbc1a932feeb781f13fe5e047f7f43f51464b9d28ceb8b19bf34f03c1c9d1dc77a8fe475b349251e7ae0ad171c1fc81b862f7f73302f7b48337edc72d39c59785c5572929a6e4f947632b41ecb4ee9bc5e69cbb746e2512986d3a23c7f455fbe5f1891c7101bfd3aa738c5c84bc194753d9671b8f3eee5a35399615537121713dc85d23e0a7b47b55de82c8109db1e0ca96c471f366318e5fd9671d6468a36be694635f65249d65b9ab9a6e6a5361e35350cd258b8dd145a3b68dcc900673bd1a13369163e5b5d3bc524849f73c68f01c7c8b88c9643341d225e13daca45c62d9b5693e2e04163f96454a52b4baf64dfe2293e438e511854a99682059bad034712fa3e99384244f83aef74b96848d338ccf439bb073552137e903767117959a2d841a157f468e597522515bc43b121b257b698234d19280c4f41eb865882e4abfb4571dfcb2dec5a30cf7d6e867f8b5e0880dadff8da337230eb +eb6513fc61b30cfba58d4d7e80f94d14589090cf1d80b1df2e68088dc6104959ba0d583d585e9578ab0aec0cf36c48435eb52ed9ab4bbce7a5abe679c97ae2dbe35e8cc1d45b06dda3cf418665c57cbee4bbb47fa4caf78f4ee656fec237fe4eebbafa206e1ef2bd0ee4ae71bd0e9b2f54f91daadf1febfd7032381d636b733dcb3bf76fb14e23aff1f68ed3dbcf75c9b99c6f26,1a895365874a70f2304878b1334baa09ef898a0607f3243410ef04b14a8490c193a18fc2fc0af0655e219956a8dd3c7055da00345cb411af9167cb9bdab8939d1565647eb251b7459045184bb050f3700ceb6285114509c8167dfc122b33cd3df761f37a3573a75f5c16aa2376b3270a26522869157a3bf26c4d30a9c1d7b4e7490fc9fc5a4eeac331996b16574a27c32659d0af52e0e50f0c221342bbfe2ac04455b659b814cb888dbbc90dc3a899fdc538ae8e8fee2fb085fbdb79830392084fa1761a49619018f5ebfec31be185f0945f4cf9f5a21aac1dd3f1f3c7b9fa05069264f6368ee4d3be24add6ce5b70e328dffe08043587c39213dd66a6890ffad586f9b13cf08de44834278e04da2f91de05257e0afc44b5ba9bff15cc6f7ee306482704de0fb80b93ade6537358b252d050bef48b9a246ca75d62cee920272b9c4b06fd39fda8dad4d1c3b01acc5d507299d44ddd034d21802e1fac9e02a7c7cdb00f64fc7794a253b1bdc042c35416ec64a3392fdb954d63bde0c1bd7e08cfc655bcd02e27537ee61fae64c0187ccadc045f91f3bfb1758f224aa8768981617f20c889a390b59588e366648bb3a8680b3431a4d0596fc5b5f95c4184bf361b7a2cbeeb424fd08a98b322c37f703a73fa874946cf430a4f068bb1d16898da8f9bb04c03ab3f068a36eace3e2227e7e92bb189b1a4a14c9430ef5833214a62ea +1594d74bf5dde444265d4c04dad9721ff3e34cbf622daf341fe16b96431f6c4df1f760d34f296eb97d98d560ad5286fec4dce1724f20b54fd7df51d4bf137add656c80546fb1bf516d62ee82baa992910ef4cc18b70f3f8698276fcfb44e0ec546c2c39cfd8ee91034ff9303058b4252462f86c823eb15bf481e6b79cc3a02218595b3658e8b37382bd5048eaed5fd02c37944e73b,97fc612935aa839179bd26673524aeabc59fa66ad4f719106826d62d56ee0201965d4659877928087d079948d4b3ffe6cb55bb212e802807a0b9dce7c6ca2ca07c357943891a5abe2dda248b8f703236fce8ede40ec6609daf6e012791c53e10b0000ef3b8df19082a3eaf5c0c0b524816b66bb7b08cb6b65207d0d7c84432af10a552df425fcb2fa965728ef2b974fb59065eebb105719d2534a58435651d743c91fa1953255f777cf6f92d3345ab9af11bef3abc00fc46dc4eea0557df7b683fe58ca3887311224567880c7fb5ffdd5b24b3b8ee66e63fa09202d3133768ac2a4933c923159d651d616791a1a2bde91ea53736ea6b4a097bee70f0ef943dd246184efaea018b9dee2c4fadb93e7a93e40273b5938647a6a10d31a0354dec08a03937c9e5ac71f52db0f50f6d066169c03e883476ef512ecbe2d109d5015a1bf660ea842436060acca32e846612e8fd799eef914e1ee2093bb2e30257bf432d5daa8af87625b07c3c6327768f0867af0b80dce96888fe27203ba076e5b8b90acb51d2ae442b424d6651e8bb7b36bd770c3059caf189aa6cc8575f16b58241fb0b7454e089949fd3aa8b347e0a76d2c5be54a60d9da4be789656fcd7bd5abb9851ec7b72ad4be53d9d2d771ea11644a9aeb6061d74293866cb112d89e93ba0cdb02390aa66f5cec4f9651e306876fb5100f8eae6adcbfb87bce433983768d2cb +4cfa1278903026f66fedd41374558be1b585d03c5c55dac94361df286d4bd39c7cb8037ed3b267b07c346626449d0cc5b0dd2cf221f7e4c3449a4be99985d2d5e67bff2923357ddeab5abcb4619f3a3a57b2cf928a022eb27676c6cf805689004fca4d41ea6c2d0a4789c7605f7bb838dd883b3ad3e6027e775bcf262881428099c7fff95b14c095ea130e0b9938a5e22fc52650f591,531d6b06beff0af847cbf3484d1dc52b2e7799d3c5c384b25858603be71b0c57ac073a330b816bbee8164116424ac5af8e5b44e875e9a6ff54c54e4030cf51215552d53fdf24fa63e95590d4b11a86e305aab52a62f7f8b62fe3365d239b53b540adc34303d5ffde35b702844d05b3cc804365bc38c76f92f1ef81660fc8e8ba535ec58d2cbc4b0efa6d840f537740675a1ec1619a8956ba91d3b91d2417c4d151aff2cf54880b0f7b8ce36a432fc44b30312fe9817be795f07c8e521a183930ec5422079b915fe6ace193b7f59928a2f85605d257ffc3fab1762cbaace675fe130cd4fc90138ae5303332db73c0649459c4f8e0c44291aa61eb3d5982e77e1dd1ea3646c2557e62dc13938e805da7ae0cd2b3efcff6e6e61a8f2793e94665aa13456453282c7db7eccf7c52bd5bcd1a7a8d0fec0a5d69dc71fb78e8ff08c7ad7420c0ca52c80e274d9bc623531e375fe41436b4062efc72154657536391b91d43cec7ef9b19b901183b70866ea2c4416021a339b827d23626380d72aa8a3d66bd4e119b2d254ea426f1b40cc564db0605e015773907dd964471710e7eb3435c6cc7951be6ad4207f40485693f57ecb41d6774a840e495ca1dcdbe1f112f61f8e135f1245fb09059ddae40250862c79befc5432b50b8b8a4ce0804a3127697bdf3331d3cadea1d459f565e0f2ac133234160f8111766d31a89c64351817ae4a3 +d3e65cb92cfa79662f6af493d696a07ccf32aaadcceff06e73e8d9f6f909209e66715d6e978788c49efb9087b170ecf3aa86d2d4d1a065ae0efc8924f365d676b3cb9e2bec918fd96d0b43dee83727c9a93bf56ca2b2e59adba85696546a815067fc7a78039629d4948d157e7b0d826d1bf8e81237bab7321312fdaa4d521744f988db6fdf04549d0fdca393d639c729af716e9c8bba48,4f56f2baadd2b624f6643c1dbb5ed95f05fbd0550c3e5829472734be3b4064529cc3dcb3f886c65f074539d3f1b13215256af4952784faddf00e184211db2ec238a5ebde55dafa606b0af6d108791f63121865b6d064ce12e446c0b719a856b1647dc4ba13614505d9b3a91417537e0b110d086750325ac8a1964b8a36bab91baa1141dce862167a1ee4daa01da6b3ec875af9636268cd995dd980dfb6476c0bcbdd8430462aa56bfbea69130dd43640e23ddc4d9b469a521a533dca9e8a197130c3a9503393e958a77cdbf9f93fca6921283c96ee38c7ee92c7f0781ae962c68a07014d6c623a3338a1a19216925a432a9971e7f6366adb701efc4d4404e02df452f9a6b9aece18aa61c56cab2582409e4e741b0ce17c6ff881e3f509f536f8f681268e71aea6376767f5d49df3239c65775199b68c84389d1d4a426ac10d42046fd6aee02d4e0f48ba2efcecf83130792996801e64b81797214a2eda5b2296550a13e38e7daf36f9f2a7b89c1dd0a95590e2b77415c3a35b9eeb89be993333551d52835fe36d91d2f205f626fc03cc4f9386e4d815f6b8b128a9c13af40386538afd481650ef886d3ddb7b0772252b73e9f44d7822cc99455fe118c6d1003fe24f304b83e6c76419527f1cec5e5ca57f7911554d1515a026e573d9d4bf5ff7536475ad14bdb8490ce353e1edfcb038dbc2819d4edf325d6c3479f2c3b02e67 +842cc583504539622d7f71e7e31863a2b885c56a0ba62db4c2a3f2fd12e79660dc7205ca29a0dc0a87db4dc62ee47a41db36b9ddb3293b9ac4baae7df5c6e7201e17f717ab56e12cad476be49608ad2d50309e7d48d2d8de4fa58ac3cfeafeee48c0a9eec88498e3efc51f54d300d828dddccb9d0b06dd021a29cf5cb5b2506915beb8a11998b8b886e0f9b7a80e97d91a7d01270f9a7717,f153aff7498c363d04ff8beb191e394852b79f54681e8d03f04b31bc037102bfcd4e7d709a387a89c7dd124fc0192b586f7ad7755c36a8d5dfcb6dd855671298006ef379d2cbbd12cc5c05186717a3985594f19fb4ac62c673cec6d374114270ec32e8c0946c3034aeaccfc38b745d758791842995bedb09a4778bcd504a961cfde3208728b57d246abbc99dc632a2396aa5b3497d4f1f94fb2c90a5a1f51dfcffaaba610c747ce10e5ef2acc9ab03383c8b8dc73517e4d32fa7118bff599a83f937358f7407b4ea4771d5c504311dccebc1262b464415eca2e3662ca7dfccfe38157f15b36682221f65b6f65877726072b9a30c0028dbdfd14c7842d99657778c339a5248aeda1dfa8b9ed56b79f107cb3e690d56a3dcd5db03c47e46d29c433bea894d1386133a78e8eb83c2e6bc2e7593cc3ae4d2c0bda573bcb16e7c44732a370fde3af4dc452d029f44dbe0f539811ddee2cafa9daf752169fec82eec4f35093237f0ed1ca6ce62a1221afc870020b0ca219d03e5acfef2592df5916fea97154e62485a38efa4df203ee808b12692064c609f29ea0c6960569e102122ac74e99a992f37c1a090a9927deab998303e47487e2910760a6d604a73c78d66213a5d2c28c91528340b2d6371a391c3330fdfaa70c5d109a209152d21b63cf616c9c78621efbcf52064da08d90510ebfbd957e28053efd0b78f28dad025a72127 +6c4b0a0719573e57248661e98febe326571f9a1ca813d3638531ae28b4860f23c3a3a8ac1c250034a660e2d71e16d3acc4bf9ce215c6f15b1c0fc7e77d3d27157e66da9ceec9258f8f2bf9e02b4ac93793dd6e29e307ede3695a0df63cbdc0fc66fb770813eb149ca2a916911bee4902c47c7802e69e405fe3c04ceb5522792a5503fa829f707272226621f7c488a7698c0d69aa561be9f378,d44138d25419fdcebb743314d267d3ab2839cd302edb06de0efeb5b837f19d7ccbe8a1f22922437fc4eb591bb23ee25af00bc1bb3fc6f43d524d5b8447afa47d966440f620d45c3ce7b482fccd768e436aeee5c25e9cf4c3fd814949b61b40a54ca867825ba2a55e6c3e778ff5cded4346530bbb8d1685a3300e995291b06ae05aebae336c37abde854e57180a79bf5be46f6c879b11ffa6573717ac168ac16cbfbbf5c46f81a4ebe14f0a0faee8d09d8664d26c327721d25e551676a00492442e3f73e4b748943b188ed3e10a22c54c16bdc78ab1fa8a50d6d46eb057dc0fb048ea4fbee4e5a1a653131855a03db2fcc39f698d14d28fd9c361818267e222abca88eb0326f4672dc1305af072e0b75674596a616401df9a53d44d53fa529a7c28ce7d5a71c97880725d51a58a065136034dc3d706f13648a68ab4665af00d5d0fa0ff44d1d1a4ebc44b3a13d273848a3bb558bbcb599300728b7fcc6fe16c5a6948bb09fd1b8185bc6863c1d9f5fff7f0a82edff0ce04ecf004587ad52afded64e4e094b3bc15a3f7511620958fcfaa69e869e85daf7ddcff6cea52c1631ed6418c822380fefdbec1255911829e780f99daa9c6f4d729a91f28ef1d3dfc505971593663710f82bb95fcfd1bfd5c3cbf916afdbd7cb89fbfe586982d0bb7e78d031ebe310606557f83a87fb1070b6839499e4d360e2d36607450c720ab8a72f5 +51b7dbb7ce2ffeb427a91ccfe5218fd40f9e0b7e24756d4c47cd55606008bdc27d16400933906fd9f30effdd4880022d081155342af3fb6cd53672ab7fb5b3a3bcbe47be1fd3a2278cae8a5fd61c1433f7d350675dd21803746cadca574130f01200024c6340ab0cc2cf74f2234669f34e9009ef2eb94823d62b31407f4ba46f1a1eec41641e84d77727b59e746b8a671bef936f05be820759fa,d03ed7399e6fc424af6c4f08715b409ba54237cfbcc4b27a2d97811f1cfaf8fe8a1e72b72c9c0c04587d89d9d3b46487eda3ac473dc325e2477ffd14f37da4ae638a2b14e103e2ac9e2f94a8be49b28db4144e2ef8a673412b214ee502fb517c480123289de425543a51910bcb3b52e9b0a5f25baa700a3de0782d4bb409938e7bda9b9a31d1ade69571e4f1835e7a89c41f35606b9fd7dd513200c3cdaaa0b25b6b2baea99b79380d33a21678bf7fd80b2b714e894e61321e559645047f68597244ab611fba697a079634412b64e2ac53ec230859ec86300b4544239bbf88558cdd48bf183ff1026636a1a28b512704c60e805cab7e1f8534bcebb1d40eabb8b98877bca3a98375f2c305803637b75e77effdda79991f059f697910453d2e986c9e6450a6115ba82506376222fe56da466fa8740707116f50f27911ba028a633e30a4f83558ef664b63b6890b766e46875a6ab2feaf64c3587a3f3872d179e826d2e8c6079f159c8a54f36cb770025e7628e936b2bced01b339e13eedf21cf01b783731875bbf199227b9a87e5dd4efa361b86bee1198b54626d105ff05b293308a7da89398f50b736d04113f38e3eb803baf06f049d207e1b6e3c919139ba6a94ef97649151327b2649f7ae1ce88d42ccee07d826b34943cc5d240c20d084391ea0f3ac7dfa5772bfc3dd37443c14682acb0b127c66c284f341d5badcfc381 +83599d93f5561e821bd01a472386bc2ff4efbd4aed60d5821e84aae74d8071029810f5e286f8f17651cd27da07b1eb4382f754cd1c95268783ad09220f5502840370d494beb17124220f6afce91ec8a0f55231f9652433e5ce3489b727716cf4aeba7dcda20cd29aa9a859201253f948dd94395aba9e3852bd1d60dda7ae5dc045b283da006e1cbad83cc13292a315db5553305c628dd091146597,5c28103be52c28589ec6b8ea53eb4769aa91cfb8a8f5875a6201be4f03fc9a1caa8e582a11ffc6c9fd4cba3f5e3f21549514cbf8470568dfa2ece224181b865e224f8f07caa4a0891dca60eeed7ccfd23a62731892a1ef32d515165bcc4885997add88f59d0124b53e14677f8c4fff979e9998a76e7a3041d3fb0ee9fe528d08c80481b8e3eb77189aa29e64497269f88894dbf7141f21175132eccc4e56bfe70cd2aac208a6a0898a474470a5961324e16821a78afc25fdb7cf1684295c5036c95dd52478bd2fda24a733fc7e08bffca82387327e69bb63f8e769b423cdafa965734b666c489044c23617594b309afb2f262bebf447a87f41e3824972fffd9f4a0d06b4bdce742123c6fc7b85939dd8f837abf2990c6def398df2b44e40e3c25a6d9e4987b1bd636fc276cb0000095cf441ba3fa274f1f95ab321de9a5a9bcf219449eab4e91edfd058674a4e8cc5f8c0831969de0c17d0eec98df883619fa1df794f2d09372a7ef20bb06427125b6c0849eb80238855cdd3cac4c4968601d053d7e972785aff96d5483aba9d55e3695655ffe879d27ff6cfef0328764d87f786f6bc74cd40b48c50bd1428bce5aa96a477ea02b70d17333ff176f2e70b6eb7bdebdbd0750414e5f32bc521f381f1827214f4d5746a40558064d49e5484d54442f7414bf25dd469181d524462ab73b9d31a729dbfb06da0615fbfe49869d98d +2be9bf526c9d5a75d565dd11ef63b979d068659c7f026c08bea4af161d85a462d80e45040e91f4165c074c43ac661380311a8cbed59cc8e4c4518e80cd2c78ab1cabf66bff83eab3a80148550307310950d034a6286c93a1ece8929e6385c5e3bb6ea8a7c0fb6d6332e320e71cc4eb462a2a62e2bfe08f0ccad93e61bedb5dd0b786a728ab666f07e0576d189c92bf9fb20dca49ac2d3956d47385e2,0aa13616e9ee0c4c35fe2b921118c67145b8458e6179431e8145da829a2efd5b8831b067409487ff6c865b8cd69695fbb2b1c4ae1fcb014540b842f5fb3ea40dcf7c16ff295b2271215f5367fdea93c17b530c472b6200362abf8d81f3840738eea11961f7262c163f5bae5fed2ed42a936ce1a1917df2360ddf4decdae45e1522400f37d55687cd334b47fb8b55464ab7cff75e9dc0ce51d60b43bc2d468f1dd5bf489b690c7dcfcf6e75301c24ba534047739fe592e8637107ccce1b3d2e4bc037aab54b3f8dfe57b9580cab38a983ec5de9184af589d939fb7f6edc886790d1ca4c780f82437eefe261ee4737545eb7379ff09b644936f8ec9775e9f118a1958e7e4687c205424e4a31c08ba819f6827654eed2451f6a2242f81aab3a9aedfa71437e5ac288bbac9505b07e302bcdb109fdc9e2b753432ac6502a3faf9ec54bfda1ce399561410b62c4ff8fd922a1bfba071348ed9f1b242df772bba66a76c0c1cb209ccf7828051f0a85ba54d10b4db0d71e37a77abdd510ea1ff02ec72ba6beb54523de49167bf01594d0c49020cea7809bcc89a6becf9a6c655d9d1f06c2cb1d2d15128fbec2fc388dc39aede65029954735285463e2684226a10770358156c98300fa70fbe2c200dbc0d60f3194bce21bca23aa6554d56503c56e8d4a4b246348a8dae6fd1150cb6663c113b3f15fe8df8066c9bf3979cbb3dbca43a4 +ca76d3a12595a817682617006848675547d3e8f50c2210f9af906c0e7ce50b4460186fe70457a9e879e79fd4d1a688c70a347361c847ba0dd6aa52936eaf8e58a1be2f5c1c704e20146d366aeb3853bed9de9befe9569ac8aaea37a9fb7139a1a1a7d5c748605a8defb297869ebedd71d615a5da23496d11e11abbb126b206fa0a7797ee7de117986012d0362dcef775c2fe145ada6bda1ccb326bf644,e27b1c3ba27dc48f20b9605c4fffe0f610ff909b482d213c34b49f0fcb04a927f0b1c4d2c6ab6c9bbc6e7db696f7e41fa1875d08a65e21d0459170e4bc955e7e596aa01c8f52127e858687e53f17691ad1b1aef7bbe75d09613281cf96e86ef93850ab4277a54b45de3663a906b55bceb2528a55ca6e17094e5d0d63f3294d8bf4df2da524296cfceaec6f1063a7bfa92b300a1c4ba7e2cea76ec4c7fe9531e7d9205beb4e2b5fee32cc0881401c573a88ba9d29b5f5a5caf044b0a7931bd605073b19d50f82d822acdf1a6674cbba6c88362baf769f4220d731f3e8dbe707b12d44208e646a441fe742290e9ff783744b0f5627cee1b91de431dfdcd7aedccdbe04eead6dc6ef9e9c50131fe37b6707edf8a021b3d9bcb0f62ab331f43c80b49f3dd5ad47cd3956a2b45a510fec358bd211b2fbf06b6dceb82a3190bd0ab28c7cafcfba4432102ca3067201533d64d44dce8a632c204ccac68b248f0fdcd54beb300e32ca76f03413b4401ba4721863577860c892252db31774ebed6bf8418ef0a12508bbb15b41dc0f2ee5a890915adb2d0f6e28ed207ee8b6536015b763a60a1a96c9945aeb4616613a0eba3b87c02fb1da1f9aa169ef4a5ccd967e811bf83d2728b88bb5cf2a5fec6020137c668ee4f21eae6d2759f054ab1559f9241ee2b65cf36a907720a7dcce655fafb5e534ead32a4745a947ba6c4b20240dd1fc40 +f76b85dc67421025d64e93096d1d712b7baf7fb001716f02d33b2160c2c882c310ef13a576b1c2d30ef8f78ef8d2f465007109aad93f74cb9e7d7bef7c9590e8af3b267c89c15db238138c45833c98cc4a471a7802723ef4c744a853cf80a0c2568dd4ed58a2c9644806f42104cee53628e5bdf7b63b0b338e931e31b87c24b146c6d040605567ceef5960df9e022cb469d4c787f4cba3c544a1ac91f95f,b0fc5eac13ad8a3cc49b96e1d9fa96ce4658efacc7394de19aa7a28ccbde37cf1201dea78b4c2f127d397ab5edb08a505f72c70b61678ae081e139f761dbd5741df0cdd04d5a9015c0a65975e7db09d9999fb77324366ef22bb63f2776f9a783a263ce31583d0860f3b91a6620312aca03eac2c38ba62c9c9fa0b060a4f8cc0fcdcae1d414323f2d649a8e9f808fb02dbf926da2fd36c64eccc04909e2308d2c0367a069dd64e2dfdfed7a5a941d2b84c5b6a69956d43843c9b7f14a0636036444870b1b9329b38285a1054a1019b6e01db1c66a39ef9b20ec4e51580ef546e885b99c0e3ea1cd724f8bcf56d1d00d1aa3b8d9b487964e773330b3f84577da7ce9385d37a8f503456897f8be8dfa9a60d129e538ae0ca2f6bbf851f1e56cd3f14864ee0b119a1bac4181c667ebb6c464ab76a6b72681758c70422207e6f62ee438ed6fa467408ca04e48c53350fb11282e89d41a35efb31c80b18bbf4e28cee577798b9726a270245f35faa53da25dcb9e445a842d843da21f197f36d6b43e83c3617b2ac92aa937697d5589564d0fb4c225857b6cef6ead6f193aad457a5f5f7efd7fd88b1ac34b00f4788c4a549474a852403efcfb151d941c949be41151a7130d54730f615e638dae243eaab7648a028ccd05a542054e66b3d5507d78117734180d7656d77677a2c61040dc7ae56819489c0d106b798b9c549046251163a4 +25b8c9c032ea6bcd733ffc8718fbb2a503a4ea8f71dea1176189f694304f0ff68e862a8197b839957549ef243a5279fc2646bd4c009b6d1edebf24738197abb4c992f6b1dc9ba891f570879accd5a6b18691a93c7d0a8d38f95b639c1daeb48c4c2f15ccf5b9d508f8333c32de78781b41850f261b855c4bebcc125a380c54d501c5d3bd07e6b52102116088e53d76583b0161e2a58d0778f091206aabd5a1,7b6bfd2981cc29669a120d28930cc39ba577d26be4a822499fd5d36c7be1528dba41f2a60c0f1832aae0edcc384b5552013be17e1c81c326cce1fff5e32b24985a2e2121b072902bd2fc6ce05476acbf2d2719128ab1c35f93ef82290a56542a044b295a26c85e4baf8b8544816f0bac4753d405c9ce02afee0b312b5ec8ad12a07bd3d177f4bc7afef6e092d23c7d445f8b21db59c9a6e819af9afde919ab550e1a6640967d296d3df3d987b6e62cf781a65ba41177adb60b7ca83f57c5ffea1d1d96bf9eb2914ccd73162a8b61b85211d010afb8afede8ea96473b080e98eb7a2f000485bfe6e1e7e6e2ddc1901e77c60db3a65c2f5e57ae72b0ca4bab6e2ec40f62f33e865f04598f66fe14039fe03c5df379319413440a31782c2fe4092b0b701e4b792ee449fa452c023fa79eac7a11a458b497213e7facad5d5ed475e71fabb4d9f6a2c2613a8d4df3f574b5c2a884645b6d5fefcb355ff18db8abd8a85f2bc531efbeb96f24e204733e9ee3f0ed2acdaf99713adf32dca518d5d86659f25efb8ec5e5d82e64460094b88db621962f76c9f12e739a5061adb812043b9bd01fe9b4e549bee9e304940dc7f05d45acedd417b9b37f214411f75b427e2e9ce14b6dca4fab0bc893001cb7a0529c1421e5b721a9bf9031d164c6c6192fb38c229c852474cbadd6924cc8a401662db173d7fc9fc0028c905574802ea77820cd +21cfdc2a7ccb7f331b3d2eefff37e48ad9fa9c788c3f3c200e0173d99963e1cbca93623b264e920394ae48bb4c3a5bb96ffbc8f0e53f30e22956adabc2765f57fb761e147ecbf8567533db6e50c8a1f894310a94edf806dd8ca6a0e141c0fa7c9fae6c6ae65f18c93a8529e6e5b553bf55f25be2e80a9882bd37f145fecbeb3d447a3c4e46c21524cc55cdd62f521ab92a8ba72b897996c49bb273198b7b1c9e,6d3173f315362f961f2728c60effd5ec721d68eb7d2e11c1973a84a19060eb5e64dd8fac20c76a89d811ce260d7020ea9f7ecc78eb3dc91171cbbd0818b31c4d717274dc164ec5af48bd1916b0440b4bea6e4d482329c17aa557dcb4dbad69ad74be1560efb043b78301b3b1d42e9c2b096cf5d8138811dee6ff3753055c77fb2c490bf79e2f7c48d492e59b5d74798a1095d9bd03ef74cd171e615dd3845499a546bf69ad263c1b845b05b5b3cb32351ce01eb10b918d192d1605802a6607ec5de09824790b5750685a8c679b54789bec0d6fabf80e5438f9bed0da8dc5773fb21c4cf231e1163b30d676a68ba04f7c6bfe5aaa2807a52a84e1d12855ebfb2bdf44c34ad846293d71e3b05d17c1d4102d5c7775f30d13f8290c89dff886b1d126834516fd3acc848b988ed4c4f046b39ca0bf2f17a0876b5ea782160debf5a2709bd38fc0f6bf3d1e286b7a34a59afdf4b7559aeb2330d94576bc10bf5d1247eeb12b45516c2287d6738080569fe9179b83a27f007073428c7316ac974dbd98e137e771fc7f4ed1b779c3c6774a2a36a5cabaf10ccc742d9190a3278a33d6af490278796ea76d8706b99561390e06e90396c4caf101af1d86748171d07b5794fa831acc94a2452769c83203b2f845af987c81bbd02aa91a1ca481abb0b25991c0e61836ade076f25dd1852a032a223b3d8d12cd544ed0a2f97d735a0e1aa9ac +4e452ba42127dcc956ef4f8f35dd68cb225fb73b5bc7e1ec5a898bba2931563e74faff3b67314f241ec49f4a7061e3bd0213ae826bab380f1f14faab8b0efddd5fd1bb49373853a08f30553d5a55ccbbb8153de4704f29ca2bdeef0419468e05dd51557ccc80c0a96190bbcc4d77ecff21c66bdf486459d427f986410f883a80a5bcc32c20f0478bb9a97a126fc5f95451e40f292a4614930d054c851acd019ccf,07cd8e0f1916d265a748a8eacbc81b045d004fa104faa1e3752b9af131367ff0ca7f63db46480b67c405ec16eb2922e60667018b9abd91fce022ae9b0faa249444b12223cb43750a42b1f9166f54836c7866bee31acc681b521d61eea57c2e84a8f8cb9826e20ad2b14377b313225b50a1b49aff085f89aae22d3beaed142c585316615281d88c5482e9f7e23770da82f27d2511e30dd1958c903ef7af6b2077252c7701d474f8da4149ab45d80b6ce9ec1cf08877b6ab13ced7fde405a1ded59f856068d3619aea92789e8e31be67dbc2f402fddec3e3e505fbaa396bcb6dfc5861e497ef576fe4015ef743bc4d5936f8a5247b7667a321614539bd4dfbfd79f3bc90e6cce084e8aa6c9adc17c2e1704e4e2eb879db4d6a7a6621c972ee54ce582f3403c76bf3fe60adf14d21d6438146ec92673b4d277825f1ba515c86345cc280fd66a006a387488bcd537c5b0325b21bb69e629763259884e9c3202a16acb5234caf9882abc9b0935466f0c7104a04981f75488eedcaca9ef55f03e3323fd4086e19043db1f7ed7f9afafc968b7313fe6705673cc31387935f92c26af140d2aabc7bb76f976ecb2a6f6dd1d0e65dd997f8648b7bb9f1c9acebfe1988e9514f8770da4df0b5ef397e58470c656898667a2e0218c70ceabcce94025c3914c91bc1bc76e82b1c17a7b938e92a57e953cb80ab15726776382c74dbdb5faeea56 +fa85671df7dadf99a6ffee97a3ab9991671f5629195049880497487867a6c446b60087fac9a0f2fcc8e3b24e97e42345b93b5f7d3691829d3f8ccd4bb36411b85fc2328eb0c51cb3151f70860ad3246ce0623a8dc8b3c49f958f8690f8e3860e71eb2b1479a5cea0b3f8befd87acaf5362435eaeccb52f38617bc6c5c2c6e269ead1fbd69e941d4ad2012da2c5b21bcfbf98e4a77ab2af1f3fda3233f046d38f1dc8,16caa902c04424d5fba44b3adda34326eeff62d6354e3ef5200dc07a0325b2004cfbc3c972a453fa32bbd68af381f78fd768158194adaf9b10a2a95d9ea9e8d0266c5d3271bb7b59226c8eaa9f15f9ed324ac91fd88b9a23f50eaf0f17d8582e8476e8806f31b58acc36ebab6b856ce1738704753a7ed31f822be83e4e08f2a3f3dd52d4bdf8090dad90a015e9184a3202974897d525f23a4eafd1a565b76411d8b78df548ad2bee3830faaa3e8add2dbde479236ad2df12841622877eb4ee895a0af9799dd727ed96acead478c8f4b9aeddfe7fa3879529c60026ba0a7966799b372b922b4cff3f6213c5d73c0d778cc4b9ce67013d905870b12cb3e2326223f57fdda8da32f3700e855fdf3da47bca440b219a925258d6b38625ad1408ab303855e3734067ed188fe122c5c279710e8edf954ce4f43f692da7eddd3b84164c567b2852efa262afb09f49e50b8db278ed215efe1f0f43eb8bed5c3f1ecab591e191cd36b6ea75260285f667c204e159e72072e165457a170f32a7fe29664051396ba1bc202663f1ca8f17a99598df58a512b6685798e5e93faf9b49c9af0ca8fe4b6544492027cb5599448643e1efc642c7c71821bc06d5c600a80cf43fa64342cface0c57071627903def82a0ab3a3089c06f89f99a5b3e11524ed2fad86b73f3f48bc5b912cf31286c498305b77cc8f7d54f343993888ced370dc93e0cac9 +e90847ae6797fbc0b6b36d6e588c0a743d725788ca50b6d792352ea8294f5ba654a15366b8e1b288d84f5178240827975a763bc45c7b0430e8a559df4488505e009c63da994f1403f407958203cebb6e37d89c94a5eacf6039a327f6c4dbbc7a2a307d976aa39e41af6537243fc218dfa6ab4dd817b6a397df5ca69107a9198799ed248641b63b42cb4c29bfdd7975ac96edfc274ac562d0474c60347a078ce4c25e88,1e8fd76a766a100a4434ad568da7e753c08e76e515dc7a4d42a9cbe5369e3cfaab7a09799b9cb66940de779266051581e6b039e76f446327188a6b34565d738f1a926da3be16cf6ebd6ff7f788fdbabc0961158321e34c26207ece1a122e73d5f9675a2fcb2e4871fc04875fbdb9b6411bebbfdbe71dd643ba6bb2e2ccf46d1c1df9dc6c0777e7a19823c1d55a648b847e398f52d02d5632a69323e588acb113289260752be85a42746e62087b5a32df812817d0a2409c36f6c80912d4ab80d47c7de7ffe26e10b1c850b7339274dfca594d418c3c4948bb3528f4ea463cfb54f7944b32c050c1c3651168bddcc873ed8057372743a6cc8365763b523fb3d9752a4fdb167a768e96c7d4f277bea031b941bb7002db130b76123a0edc4544da03d9255bdcd896789123d9999aa6bdecca01e4fbfe33860c74ed2fdb54412db927df2d896d289a87591377923edbcf2d2ae204ae6ea85b1a9ad2c2a2729dba3d6e6fab6269288416d569532793e49f61e7002871b8f4a68de84ddc42d081d1c4cbe332ac58c3d81896a438d1861e594db79390ac2bc9398dc21b27e6f7677a94f91ebed0103b2e8ca4068d6489bd0ae5d6b77053616335ecc7d7218b1b2df70a279123268a06ea959965ca1aa26e1dc273142cfcad570330aadaa62e04c383a938ce349c997bdc41e9bc38c29767b964fe2d8f6df96ef1a5bd0a38f06734327315 +f6d5c2b6c93954fc627602c00c4ca9a7d3ed12b27173f0b2c9b0e4a5939398a665e67e69d0b12fb7e4ceb253e8083d1ceb724ac07f009f094e42f2d6f2129489e846eaff0700a8d4453ef453a3eddc18f408c77a83275617fabc4ea3a2833aa73406c0e966276079d38e8e38539a70e194cc5513aaa457c699383fd1900b1e72bdfb835d1fd321b37ba80549b078a49ea08152869a918ca57f5b54ed71e4fd3ac5c06729,58407675270c110f4e998d9eb9f9bcab175e4d17f2c3a88896f31cc97a389728b3a93729aca3aaa426e2caf11ac9d121b3239915c857fd377fa2871f76e533a954e6790847ff03531111a89b35192bd624a5fe0823992f9a7c25721e10897fe397c2de7828c258ef6083544aab1c7fa5afcb7b27fc37e64ddfe827883fa0389b8e785676c92396c3e1c1e161e2776538cfe4b6e20653f5706f034929ea002926c0bfb6d9c31857bbbef51ca094faa6a7c9c6b34dd92182e21aa47923c908fa00617f9e910eebff2be3696b6bbd489d72510840f075e24c81f63a52772b8b5f3296c7f7095b4ed732f5dccef632a37f0419378edf651df2870119a4f1eb0c961ae792d7db1fec88ba12be14520648ac3c78d7304305b75d3b1aa631591c1b8128dbae0ebea7ae1dd44ed1950a87bba1bb72fd0bcf158f7cfa4881def36b30a36425c429e3d4bae81ec821b58b6ee1c5fb9c9d93993cc1c341921797797d39cc523d32987eb0d75c0e502f52ef1ffb3dc10a19766c2117122010aa729326ac5273bed622cd04b924c60cd405a14ed06adfcaf35b1ad5ea469cdea963d7e97b2058d2588bd866a17d701761439c491a0af937f7b8b5e8fc781737986505cdcc593dc0627c0ffabc0a1737afae194e24888377af99ad33aa8a0455cba1411a40d1d66abd03f2da49c34c74c65c830bc68c36f87f9e578072ae67a60c23a6ab0f02e0 +cf8562b1bed89892d67ddaaf3deeb28246456e972326dbcdb5cf3fb289aca01e68da5d59896e3a6165358b071b304d6ab3d018944be5049d5e0e2bb819acf67a6006111089e6767132d72dd85beddcbb2d64496db0cc92955ab4c6234f1eea24f2d51483f2e209e4589bf9519fac51b4d061e801125e605f8093bb6997bc163d551596fe4ab7cfae8fb9a90f6980480ce0c229fd1675409bd788354daf316240cfe0af93eb,d102bf50a47c12ea4c8d5169bfd14cc92efbdc10b042631b1e0cfedb32de59947eb35402fbeab157062bc6e89e0cbae88bc68190b51ff1f45ee278a486e8535cd9d272a4439ec3f7e65f1c11209b77028b78eae7a19cac0be054fe0811ed8a1f230954fd78130d27d909555ec58dad0a7494bac5323fc56e616795de5d16c1e6427a02e7c33fa8c74459a24ac3a377a7d5d9036afe7f23830fa3ed8f4762e86b3abe0f3159377cebb1e6844835374534f86c04b5215345947ed2062872f3c8fcc82826b0ab63a9a5ef699687c44602f61bf1e9af303f977bfc3232235d95b5b6aeb5241010f01dca2807fbd43d84675c5839a6e2d73b60c037a9e2d98f3af199cb28e4ea6b3beb9de80a702c8b70c039b32b7d63c892a6db1b6fe5a9e2638e8344e4ec2e77394fa03735c7201a656ff0a95e19a6f8d5a8c41605a2731235ba721a4a74f7bce9cc2b1fed1b92f42c2eb665a41ef09b83e75d1b3a438defb704bb360404ba7d67bc00ddb8541949633a106a2ba75930f30f6079bdb01568e46435ca6bf80ceaf3f0d878a560c969263202a8ea9500b71369c958737d85bc3bfb4c3452a47cc9aba4d69570ae9a2449c1cb84ca47f226471423f0ab54516458c23e31df0f80f9a3eb37b0e74dabd4b27bd1ddb50650c92fd01adade439445a054d463f3b068e0f890c33d9f9bb4c31a15945080717ccc0cdb71199b7cf607afdf5e +2ace31abb0a2e3267944d2f75e1559985db7354c6e605f18dc8470423fca30b7331d9b33c4a4326783d1caae1b4f07060eff978e4746bf0c7e30cd61040bd5ec2746b29863eb7f103ebda614c4291a805b6a4c8214230564a0557bc7102e0bd3ed23719252f7435d64d210ee2aafc585be903fa41e1968c50fd5d5367926df7a05e3a42cf07e656ff92de73b036cf8b19898c0cb34557c0c12c2d8b84e91181af467bc75a9d1,29f1559d1ac3e5f5d6f36852e6fa06ae720b939f3ee14ff2b354c9b941a4f608313fd16527486e4dc5c032d0278297797cb591b80f3190ec0f1fa08f87a529eb22a2247e71f05fb4b1ed4127be219e73b8572f9ae21356d8c245fb3ad4de33a743536dd852f2772595d2cad5e85928b6199830ea78d6d0226e7d2cfc35af41ebb590215e416201a58d990a848125247a1a8319630db6fd7f5ff4cf2499f94f1c0041afc9764c2bdf2b0faca97b3a9f8f508162077fb21549afd5095ac0f2d744065b90b9cca781640213b3920b284c6ae6e9877366ac4695b19bc7de88f3e6113fe6491e7830b4cdf74d3e170d7390d9b0403923c8b6471eb5d639e2704d3c360f4e38f6774c6a440d68c2898d11f17601f33ea893c5e4b42d2a7be5d07492d20d1550ba335e3d105b4898a2707e5c97b61011707375d5af0fef1477fea62d383c227e2db4cd59b85e45a81a4562e7541dc2814f20c969028ca8a0e9c14386a648346898dbde372ed9c09a40a2af6e0ac541be0abbab84b2dd6a2fdac9eabbb8c87f58dd95bba7db96403b9bd2274367439775119da7ebb8bc46fba2a50c75454e386c3749d03691f6705e70ad716095cb30326b1e628b0e29d7af932f554a6fc0d0769c4d0a56779a1878de7c3671b68a4964c5a9fcd86daa7bc5b95c6044ac825baeb4f073afa2502cf3388290f5658094dff31f9c68efa7ac1d74881ce092 +0d8d09aed19f1013969ce5e7eb92f83a209ae76be31c754844ea9116ceb39a22ebb6003017bbcf26555fa6624185187db8f0cb3564b8b1c06bf685d47f3286eda20b83358f599d2044bbf0583fab8d78f854fe0a596183230c5ef8e54426750eaf2cc4e29d3bdd037e734d863c2bd9789b4c243096138f7672c232314effdfc6513427e2da76916b5248933be312eb5dde4cf70804fb258ac5fb82d58d08177ac6f4756017fff5,c73d8faab5d0b4d660bd5082e44c3cac97e61648be0a04b116724e6f6b657684674b4b0e90d0ae96c0853ebd837bd8249adbd3b60a1ad1fcf8a6ab8e2f5aa7ff197a3d7dbedefb433b613536aec4d655b7bcd778526be667847acd2e0564d96ce5140c91357fade000efcb40457e1b6ced41fa102e36e799792db03e9a40c799bca91262948e17605065fbf638fb40a157b45cf7911a753d0d205df84716a57112beab44f6201ff75aade0bafba504745cfe23e4e60e67e3993622aed73a1dd6a465bd453dd3c5ba7d2cdf3f1d39376a67c23e555f5acf25bce1e55f307252b9aac2c0a39c885c7e44f204cb821c0d37a22de3a71f3a1909b11b7181c42be9b78aa0d0a15444f330007554bcfcc0d8fd87d6431fb93c7cc38767a55d30d3545560bd380db8c4c0eda9399f68f854644266c1b7958b270e75b79134aa01e7dcf1e6fdb6d9ae5d02cce8ce8e480475e9617cc42a91c08d9af6e5101b8ac5834adb2c66987f42a580bb503a4b34a9f15adcd0e23d0d4029479764831d06b5caf3f14b91449f15a291f4ac250b270b6cb3c304725c99e32645e1fc02a0cddd9e717911f2342d9482f8e0979985a0170d725dab4ea66d44f626ba475925fa39fc9dee929c06d009416c0adc1d987cd625a20acba4cc87f72f610867c3a7a928a3a0379676e8fe257107ab2f5c030bd2480e3d1863562e1fd0790280333ed9d5dd5a5c +c3236b73deb7662bf3f3daa58f137b358ba610560ef7455785a9befdb035a066e90704f929bd9689cef0ce3bda5acf4480bceb8d09d10b098ad8500d9b6071dfc3a14af6c77511d81e3aa8844986c3bea6f469f9e02194c92868cd5f51646256798ff0424954c1434bdfed9facb390b07d342e992936e0f88bfd0e884a0ddb679d0547ccdec6384285a45429d115ac7d235a717242021d1dc35641f5f0a48e8445dba58e6cb2c8ea,4a05f2ef1aad5ff4306429ec0f19044077fb64bfe1dcc50f74c3f045e9a9c3de4a3b5963aef771b049111b7b4640e20b1ba84ed7afee325571acf347e311f33c1d421f21d663065c4daddbd1785c5dac0d554cedb1a45a32e28145e98f49dee285b33de14c336d10950ecc30966b79e8613ffebb702fcc00a1c4250dd385abb537a284e9108d16b6f08f4e103f2c5e9e5c879cb5095534151e3c9a316d06dce53b7f01b424d375b564fe6839d1d1f00a2e62604060a9748bcdc8143737959fabbcae1851213e6dc28befda48149de6aaf4a60d4615bed67d11796f6173c3dcf139037b31eec9a8404df07597bc266d3c7d9eb9a7cabf749fb44e40d746d0e9dfb5c8bbeb25e3f1612d03d3eb0c154de4b2708c4f8a89762e171f744518aec134a02eeaf49db2e2c6c9914711288d6b0ce877861d9b10acfcc19643738287da005282f3fc82f9f50aa681f2f55fe1809c9e23a3a59e51c2e894f718372f9fa1564b47ab3f43f0747a17839e933369b6778053e1764f52c5f319e33c8b25678f72332e33cca97c68f19e058e70c31410df4de7e08169d6096b7b4ea48271eb684fee9fc8b561c3fee2dce83d092b142bec1478d26b48c3c6e597a7b2e44027e1eca23178d3afcc67bb530a529c7e1336e1adae74ef0be9cd61e91c6aea57f7ccb23b64b2f84861ce159209fef7a897a16a871aa99e63a5126df2b03387e42c3d18 +b39feb8283eadc63e8184b51df5ae3fd41aac8a963bb0be1cd08aa5867d8d910c669221e73243360646f6553d1ca05a84e8dc0de05b6419ec349ca994480193d01c92525f3fb3dcefb08afc6d26947bdbbfd85193f53b50609c6140905c53a6686b58e53a319a57b962331ede98149af3de3118a819da4d76706a0424b4e1d2910b0ed26af61d150ebcb46595d4266a0bd7f651ba47d0c7f179ca28545007d92e8419d48fdfbd744ce,d99e2166e72399f4b775c8c446cb809f149095df22378ddab711b867e3cad17830efc3b9f7d90fba1327e103d3191595ad415ef71604c7a95dfc417f14f5b5ac1b6905396ed94d56ed993e240586e95d98f3d34630c32fc1719e7754bf4f12a321691efdcd42dca695bda56f975ebb08d59f76911ecec5b503e7030d1e626ec89cfde51042f1b75063afb50ff7b43563a09e209b7842507b67e85e87a99fffa72da7229ce5c9f5303eda061a209f46c76be4114bbf5ebc5aede7e22f5921da87265c19f87f1e37ccc218acb903bfb4d617cb95df94255f980924a045b959aae9c58dbfddafb47c9ad78324d27495eadfe665e8b7154ee52ad0219421014fe945aa8c2f3b6223f99e170d2d169c13c0d1cd481b6901a1770dfcb39eccbb40fc6790e69c61c9ec6e99af6e557eea2aad2e73d8a82ffdd2fd32c63dbe4858d97a5955c6b3420fa12af5cdd10dd8c9d6d3c230272187e855b9f405853e6b8e199f071f0ec781be8dfc29e93288f22f600302475ce1651d3cb671a0635baa3daefb73487a813a0448ea5f2efc915c847795bb0f4f5879df7b5c95a2dd3a5ce79df85bcfc1d99ae98748052a27b775b690ff9b0240e0bc0b79935af998bbcdfd37a2829482a9f51ffb253152eccd35588d2cd96bb19441a14d7cb3b7eb2f47cfff6bd8ff73bdf9d9c2a613ebfc5d69a3d7912c4cf2b41db244267af889d47a037eb961 +a983d54f503803e8c7999f4edbbe82e9084f422143a932ddddc47a17b0b7564a7f37a99d0786e99476428d29e29d3c197a72bfab1342c12a0fc4787fd7017d7a6174049ea43b5779169ef7472bdbbd941dcb82fc73aac45a8a94c9f2bd3477f61fd3b796f02a1b8264a214c6fea74b7051b226c722099ec7883a462b83b6afdd4009248b8a237f605fe5a08fe7d8b45321421ebba67bd70a0b00ddbf94baab7f359d5d1eea105f28dcfb,cb7a1f8f3b4a92508eeda0287ef3407c5f1a51f2600d3f13c214a36f54f5fa63878dbf6e76e570b72ed63159e01bb948d0ed7602e9d649afea2bdd4c97c7b22ac32485816d9f0bd8fe1443c7709884334e4aeb5104fad05b6c62fbba4f5c5bd2cc9cf576991da24ae01827f3ea70509e45e1bb0742f3f21d673a34e9ae992abff4a33effe61c2c7acdd0b653757c987dc1f575b7181e79702c82a389b0dde618dde5ee97a1a515365d04f3413bff31c3f9f222bfba2061993c7562aa7761175fd51d48beafe94e16ac34179cfe68791ffad63358885c289c0d1d5c99dc42b7dee58d9ed595cf5158d4d5055cb249025f3fa9690a18c9459d7e8111b88aa37d26b384a7bd02e923c2aceddbe31a6f3237ccaa778d5f7c71ca96e72e11920377c785aee9da9d8f11a4d4caac6cb66ae4f251422104e5330bf06c004791ada67d687a0462070b51c0860f1af7af4968feaeb157a4a4448b69ae1166578804d384720a2baa55f06ab17fe0b4a5e4ef058a14d17f99bca359cd1e95de00b5f309052ff4231ace9e1bcb6684355edf7924bce95264c3ffc641588fecc3775af5e5361b5ee995f85f9a612a0055b22f2d440dfd80e91329a2fa02e20476cf84120634f9c320e6803992817947efd9bcf620f4b038cdfda1cd559801ce76ffcf4af63a4af6284293789b548314b2b88c2ddd31a6c92e4e62b705e196cfb2d978d6f32f3f +e4d1c1897a0a866ce564635b74222f9696bf2c7f640dd78d7e2aca66e1b61c642bb03ea7536aae597811e9bf4a7b453ede31f97b46a5f0ef51a071a2b3918df16b152519ae3776f9f1edab4c2a377c3292e96408359d3613844d5eb393000283d5ad3401a318b12fd1474b8612f2bb50fb6a8b9e023a54d7dde28c43d6d8854c8d9d1155935c199811dbfc87e9e0072e90eb88681cc7529714f8fb8a2c9d88567adfb974ee205a9bf7b848,908fc63fee9e11d44e7bceacbc161269a96993d101265f825b86c107c61cfd11eba3cfdb0983bc9ba3a81ddbd8517d2e313997acbe48a47aef48b3bc1a56eec2fac280c96d9adb557b14334c6c555f374aaf9f9560815eb7278dbc81a78e3dc4144b879119c310a2283862574d055d2b0d8d53219c479e8c2f6dac3186c1ea36a6517d26e14f2230f00a1b30b44bf987b3a3f47240498734e6858444a82ed1098442688034d38c578e995424e1fc2386fb10e682eba287f3757b8a4cef19544cda032c3592e13e07241ae38f0bfb77b030273b28d09637b4ad359c7798cf6a76980a3ea331597dab4e18add97b8404d4ae4e5ec874d0f31a60636b2bde4fcfcab9569205e7261fc728a701f19e3791b538bb1ae8e1435a85f7e8f7b95aa45d275af770fd9ff856f6666c8598626cb54404fba35b523f55ec971f70e10e09fab0a88e39ca1e7180b482985e82eacd81cbd2c8675f8bd41691cfba39228d4fe2561c2e8ba1da3124ae3204517f09cb4abd54698f1010e1836e141c706b9ff0916bacf70010a0f75110e79e95a48fcf4724bc0674c9afcf12de59d31c64e532572da4586bc73a6bebed22752a05bd1add51464180de96cdb44d11611fa661d0eac1080dbd25df51a2c7519489e05e1be5b05c60070eb8075a9f0b3fdf6c14d6c07076578ed3a16d8e048350ce9b2956ed00ab61b024aea9e07c87665b7f33e2f5ba +b10c59723e3dcadd6d75df87d0a1580e73133a9b7d00cb95ec19f5547027323be75158b11f80b6e142c6a78531886d9047b08e551e75e6261e79785366d7024bd7cd9cf322d9be7d57fb661069f2481c7bb759cd71b4b36ca2bc2df6d3a328faebdb995a9794a8d72155ed551a1f87c80bf6059b43fc764900b18a1c2441f7487743cf84e565f61f8dd2ece6b6ccc9444049197aaaf53e926fbee3bfca8be588ec77f29d211be89de18b15f6,080c392ee04a0d4efe020fa6c20236e7c1290088bf6ffc2cfcf72d1b16a21ed000fc7a064491899bda1ad4856449d89ac7bc54e3896534837ec4bf950a18a3ecd5ff286d1d0a02e90531298f2430484a667de0121e0d0b392679ad9168bfb4f0d020e7ec1aec006bd0e8a551bb7ef0b751d0075f615c02775c983f45212e4f394e7680d9f81254431bfb9e772ef2ca54600d2f1f4db12d6db49bb9adf03ba6c912e0a8bfab20c0f4d3da675a908277522c8964ace05f138d192b7a2efd8fe663fb4b2486339555aa1c35da18d8899149339f1ac47555080627c3aef75da932bb063fd3dacb6e0019c7ddc5627776250033e6f47eb5930907fcc1f1b627b520aa18b22b12103f3e361801c6eb8b72e18ca9c43efd1e8a04948a9a7ae1b92e177ac6d3cffa217e13cce790efc636153fe24821a7fb500e61f3098711f60fefd6ea90f6f63d6822331d8ceace7c192e3482192b0a408e5c5a36a7c7a5490756fe4022c7d16eb28232a70ec1bd675defe9f87a52cb633dc5bd99ca49d2bee54870fb0919217810ac08312aa2dd16556089fc8706d0293ebfebbdf11204793901190bfc7aff9c87c9b4fe9116dd1e1789e08776efeb71f619827a89287e183dd77c42d791e7cb4ed2e051f2cec42d2ad83b50ef3c0fb6adfcbaed484886a4dcff41844abbfa46016a0fbfdf2d891b982356b315dc17d9fb62517e3163a93aaf05a12a +db11f609baba7b0ca634926b1dd539c8cbada24967d7add4d9876f77c2d80c0f4dcefbd7121548373582705cca2495bd2a43716fe64ed26d059cfb566b3364bd49ee0717bdd9810dd14d8fad80dbbdc4cafb37cc60fb0fe2a80fb4541b8ca9d59dce457738a9d3d8f641af8c3fd6da162dc16fc01aac527a4a0255b4d231c0be50f44f0db0b713af03d968fe7f0f61ed0824c55c4b5265548febd6aad5c5eedf63efe793489c39b8fd29d104ce,85f82caf1a3d6db8e7c6cd49c697dc314aeaa79309fecaac21ff46639ee5cdcb719a6379d871138041f2908d4dd605ac31fde9f89a0136018682ff1cc0e36a3019a260fda0fe430b082445b7f10f56a50e69a8260954f72b356b710a35a5a2a22fafaa5b3e4e3f0919a1fd44c24d33efe5790f9fa707df0e06cb4f195f1af7b2578eec38b8565d34de9665987f3710d8388176aab6f3d7ccab61713b175d5343958419f7c2d65775b7becadc1ab8dfe486efb98d336aa17ec4083dee1253a7e2b32437d75fcbd338f77bb1548c704090c3417db225534f85c92ae1e9b16f66a624f5309297f2fa3df12fac8af36a1f2a11093d4544e0a67c826d7cda89730031d4a35c64bff9cb9512c09fe45f0d628c075737819252b38724bb5a341d3045b4fa4b8ba742b947eb66a9a9121a48b8cfb83b41c90a7a672a4b9bcf2d1a32266c8f13ec46df4d80384c117a56180398d2268c8009cf586abbb7452911fd73c9c3449004a11aed41b557a33d7825c42575c75c0641393346c753b1415d4d4ac224c831f185c2b635c4b6b1c388358c232dc629a090fc0d472a4cceed43fd9657eb33850171f9d6d2dea433874b47f77dca16cdcd782ec1a335d2da3c235914315a243eac2ab81e06d97dbaa25ec029a62f58a1dc78d586c226046886c23a3d9681d68503893f8a9ed9a5b53a22a1345db167be59a6ab8295b41fc464329a6cb739 +bebd4f1a84fc8b15e4452a54bd02d69e304b7f32616aadd90537937106ae4e28de9d8aab02d19bc3e2fde1d651559e296453e4dba94370a14dbbb2d1d4e2022302ee90e208321efcd8528ad89e46dc839ea9df618ea8394a6bff308e7726bae0c19bcd4be52da6258e2ef4e96aa21244429f49ef5cb486d7ff35cac1bacb7e95711944bccb2ab34700d42d1eb38b5d536b947348a458ede3dc6bd6ec547b1b0cae5b257be36a7124e1060c170ffa,e07caeb114b9180ed922574badb071b5962ecab18474d1a82216b152dd0dae5cce14001fbe59e25f55604cc3c26e5d88a25393303ff47c1f14c87ea4d16b0a435a43a3ddd22aabc7adb4680c8ffa05baf28f45f95abf93f8453e267b5e584c7aab8e2cf2723ecf211b958dd8277b89d3ff2470cde45077de7535840b0bfef8d2af5fca3cd91fa6ea83c5f7b58c75da302a67154474b563ae9b59b1a3be93ba2bc2a5484ba24cc409896109cd57ab6357376fc0b65a46506d34dcca170da71cc52dff4fa34bc4b979a130ef5663ccc28fbd3e36b6cd103212a96b8710b49ebdacf4a8c41a5860175b694f75f077718c93170a98ee9757237ee90e8692e4ad6c1af6979d567c104fb3f30ebb5bc52b99a934d527fd44704de65431d8063df25e4b31a89629e1f7b7aed0e49c2ab6d3055675c7c63aa4e7686c880f3af3f6caf7251bd8b9ebc0a3c46c72b05ac4db44e85068811ef050f042be1e7ec841dc8f7eb2a7d9d2c10eb3603f952e307289c1634c7d9e648c36b75f31ea91c7125debc5bd3f70f7cca9330484abb5a73523013dc507e1fc5689848d6985f73866ed146506df21bc98d35bc24256c4f911c3d4ce437798431f68e7ea9f608e7bd98d7df892581b2756106a5c7590f6c33116b7c269d4a3010f121aeb0b10666afddebd18af9ff571241ee39e4f2e7802cc75dec1ed6e7f19985774f0733c833ccb9d82ca1a +5aca56a03a13784bdc3289d9364f79e2a85c12276b49b92db0adaa4f206d5028f213f678c3510e111f9dc4c1c1f8b6acb17a6413aa227607c515c62a733817ba5e762cc6748e7e0d6872c984d723c9bb3b117eb8963185300a80bfa65cde495d70a46c44858605fccbed086c2b45cef963d33294dbe9706b13af22f1b7c4cd5a001cfec251fba18e722c6e1c4b1166918b4f6f48a98b64b3c07fc86a6b17a6d0480ab79d4e6415b520f1c484d675b1,1ba3e5682b5210c2503367cf92fc02ba6fefa6c43cf725d9e0a5a796f949bf605c9401d6235c09265c000afcca9facf32b1c6cde831d051dbc604b72b90689cff3e9179bb0a8d151c2fca7db9147a8a95ae8831c475b16b2478fd794087d0d979fa66da5240ac77be4cecb3dbde50fe372c5045be23fde7cc0b6b86a0007d47de80d59a2dbc7883bbb2f76b74e7eb53e8c929ab73819bb09cd61010689dacef17beeada0311f2f6594922ee835dd09a61b41aaf5792c63cec79c40ec126a68deb00eeca6aaead43072ac65e7101b4c7a3fb42101bfa922e43329e736d1dbc90ef45032c82e26cd102176cf8490b554ac9c6fffe81d281cbf29bf5056c06ce2cda918bb3c9f8f49a045dd2cc4d680ba8a22562f1dc53838665720ec60e4e3bcb76014b619ee24ff41b2860b3ba4438527d975a1302e8ff1923211f36673b0be8b58bf0c7fefb0cd50a28a386ce6dad7c30b8f6a3a437e864143143e638fc6474a2a8a6640862ff4c4491fdd52ece0834128137011d46ee7b0cf611b237ad515bcc11fb7b0a4650fd6e60ba8b6bc601de5cf75a66c3f16aead1ef19c47420a9840ca4b1352af4c5c217350840ad035621eabf2eada2a517250d3a6ad834caf2a472b2d5dca3829c372edc64703226ebbccafd316e4ea3a9bc9aa8dd42a9715b29702bba9ae232c7806e5c0c02aea68602f4b580396b27b94385a3dcebece345828 +a5aad0e4646a32c85cfcac73f02fc5300f1982fabb2f2179e28303e447854094cdfc854310e5c0f60993ceff54d84d6b46323d930adb07c17599b35b505f09e784bca5985e0172257797fb53649e2e9723efd16865c31b5c3d5113b58bb0bfc8920fabdda086d7537e66d709d050bd14d0c960873f156fad5b3d3840cdfcdc9be6af519db262a27f40896ab25cc39f96984d650611c0d5a3080d5b3a1bf186abd42956588b3b58cd948970d298776060,7f8d0ab3060b5a6acf3522a83ac1a432dd9ebdd62bee5ca14cc54fec0d3ab6d1eacc33603f214c35e8c256bbe7f0a1c110a65a6e7f5ebd6733350dcbba851271a0ea684a0afa032ef530511b5fd923399df93567d9bb1eec74d6fa4ac5451d81feefce00a7074a1f32498ae68380e2d9800ad3da75e0bfacdf66b9f34ce4c60615ab46a8310f85c2a7f9a737e8e19e0bcb540fa9f621378c44e2dbbf57c059d52f79fda1db8a3d5b44c558c8cc70901219ae76cf5f6db962adbb6515b25b5fc81cdca21b7a51911c5f5c52e8f2a863e9f09e927d8f66b063afc73cfa8592b710063544143a8b5d06cc78a604e9b72771de91f48ee55c9fdd831bf91171532ae5edcaca1bde2b96362d4e30115e12ada76aca05dd128fcb524ca8831cf2459a53d97ebc3ac5a25517f254a14316a402a509ff5868cd290c88f43229be54a3443bc547a093687b3c3d97a4d1a09004cbaa6939e86cd75f5135d9fbfdde568e651806af401095c3602ba958fb7a0f4276791b28a6bb75a6944eec6eb8cb9a7a9e288916a15a496df80777feea0f42695ac62e29f137e355a13b630f30e5d4e4435c3180ee86173f59bc19b79065cf3f33f8bbefefde35a8ab09c13dd9d326e98c9730bd033cb2dae20bf076ee9ce764d48bf8a0f7bb9181e60889293866e1c601ab38122220a2ccaac996fb1770cfdbc4e628bba2b3122e0ca351fada84f8183ff4 +06cbbe67e94a978203ead6c057a1a5b098478b4b4cbef5a97e93c8e42f5572713575fc2a884531d7622f8f879387a859a80f10ef02708cd8f7413ab385afc357678b9578c0ebf641ef076a1a30f1f75379e9dcb2a885bdd295905ee80c0168a62a9597d10cf12dd2d8cee46645c7e5a141f6e0e23aa482abe5661c16e69ef1e28371e2e236c359ba4e92c25626a7b7ff13f6ea4ae906e1cfe163e91719b1f750a96cbde5fbc953d9e576cd216afc90323a,c625ec73e6d951eb899e865b5012ed72229958f2850a79cb8221ad2248a8d670a8072519ae6dff8cfbf7a20863fd01183d55093c80ccd14106426579ed2fd99578532f9b4d8e11be19a0f0a8336fcbf1bb1d6d91247dc87b563c1399f50144f563f8583dbc208165c106567ec51ffd321d9f2aba7ad2e7f2c1950d04e9027d7364ed831c2155e17c0b083b2ee2c4e720a2638cbbb971cccba1dac6860917d28d341a49cde2b8727179c8b596c045382e6e7c23a35d47880b4a47d3dc79687919194397c3ec00d9aa232e666ba24a1a39cbe847b2e864478af2f59f73b2abf2a98481430943980ba197db6e67a87f3782b7bd99a6e27f82f133dbc6d722b5cde09277f2407671ff44c1117e1265f5ec9faba0a946b67dd268c3b97be198bd2b5185eb07378fbdace2b4b97c8de2c05176cd186b0ad3f7d54da7701654eb1d1fa200191cea96d0f02c86caa277fec59e1c93097fb5d0d43600e3403c53798a33ef5ccab3d5405e5db570a26c3a0bdb304328fcd36e327b5d957913aacdc4d938bd00577963d5fa343109f4719d8192b12272ddfa338612aaacdbb4cb91e129e4401e16a673d6feb16294345fcd0e9bac8bdc30ebecc3bc6dcfdf25adbcb42777a6ff4c05b5981571af8a33d9e7d34534f8f89f555a1a55761fbe2dd66b93330820d3eb032d7a56db79aa7cc372340b953097453509f240bf9ac6dcd0df08d21e10 +f1c528cf7739874707d4d8ad5b98f7c77169de0b57188df233b2dc8a5b31eda5db4291dd9f68e6bad37b8d7f6c9c0044b3bf74bbc3d7d1798e138709b0d75e7c593d3cccdc1b20c7174b4e692add820ace262d45ccfae2077e878796347168060a162ecca8c38c1a88350bd63bb539134f700fd4addd5959e255337daa06bc86358fabcbefdfb5bc889783d843c08aadc6c4f6c36f65f156e851c9a0f917e4a367b5ad93d874812a1de6a7b93cd53ad97232,5fcba2303da2ed78b7a3b3dbd3d7d57bbf37b25b75bf8330d39576ee26d830002f5fd36102bd09a6025532371a6246417f94a527220194f287bab34a936836ae84d87c251674f1bd361faf5ed3c023a96ac1e089050c7975d4fb6dda11305d73f2d9bf03fcdb4adc31c5356e231580af9e23b8ac79b28409dc4ede2cdc5d98c67508ed4d688377583e06fae8f195b10c60fa61ba10a7a57a8a52029371ca12c9fba5edd2378fe78e5cc119695fa5f6ecb4f7c27b0552b1231d4a1ba31196cfc7d30e92603cf2bf14e2d4cf8860a3b4b543e48401d9fdc6b8d0e1aaa559e91ed8fe3d6dde2f8a16a59aaca1fefd304d0c42b78441d4afe148b1abf86c92706c5c1528d54566ebf0f4f7f6ba0adaf6abaf5bf8dea607b6c86c789e7ea3229031bb69e60ba745f561208101dbe4774aae3ccd7da3e6c4625b0744b33e6697c31650ff94095c5cfb87024fac512d81cd395d8a30fc562e8e817d5de70e991e4b3abf091591769ea3b42197a4f4dec475f3cffb47700e832fb072b4783dcf44014642d9930f09a2e3c4984a20bed71e4d2ed1c5fe750b0f803d4891a128731f48df37d7e30ea34f7ed816c51f3ded629c7f430cb3f1ed74610e4d6535de05eb6e7520b1cf6653da236dc9e4f8cca8beb696af2a3c15c42e6f87c2ee1e9013e7fe31e891f6f9658f2e270a423154824ccd6be7498a6ffb8ea6c4e5b8a6cf1c33314c03 +9d9f3a7ecd51b41f6572fd0d0881e30390dfb780991dae7db3b47619134718e6f987810e542619dfaa7b505c76b7350c6432d8bf1cfebdf1069b90a35f0d04cbdf130b0dfc7875f4a4e62cdb8e525aadd7ce842520a482ac18f09442d78305fe85a74e39e760a4837482ed2f437dd13b2ec1042afcf9decdc3e877e50ff4106ad10a525230d11920324a81094da31deab6476aa42f20c84843cfc1c58545ee80352bdd3740dd6a16792ae2d86f11641bb717c2,07f4933f2a7c2988b9d753240c1ebbea38e95aa1029508296bb49bbdf3bc164839c76d905596ea153c4746b4fea069d2a784d9cacb598a24baad6d215f83f72d4b52604eec0066344fd062b1835570028c1fd61d5b4785ff5b904f5db03c4efb61b424226578392b9e6259fd86dc979526c560057b9395e32116371b3737825a9579b92e1ab5ff9006afde8a618687205438d99b7e1ba038922b140be0dafb7423092f362f537cac8272aa5df14b2dfc2b73f5f4104ba1fe603e00af8e47898c0e955d57ded792c3c93518cd84fab72a2022f189773fae574d5342eebb23f7d7497f301023c1143cb3481ecb0ee732d1477e6bf872ea0d0dc0623a5c0ae526d8885db1d3c1ca0a513d2e4d53e13bfd82129dbaa7a2bf6004d2091e627928203d05b11d9f6335dfc73cb9a7f5c3cf43990e8df0269fa9bbb1fce7646c6ba85befd3f9ece88a93cbecc3f8f68ca4d0ae8197ca479efe0327463ab5b78685ba4000482558cec55d8b934726b820ea4fa9471aef2962a7e1cb4b2891c0b545547a146ca28ad3e9cc6abf69d7dfb87b298ca252387888e20ccabc9e9ed484262a3b6a1f857e6900330abe74454a62e2dedfec3aff7be28e4351c4ac0738032b81c0ff12afb4cb1b94f7119a6f2ab4157cb7c2fab41879943a075233cef8a64523f70e3c6f66c5ee3d5fdb99222b2a3eb09ffabcac867e0b2d06955cb80e7eae176788 +5179888724819fbad3afa927d3577796660e6a81c52d98e9303261d5a4a83232f6f758934d50aa83ff9e20a5926dfebaac49529d006eb923c5ae5048ed544ec471ed7191edf46363383824f915769b3e688094c682b02151e5ee01e510b431c8865aff8b6b6f2f59cb6d129da79e97c6d2b8fa6c6da3f603199d2d1bcab547682a81cd6cf65f6551121391d78bcc23b5bd0e922ec6d8bf97c952e84dd28aef909aba31edb903b28fbfc33b7703cd996215a11238,7e3fbad2449b2f16426651ea24f642fb8cbb40b1969fbf10c5a6c3e7b1ad2d413c1f8a78ccd5f4ab0ba0a04529eeb3f72b656ea1030cd94da5ce6b6d7c44728c0cefebd7fa597073f8befd6baa5325918c1baac3b8de7d1e4b723c0518936cfde3f039941ffec3979aed13c16e5f24a8c01f4d87e07f797e2db4d5ce17e4ac40565d32896e3b6dbdb50fc2bbc4d13c2e375f171d8ec62c423a126b45d3c13b6e3ef9cfb9b8fd25bfa74a1793ebbe1168705b7a26ef12c2424e9689d993ba8c02790e83ce166ddb7c838de164744bab16743231569645b144a34bde3a40712f01dc02e476140d07ba3dc4f51da894727443892e7b12555932aaa5755fd9887a9eac8c949e71ee35414150b63b00247cadcdda9c2fb245748dc519c39ec8877c860729d90bbefb89c5d914f99af63725e91401ecae6f69c67cae0c94bacf3d6b13c273019cc3b5d416d6a24d314ef01c6348f2e539578f9368c234efb559352e5acedd53c14a35f680428bba25a252f056c4e452a921e4f83d648838ecb076f4764256912d41d504044ba68f2734d7236fccd924d22735f6cfada2349421bfd51341eaba98da57b3f1a1b9b7b4588cf3a0d1a7e116700fb90c3de339dfb9ea3662364807b91f7d2105d59034a6f5816070b5c4b24adae525c1bf2d267ea4b03079405a436da4264cc50b2b30a0881e4d22a1904dc7311ca397af7399734a0cdb79 +576ef3520d30b7a4899b8c0d5e359e45c5189add100e43be429a02fb3de5ff4f8fd0e79d9663acca72cd29c94582b19292a557c5b1315297d168fbb54e9e2ecd13809c2b5fce998edc6570545e1499dbe7fb74d47cd7f35823b212b05bf3f5a79caa34224fdd670d335fcb106f5d92c3946f44d3afcbae2e41ac554d8e6759f332b76be89a0324aa12c5482d1ea3ee89ded4936f3e3c080436f539fa137e74c6d3389bdf5a45074c47bc7b20b0948407a66d855e2f,b6869f1189f52eafcc0353f7afdb8076c5ce063e2df404f3d1314a4de573541927e9f4c67a554bc82e97c3a2f6c679c812c9da6542681461baf009f3ed10d7d2c571288a41eff6fc73dff8aa3cb40288c84c9ed5cfa70f59395e09cf3cdd58b4d2a65187cf38828b981eb5ba8f7e591070f97b3a567188ad4c455fec91ecc2c9829e00639bf6ce1ddaee45ce19d9a183f0e93630886f511125a69218d86c5008760e8ee0cd299062cd1a06d0d2a5e07a0a30da7de30531136b4bae8546290469fa1b18557e3b1316ed8ff1bc94131e9797efc0a2d997f8da22ce6de0358128afaff496db6466210a8682f9d286ab66304e79ce92174abcdd0c4db508f03c2bee0c87f6c39d0fa2ef7f3dbd4201b4a46f418ca1de312a2fc9f82e6008bf06042050ca302c9a386aab9a3a8fb558eabea6771c6fc301f7dea5c13da704e4f41dfc2ea508f1efaf743fd4a3ebd9370cc3c872a41c4bd40eddf311c2f5b7c208bbdc7bc4a93804d10b32769a333e8bc2507143912ce4d918d0dcb4d6462f0790f10bfddcd7fd711e14f411a6ce58d50e70e1ea23645e97b6c154e3bba3ab35411537bc8830ecbf953bb8214df95e6fb5aabbce08f8d017958848916fe04b3d2d5f69db9234220da3388e3385ccb90194959027093a93f7048f35e3a5b0aef90a792820b242c34700fbe7f7e00c00d6abdfae26ddc95ca47a72133f97924d67291c6f +0df2152fa4f4357c8741529dd77e783925d3d76e95bafa2b542a2c33f3d1d117d159cf473f82310356fee4c90a9e505e70f8f24859656368ba09381fa245eb6c3d763f3093f0c89b972e66b53d59406d9f01aea07f8b3b615cac4ee4d05f542e7d0dab45d67ccccd3a606ccbeb31ea1fa7005ba07176e60dab7d78f6810ef086f42f08e595f0ec217372b98970cc6321576d92ce38f7c397a403bada1548d205c343ac09deca86325373c3b76d9f32028fea8eb32515,eedf8414acba3931ccb5c41b045e708926cc68c513372b2a5c9f8beb76c060461cdbde486f81952169b465061541e397192cab92b64cd5ae0072811017140d53861f56a96a66211fb30bd1e911d31fdd29ce66882529874724a64216c13aee8110b963ecc99cf46d2c1384cb39b27f2eb85b517893ac45a126f57e93dedec78cd2708e2c718d783d847e2fbc8b3fdc67260b33852576910d2e43923bcb8882d318ac5421b99be5e532101833585e744b65eea3104337ffafff4266b6add5f081e42a46c5365cc2f03df43c3aa3d0f9a9c477d65e5ebe634c806246544b97eac179c932e37948bb5e5c84db32450f3b9fa54c89fd03fe58861b8e8a6c8c3d7205b7a65a02b90e0412c493acbc3385e1a197df785b02ef42b0bebbd5431ee59df31520b88e30bd376bc4e720d71f1c0c9ae4c2fbe126dade6f667e2ce825ca1118f5b82f2a86fd5bd80621fa6fea14768efd08d75e4c416fd1245b0c07568df42244dbf76614e0f3010684210e49d0868c3abf1c89084510662bdccf932176daf9393b00a4fdf911ec8ba14e81b0648e5126b7b6cc1dfc902a53d0ba7204c256de67fbb525f6c2d4c4db08484a14431b350b76b0ddee9924a8e0ddc4e6b9dfa90fd9be0be70bffbf6f9abfe0ec489822b94dfeda911faa7626271264100e2a40a2ab932cbe92bf2dbf57d273b0b056a6ddf29ba36a7f8138390865ad9ecc76bbc6 +3e15350d87d6ebb5c8ad99d42515cfe17980933c7a8f6b8bbbf0a63728cefaad2052623c0bd5931839112a48633fb3c2004e0749c87a41b26a8b48945539d1ff41a4b269462fd199bfecd45374756f55a9116e92093ac99451aefb2af9fd32d6d7f5fbc7f7a540d5097c096ebc3b3a721541de073a1cc02f7fb0fb1b9327fb0b1218ca49c9487ab5396622a13ae546c97abdef6b56380dda7012a8384091b6656d0ab272d363cea78163ff765cdd13ab1738b940d16cae,61b6e091f3a8bef3886484730629a32553b1ef7efa8689ae6c01062f505ecf48e8460b66448d355046fa728af5778feb8b827ba30211e5b1bb82f6beb7f2ed7450e9ee0a19a47af63bb687a0a4e611b3762b97bfdc6e212ede1f874c33636ab4ea613ba991e8b9558f24d1c02c5731b155dc1edd6e984c5cf51bc59be5e084ae89c87ac2af5792c6de0b76448aef8c5f248ca6fd1525770c8b4434a76552834cf1481843a9e3a2051108d3db6b8265f736395848da2c5755b504f4b958755ba1820deee9ead314c9515b996ab96c8f349bc12618fa4e8a026efc5508707f642f5cafe1ef135764515f4ce2de357d93a0f3bdfe8e3a7e01140212a735faecb49659039aa05f0c5ea0690e304c155a64804954e24039d001a1f7c2f1691e81120fd275a6fb292f3fc1bb16763887e3bf327fd36ff14d8b89d02990ae9d4b2b4f5492934079d17945613aa03771605b259446664fade2292036eca5894c4ec3d6673fb95617770af54ca581bdc6b52097938a98bede6ca627a9322d4ff7390df9a3e46fc5c0663a88a16a7d4ee708d92eb5ea6de0527fa5bc3454455b678791e07586123cec8864396b4b972ba29c935e6d3ba2f7b2fd315131c0f008d047e6cc234535d947f068548287140d4303365990e62b4845a3e7cd90667039c205bd1b836c4240b2120b54df12c462d2b10ffe2d61b456f090efa26c53e1f51d2292d31f +c38d6b0b757cb552be40940ece0009ef3b0b59307c1451686f1a22702922800d58bce7a636c1727ee547c01b214779e898fc0e560f8ae7f61bef4d75eaa696b921fd6b735d171535e9edd267c192b99880c87997711002009095d8a7a437e258104a41a505e5ef71e5613ddd2008195f0c574e6ba3fe40099cfa116e5f1a2fa8a6da04badcb4e2d5d0de31fdc4800891c45781a0aac7c907b56d631fca5ce8b2cde620d11d1777ed9fa603541de794ddc5758fcd5fad78c0,e4e5622998509e275aed8d103e2581877b09d570efe558cf03626fdf3a2c04044c1531d3f92a025ca693fcab59d90ed2a2dd33f4768f56b972b2e87d34e8f293862c22602de928714c34ffe22c118c474467005c250f77971d59bd93581e5edc4f2be3c61f5414da40ddfd3053595e616afeb18d3cce87691af4c228da5595e2c4498fdfde8360dbcf014b368a88c5ed7a71eeeb003e8839a371b8d86f7b58da353edfb2891bf5a5ccbeac1e5f2edec1442fd79b6a31b85e4702df68ed3a0504e26489b15c0c1a52b443581bd671fd207302b4badba9f41b974ba6179ea1671e4660cc8f5a35f71a8b9baaedc457ff13263b062db6059fb4275d2831218b04b2e24f1e3b3dc4cee9261a1919343d5274d64ce11e0c27866eca3c91be98762834142c730f4c3354f0866d9f0cbde0e54bf747e0d8e50c8654a1c87fdf7eb6d13c06a8d0a02fc6ea72c77d1d957b960d6726eb5f1d4b3c056b2b67d9c23dd393a25d03129fb4d894dcee892d4d7cbbeaf404fddef8707c5850b319e04df5d64bb9f256a6b2a7bfabe6487b16dba0cf415f8de98ac8d63498df68dd9e209b23297c79d108bee3756989d751d91fd0954a7f5b166109fa11c7af4bb18b695ff6110659e37683f92ba03c24db9276d88e6fa587543e785a4d49f37240cbd826162e0c2ab12deeb71552fb1ad45e7e5780f832d831d2aac556a3a0005c37c148c41ae1 +8d2de3f0b37a6385c90739805b170057f091cd0c7a0bc951540f26a5a75b3e694631bb64c7635eed316f51318e9d8de13c70a2aba04a14836855f35e480528b776d0a1e8a23b547c8b8d6a0d09b241d3be9377160cca4e6793d00a515dc2992cb7fc741daca171431da99cce6f7789f129e2ac5cf65b40d703035cd2185bb936c82002daf8cbc27a7a9e554b06196630446a6f0a14ba155ed26d95bd627b7205c072d02b60db0fd7e49ea058c2e0ba202daff0de91e845cf79,f3addaa4382a61cf38c2963346547922642b064ce36b4d424f41acb02afe7aebbca83df589208fc828ef58300e96a4d20592bfd58640cda4c970e1ad58ba410accc75cf6d2566b6a10d7fdf02d169e6bbe8953e5812cebf84e6e79b952680b4cb59373d8a6741c3483389e611a290d1ca14178556d0cfe750c787c4db1558a1f39a2f39f9021f1e420f57ca91cd1efd2d61d0d8cd34ad1ff7e607096b9787a51cb7684d8040fc66710c63d85a510ddfdd3f60056051406e7f217f12867312197690ee8ea33e6935306b76ad816043fcd52255976f9691c31afb361612886758be8ae9112412456b4395017ae96a3d118e351ee2d17fba96b3af726ab1b2eff01fc3b8b4dce461a452f0e6885ee4937b34bbdd357a83a68a95d12bf9cde1c5abad70ce7a30b76bdb601b8eb533d57e4dab508956440ffa0ea3ef2773a446e2cb11f08226385a71d93ca67cf6ccc8eb8e48444d508ea035ab59aff79e076fff850cd497798f49bc633ef41b0a4239681da28a3bcfb2ffa3a992909e0a0148781a1bc03fe3fdf9b7b9971213f9ba331e5b1235314b3f173d48bc3249e946627f84070ac2d8b57e184b0e8eaf0321b38857383bc1c27cf9390e79a2e09a3b5552a7aa9cc55aab534bf7d7571d3ed97c258efc9e2d3c1d34dc84eaaf55d1725ab388c0a5fa4df270630e468980fef3a79a67cbb2289bb03cd239c14f15a50403787a3 +c464bbdad275c50dcd983b65ad1019b9ff85a1e71c807f3204bb2c921dc31fbcd8c5fc45868ae9ef85b6c9b83bba2a5a822201ed68586ec5ec27fb2857a5d1a2d09d09115f22dcc39fe61f5e1ba0ff6e8b4acb4c6da748be7f3f0839739394ff7fa8e39f7f7e84a33c3866875c01bcb1263c9405d91908e9e0b50e7459fabb63d8c6bbb73d8e3483c099b55bc30ff092ff68b6adedfd477d63570c9f5515847f36e24ba0b705557130cec57ebad1d0b31a378e91894ee26e3a04,eb6ccaad9ef05b657b6835655748051e33250c4fa600b3431e96053b0ad6adef7d8e5cceda256d96cbcf713e1998b19f8033bf032c9b2a56309b31755db88a5cb11669a49af4999c551ece42e69dbc4d53b0ab2705295a649364e8ae495c793b73ac4f5aaa01a7a66f4542a4a5b29aa266158d3379abb4c26596cc3e7195ea9112507aba0c1bbd8efa5785254681e11acbf65a977199d0d489cd4357cdf61f0da3b640958ff3ec7cab5ed0c3e725ec64d18cbc8bdb097967fce3af9a717f591dd49afc38fbb4437915d7b161e6800c3d8c0eaab61c5ed05d8711b00e75892aac5169e42b95ac207a27981684a7a26b9c7e00f7ab9a2dd84437940a7169bc998a56e0a31693345ac53f45b9a7d0532acc80e093624c5341312e7f2e7fff5b0712e2b119f4c6f5ca1e55899f394c850eb038bef7eb1df1303b7c97292732f96f4f6b8cdfbad6c8d6fb5721a5441b4897fcfcb2959026deacf17a99a27ebdc108eb1d77518c342b8e9892ce44241f94b88803d7ef72e26e8209bc251faf58b8e0e2cdaca5b4509174b07c98aedbb2c3871fe972a4c31dfafca4109985904daacab1c124e659562b77287b6d9db73a38a26ad0e746b71fa086f6aa4e39207093a04cdbc69993c2205cfedc4d321694d3fab832cd729ec2501ef2d386eb170a011baae3e83a7efd110fd36c9a7fbddb835fa033891ff21c4b634368fbe8ad991649a0 +8b8d68bb8a75732fe272815a68a1c9c5aa31b41dedc8493e76525d1d013d33cebd9e21a5bb95db2616976a8c07fcf411f5f6bc6f7e0b57aca78cc2790a6f9b898858ac9c79b165ff24e66677531e39f572be5d81eb3264524181115f32780257bfb9aeec6af12af28e587cac068a1a2953b59ad680f4c245b2e3ec36f59940d37e1d3db38e13edb29b5c0f404f6ff87f80fc8be7a225ff22fbb9c8b6b1d7330c57840d24bc75b06b80d30dad6806544d510af6c4785e823ac3e0b8,28721a5ca8a0b2f0ea39d1e51f18ff57f838b0f7f95106e13950d717e3be00f9cde1fb3eaa37e3b0dfb080b1a08eb6d07b4c36fbe73c248fb86e993a7a44a42501593b8721082af6836efb165084ab5dd13c26413aa4303d19183cbf09526e9d6f590990c7a61103f82c3e3e58a673f8ea1d00c85efd867d4d7f9a0e295636933238c39a721ed301d4168b2346b115998279ba080d3d63a7f8a5bee1db83f415f9fa26cb0c6511a3ab2ca7cee4b30188570fedca952b91a299db985e0ea5d884646de594f5a3acd3cf975cb8987018ef6d5cb6c7044d946111d250b0ee5f40329d6ec2423d085dc8a8f8beea38ee4f3e4d7e206b6d1b988aabe52b074673c1d74c6db329cc978b88b0c88a41bb91d541ba4d3abf38f892e90639ecb37c79172352fa2273addf88bd6cd6a76b305e001f78e9d6c29c46477de5ed69fd0d398c8008c839c87fd95c51d35af3ac874f9e33e60813a984ffee299547bdf305756a9f7560411b7bb475870d8ace7671c093e210d3bdb10d31f48e0a78d1d9e3e44199cc49b7d2a9e2ca0ea8ebed0d265fbe461a12883ee515fd738bac8299309c86b77adbea857c4c92ed8e0f380733b47853ce530091a6d700b4d1ebc9830c2443c7d82c3e0e446cc72d4fe75a5c3ab4e38971ea41fe993bf270c477fe90e2e207df59d011e23777fba3b454138b31f1e055818ce61649f0d4d06765247a9b8feb8d +6b018710446f368e7421f1bc0ccf562d9c1843846bc8d98d1c9bf7d9d6fcb48bfc3bf83b36d44c4fa93430af75cd190bde36a7f92f867f58a803900df8018150384d85d82132f123006ac2aeba58e02a037fe6afbd65eca7c44977dd3dc74f48b6e7a1bfd5cc4dcf24e4d52e92bd4455848e4928b0eac8b7476fe3cc03e862aa4dff4470dbfed6de48e410f25096487ecfc32a27277f3f5023b2725ade461b1355889554a8836c9cf53bd767f5737d55184eea1ab3f53edd0976c485,1e98d0535e8d9201a8e74f5d60fe3151ab5c246993d2c39ae2c906720f898da70500d14e94add0842ddd949ff614c1df73d57879b3649ccfa780d22131dcb51e14caf79948d497d0a4b8c3be023551c68d88dc3e36ab8d73820fd880f3964964fabf60bf9009927f25d3ebcee347c54b3e7b9a957f0cd10ad15d0a9a2daace6715633a9400da882337e8505a431251bfa1b31096004e6e0f40f00f6c389a9fd5ddbbf7e7f26f1259d25f2c176b4b71f0c00deb9185ff0e4508fdd0e057af4f4d2df3a15dfa5416abcaf086d0118be1aa70c7a14da41b9612814c39b6e7dbeb9a415fd4e7ac8f3e046f0be25bc0d05a183a4fffc498100c21d013d712d7fb48667454a4a54bc6ce355107267e245675002ac83e00a26a76ee6081f8c621620c37a03fbfbdc6f7bd88a5d996bea811f9f753a2486262e6452f896ab8f40b2bd97f95038db68fed4a52194b9e85815e67daca1eee6b0788343999453e8758afd73dc3e1b9088561305e929a0128c6d229743567c7885eaabfd9bea8644fe8db4d19187ff46388db5c1583dffe70da6349eca26e839db999f75c1c72455643a902466c24717069efaded38c138d6a499fca999ab653f5b5def624ee990f46177fec751f55833e721df57f6b813a55c2d0c463d25e96a53db14e6cb4340f6059c924cb7c4edf94812959251282b5f46add9a97dc8951b6ae72f7faf6efe2bd11d9b34 +c9534a24714bd4be37c88a3da1082eda7cabd154c309d7bd670dccd95aa535594463058a29f79031d6ecaa9f675d1211e9359be82669a79c855ea8d89dd38c2c761ddd0ec0ce9e97597432e9a1beae062cdd71edfdfd464119be9e69d18a7a7fd7ce0e2106f0c8b0abf4715e2ca48ef9f454dc203c96656653b727083513f8efb86e49c513bb758b3b052fe21f1c05bb33c37129d6cc81f1aef6adc45b0e8827a830fe545cf57d0955802c117d23ccb55ea28f95c0d8c2f9c5a242b33f,518802fdc9fa52a2a70fdbf2af1b43ede346e59b2709319cb57fe6480c46c7513868686cd374aa43d656c6ba98a2a879a1a3d973c46a10e95bd0fe28029e5bc8af03029d744f4b2d9bc9d83ce895618b9e21e6c4c2d295a285f251c26d22cb1662a2aa4e8609c8503ca9c908ef853ba212a87411059118596c88795c972f8ff55607bf82b8c128ab5d041e86d5784b35edee160ffcd06314510dc4af9b9fc51999d70c9a10449c5b62b584614742032be710e50b42aca942c7c73776eab51b0fef37f5447e8ce2198266e7fd1e378d5cb2f296afb77600b64677fa13bbb19da426288f423ec6617bd19a77833f01ca5b684bdc5bae939a79b6203b22f4fb27f4be92ebf337f9153cd3d78da095c0e76c9877a1a80d2ae4df7ce56a8f876f32e1134e0c51e52798389c35646d3165dc164c5f77ed519345d21d055a332f87ccba7d3ef19be950977710e9706ad07e30928639148b1250026ff23b04a06e62c2799072a319e8346ee80f9a0a2389c4b80b9a397c45bc1f0e92620455a1a04b6bed80b1bb1b78370992c5e41fb56e984421fb1e8465132a33d6d227c85970df92d7159e6f59eb766c3511b84c85865de1fb3fb3405d2102f1ca0aa4c1eb6a0ec90f6b89d783423d848bd70c8220c7f024a43888b9947d1e9e52a6204ca17b04765f503a887ea929ac4866890110fed0713a0479c6fb619c08bf2cb24e026ebc6151 +07906c87297b867abf4576e9f3cc7f82f22b154afcbf293b9319f1b0584da6a40c27b32e0b1b7f412c4f1b82480e70a9235b12ec27090a5a33175a2bb28d8adc475cefe33f7803f8ce27967217381f02e67a3b4f84a71f1c5228e0c2ad971373f6f672624fcea8d1a9f85170fad30fa0bbd25035c3b41a6175d467998bd1215f6f3866f53847f9cf68ef3e2fbb54bc994de2302b829c5eea68ec441fcbafd7d16ae4fe9fff98bf00e5bc2ad54dd91ff9fda4dd77b6c754a91955d1fbaad0,ddbb83438554c66aa9d9569af53eb13da65440e0b1afd88b80df59e767e069ae4c70741f68adc2a674d66e1829ab7df21bad9665e5ecd655f756a78eb9f78d838461a03c1a6d1836b27dda6d269ed65b7e352030401acc8266f41fba4e234d225ee32bff12406f7f620cb3484d6757ef3ab69ecd675a9250200735826b630b72e64f21e3d84b135a35e1f4ae48ab2e80424c10be6bb7aa78f8df9c91537fabb91db4d58428f6de62364292141e9a7ffed93f16d1d36c3ceb4960e7cb8fcd8b91eff75b027159586dc304051556e1401a6c555a804616ab2757d699bfb1e37426983c39f34df6c1fa6c084fdc9c633b6aa331c5e5028bd185a4ebf3eb0ca4cc397d481f404440f4ab2ab7dfe0ffc935d91d417d94d9858f89d28b4900e634a5caaade9f149c6ca1e011ec684cfa3b3042f9a320501522b6211da5f5555c87102df37f17e4ad3ba55a37381d204fba5711abed49ee51f3985ecea7e239fba0e8a060a4990590795edd1a936c185bf37af9b95fa3e6294a780dc9fffad7d9319002d18794ff0da59cc6ad9e3ad9d74bdbca343ef694cfd333f87278e59cc445fbe0e622857f3745ffd8c90a161f7f49ea875bb1cb234c63aa0c55e530a72b19cb770fe91872a91420fd1cab520ee922c2b6fb59cb8e516c303f4c74852769ef1787fbd7429d33b2fc0adc18b23034736fac59f926e88df27d811591f03e7009193d +588e94b9054abc2189df69b8ba34341b77cdd528e7860e5defcaa79b0c9a452ad4b82aa306be84536eb7cedcbe058d7b84a6aef826b028b8a0271b69ac3605a9635ea9f5ea0aa700f3eb7835bc54611b922964300c953efe7491e3677c2cebe0822e956cd16433b02c68c4a23252c3f9e151a416b4963257b783e038f6b4d5c9f110f871652c7a649a7bcedcbccc6f2d0725bb903cc196ba76c76aa9f10a190b1d1168993baa9ffc96a1655216773458bec72b0e39c9f2c121378feab4e76a,3a0476c8e248067f0f96f01561cd0f6e55bb31fed70d2ad5f282f030044a331c6a20f14f254d1ca11eee4226323874a1035c0f522284627b51f29ee43b291d24001c4a44c638aae5a89045c141e16b562fc1893f39cf49bba6d17efbcfa4919a1c60d60cdb132cef068a05a81fa5c374273fe366f4caa16887c5ad1288bd066b741d234ff63aae976e742f5dcff610caa33826a7856e5e5265fdbfa04007ff3f0f701850de3e911fd71e00012de9823d78e381ccbaf09976fd686811255423a7cdcadbd854bed848ee0ed2977fc192573f2f36c62a5539ce807c2b01ae7220c6139d1accec6ca37f2c964be922547bc692274d557abc1e7d521d1215cc56260d0c7ef4c3eefa6d54182fe1928d8179fd4508b8a4c7a3f78d2d0cdf76abf581f0689d1bbae1f7ed3a8af23d687c369398c715f71377da92a518eae81c7587876691af81b982340d71f3ff3836ae9e87eef7db14afece5f57e45746173e7834132f922ab5afde73076b67e446a0f096ed2bc87e12216bacceaf1e912cbe89483b5e0bc35df7c38f79f31c1567d16a321920b2d0e6f3637b2c65ac762239522433aa51eb34a2a174c93a693c187e97b3bfa4c8c9c7dd512a74f26ef74eee24d3f425f0cc05f0a3a630806fb960437f6edb2c31b0103b3933986ba9e0b2d26b554fb9af7db5454a18a8d52ea8445f6844ba7371511cd14fbe171bb4045c7377553e7 +08959a7e4baae874928813364071194e2939772f20db7c3157078987c557c2a6d5abe68d520eef3dc491692e1e21bcd880adebf63bb4213b50897fa005256ed41b5690f78f52855c8d9168a4b666fce2da2b456d7a7e7c17ab5f2fb1ee90b79e698712e963715983fd07641ae4b4e9dc73203fac1ae11fa1f8c7941fcc82eab247addb56e2638447e9d609e610b60ce086656aaebf1da3c8a231d7d94e2fd0afe46b391ff14a72eaeb3f44ad4df85866def43d4781a0b3578bc996c87970b132,868c7566edf719d04d7457bca5ca9b4b62f309fbe1046a7351f24dcbe2e2224e34cc23e2c859e83b8b09e15fd575fe5225a03d1869cd1879728825a67008cbd1c7f0535086de803a3e55dbad1bd9998ebeace9cbe63c4500b5ed3380153a41c33948e82e2d375e70e2a8c3f1c1aeae72d000efcbd7f9da3fe0422aeb9a10b81b07eccee0c227947e7dd5e2b277a80718015bf5ca4c9b3ea5ec7cac5cbdc79642cc0b547729a0956c739c956d09faf013f402d764ef87a5027049c4fa0bd8ee8d77d99f3124710db8b274b1f8878ad74cf88f21abc520153b2668b79f824d74c4f113a66a275ff882b64794e307182c5ea6c96a719fec5fcddb619579246efacf142f976de21aceb21136e9aaabf231706c767a664602c676ea46c70f0be2a7f9907a484bd6064e1bf132fee115362dc13566f763f4cb29a3ccb68594d9e7427f2d29b1a3d02520a81af9d41990e04c9766260841e86965db59b764e1867f9f2b4bfc6c13bbc08c4db843982e262f75ce6f0e034b58de6ecdb71a5e32e9f91ca8398ec286277b0dd6a518031c16ab864971c243cebcf3755a72afcc186c5d200873eb27b070603a6fe494adcac893162cffb544c2b69083693a407dd92cb4f6b1b341ebe491738258ec5d109856bf106b56e6b96481b933093dc4dbe2cd075c5e3b760d36f3b92a286f91af57604b70206c8922ed21006e05a271f1415f84f6ba +cb2a234f45e2ecd5863895a451d389a369aab99cfef0d5c9ffca1e6e63f763b5c14fb9b478313c8e8c0efeb3ac9500cf5fd93791b789e67eac12fd038e2547cc8e0fc9db591f33a1e4907c64a922dda23ec9827310b306098554a4a78f050262db5b545b159e1ff1dca6eb734b872343b842c57eafcfda8405eedbb48ef32e99696d135979235c3a05364e371c2d76f1902f1d83146df9495c0a6c57d7bf9ee77e80f9787aee27be1fe126cdc9ef893a4a7dcbbc367e40fe4e1ee90b42ea25af01,49d7fa3a63ee1611e9ecefa88f80dfcad8d7ad69e6a899ad04d102885ae1419f8e9e6897f1d6937177e1bd8ca104a7c227b8dcdad473d0a2bc12c1a2287b5dc66a0f808d02c452bdfbf5ac4f43b38105b5a9f2e67a4c6c81fe5ddcc1ad3ead625b29031fd5f1ef18f4aae15eecc2b6f5a4336e5be3fd7d3970d50261ff6f992e5a0f818be342b910b267c8740b7f331e0623b5793d4146dbd8ba3636d12914df35ccfbeee62bf3e0033ddd26114ee709a641ed54c21a130c8b3e1f9a49965e48b8ab914aa2b2a377db1873a1882625ebcfdd1c366360b8dbc631db94bff615bcab90d8bab3c14f2cf4a6e4c4130af4255acf14b2b3699edf8753c745f9d8dc23afbf449a05fe05fcc83fb609856a5be79b06e57d3e42531edcc13b1aeb76be54cedf8665439731cee4144cedc0e8acf9ee2af245769d24da6261e368cf0d599225c397c61a87ea8c0ef648a74cb1e3c5ed2c6cdb766e83bc68299b1ad882cef5b436608847548141fe1db303bdb13771ef19674f196efe3502b14a7a47283ee6bbba86354b88a8fb15187e0ac84ce0e9cdf737f62c15ed3a4a6fa0708f91da2190268c0923d1e696b5e98251a6783479e6ba28336c39e27680bb86bec2991d82efb40cfe6985944ed3b18e2acc7e51bb24d0f2c19bde84cb271fda6bbb5de6b40203ab54ceeaab0d84a339dd84108929663a50ef23bcf1e79909e2275fddbe57 +d16beadf02ab1d4dc6f88b8c4554c51e866df830b89c06e786a5f8757e8909310af51c840efe8d20b35331f4355d80f73295974653ddd620cdde4730fb6c8d0d2dcb2b45d92d4fbdb567c0a3e86bd1a8a795af26fbf29fc6c65941cddb090ff7cd230ac5268ab4606fccba9eded0a2b5d014ee0c34f0b2881ac036e24e151be89eeb6cd9a7a790afccff234d7cb11b99ebf58cd0c589f20bdac4f9f0e28f75e3e04e5b3debce607a496d848d67fa7b49132c71b878fd5557e082a18eca1fbda94d4b,815bb24a227ff0b94478ec10d6b4fac313d56fd9ded13e94a57869d8bc5e542e47cd97d42f1387757539a452c5c40492da8a4d65190ae36bf2e169446bbe5ce0742a1a9865126ea07ad3875d47c5ed5f85c1a7a57cc350e05a4dcb1f052d9ff4aed38c5e1d65c05c3c7db8a9a6c00ae2b3b45fedca8c309b2c369a7b9608aa365015af193f33092d084b2a7ac5cfcc018a045a1d89989faa5fb16f854453d9a6336b900ecc4d9eaef9de4c6a287c44d0e4866cc8e4f8cde5317eee01113da6a64b88a1469835bba057760ec1d03d63d9ca40aacd7cfd8619e92739cdd72c9a11b0705a4e50dc386d4d378e624818b2d36b4ffb6dd1ad2c9f9d2a8bc4a7fb73827930e98cfa03c221b7c9d648463b8c2af1dd195a817c0e986e8de6c11371ab830ef74cc5e734b56c6c013350c1212901322bfcb0cdddf13344473e3950c393466dfdb59fff9e582e9b79f5938b0476de125fc36ff74c03cfb685cb09bff4c234f272d9b1ba6a2560308464ce36ddc0eb6863ad42b7d0490091c05a745ca5f288b303a0fd08bff7ba2265b6c12b25840357dac735cead9e6087d38a97421cd4e54518d7c0cf0968860b6348d1531c56c1b4f6b5c7771377194ef24e91f9d9df96253b80009341e10122c14d919a037c820822a23e47620b35d0da729a1ae329f99ebcc26fcd8cb9c67334f8b04714d2b76d5d0ea6156187c9017e764aea66e88b +8f65f6bc59a85705016e2bae7fe57980de3127e5ab275f573d334f73f8603106ec3553016608ef2dd6e69b24be0b7113bf6a760ba6e9ce1c48f9e186012cf96a1d4849d75df5bb8315387fd78e9e153e76f8ba7ec6c8849810f59fb4bb9b004318210b37f1299526866f44059e017e22e96cbe418699d014c6ea01c9f0038b10299884dbec3199bb05adc94e955a1533219c1115fed0e5f21228b071f40dd57c4240d98d37b73e412fe0fa4703120d7c0c67972ed233e5deb300a22605472fa3a3ba86,47a1acf4036c3a62a24f7a2e1147f5729db886339c7ce7a9a6e7613bb60c475724d573e64e4027f296023e762ca20f880ab6c73142d3d1d36c19905bba147317880dd9210a75fd7c552076f2419432e46c858e69b7f7c72372be510f07f21977dea627514f6ecbb34ddcd6cf5d86b01be3da48481b25d56071ceee2142a9956aab4760666de359a36b8808d1df3f3c15f22163cec7c1181445df7d06e79bda799a6c4f278968b677fb78c8157cda2fb7447acc2d485e6922d82e1af596c760fcc2d7d83a6a4b52400e3fdf64a2a7e4d9d9c59930579d4516618fe9979b10562b35f26ceed8d53de5b322b3bb4f1b989eaf31517ad896ce3e57f879d6de9d4a847e4f7c9ee093d7ad482d84d947cab0b6619d8895facc2da8bac086e054b3eceb72689df5730fa6e51f98205b1fa5ac9daf82a78867b655b39792c686518be3024a5f975e97a021f64fc75014635371c9dcc8952f2b5404582855ffb049561f3e20013e74c8a05fd434516218cc6e463f62515b454b358c611f2902b9d11bad43862497532df84de73a02054459b79cb956e6dff229e8fbc8cc558d666e10660b87b9b0831df729cd87a22fa33891d9ceb2cc7ceeb1f316600b9432346d1fc211ce1946946f33ba59d6b53f9208f8f1fa8362524448cf87a851cae07d0cce86e594b5eaccf0b4f10f8c4d414ac194909cfe526cc87fcce1386c7f5537d10352f5 +84891e52e0d451813210c3fd635b39a03a6b7a7317b221a7abc270dfa946c42669aacbbbdf801e1584f330e28c729847ea14152bd637b3d0f2b38b4bd5bf9c791c58806281103a3eabbaede5e711e539e6a8b2cf297cf351c078b4fa8f7f35cf61bebf8814bf248a01d41e86c5715ea40c63f7375379a7eb1d78f27622fb468ab784aaaba4e534a6dfd1df6fa15511341e725ed2e87f98737ccb7b6a6dfae416477472b046bf1811187d151bfa9f7b2bf9acdb23a3be507cdf14cfdf517d2cb5fb9e4ab6,2f06c83d5cbc776c9e2e490482d92bbd8d32b07b1028e046582dd17951c13cdfa27c065a2821d997f37ced1d3f69ed8a8eec35a55c1419b28770800a66a8ccc05332c64b0a310a1f4a99ee9a18ed342cc03a89193bb63849a6f0288b29b0801000ec0e3961fd85e6cf488031f028232b8fede6827c7c24fbc33a26a87a9b6210004038c67eecf0ef9d19c3dc8fe2c7db8a449f168a98cfc190043fd6e2ff366cc35556192e39d1664194d6943f9ea5b4675d5051100e1497c1970c2927506b5b717d2dbffcc9f62a0ac338340c8c473b397b98812bc77202a67426acb83f4a103687425d9f793312570ff6cbd897733ce7399a3853887918a9ef8d0bfac5a303b9e66ceb5ba52b826eada8e5e158422a6d42f89e986c30f9d8e14c8b3fc7daa5b012452666612acee1884c069f98e476f89e74b35ef94002744108a0eefb9a9992104973e1176f2ae0f560791b9486e7a27c75bad42054047e87fb95f43ae211fed7e3948745624f8eae4a81cffcb4ba389e169c9b55fde64dbc31e6287144d0803ec3f0e5a86de5fcd0cbebaac40d7103b3c0bcc8afde491b25aa472beef91d2afa59d980ef1a833002838a2159c0f9fdae39489b6e865adda3ea6dc8e675e45a45857111a2eb49fe3adcd52efae414b6ee423440419b310e3cf751f497aded9bd3cec9172a23ffc878dd9ff6033eac9c4ce7697ba9eef60b67665cebabc43b +fdd7a9433a3b4afabd7a3a5e3457e56debf78e84b7a0b0ca0e8c6d53bd0c2dae31b2700c6128334f43981be3b213b1d7a118d59c7e6b6493a86f866a1635c12859cfb9ad17460a77b4522a5c1883c3d6acc86e6162667ec414e9a104aa892053a2b1d72165a855bacd8faf8034a5dd9b716f47a0818c09bb6baf22aa503c06b4ca261f557761989d2afbd88b6a678ad128af68672107d0f1fc73c5ca740459297b3292b281e93bceb761bde7221c3a55708e5ec84472cddcaa84ecf23723cc0991355c6280,acb6638c5302bfd244f9c4f1adea0461562cdbc92670f2c0c9135ba8754bffedf6621fb48b702792f71ac3b800bacd3a18791642865247b75d086ae816ce17f6d0cdd63d0a2fdba9c743fc9e3273e6834d21f12554b977a146906682b5dfd85f41bebd1ed03ca3b67de188a0547493753465d76145f5f860edd2f8f3c09adea139c3e057ac64487962e3ee38e1fb9f29bb5fcf2d70993aef47e56a26c70d200d357758a4b34bd9327dbacf987754d805ccb5d2f4cab0e238de726e6ff78239c0f2e020a1fe4d4f6cc27c0747eca37b4f72a110b3b8715e3db07dbaabb0e580c4f20ddcb7ece60b295211ab7cef858153dbf3f8d0e27f621551b317534e9680576d629c5928f1a03c9928a93b67b4ffa019dbadf9aa71d37e79d40051f6bc6da2d567e3e48706346275daa4506a0ce668c2d4768fff917a11e4c1726842d315db4d189fcf686c8bc1061a63fb05a73720088c9fdca783ead1fb390abbbf0b6bdcc775ca9ac32a1cbbd66bd80da59152c97e295ab35ddeb7048b975c9e2a794993852f31a18840528d2f297454598a3f31bf9973b9ce54d5e2a8012eb2cee9d49fd8299dad5bb566629f6ee4eddd71e6d08c223d0a1f48bb804096b24bc6da27b80ac2eadf7b7b39c29f3dbe556af66463785707a23495e2ffaa815640bc925230dde6e5e545a7c414543d55cfa23330be5cc1720a816e4064fdc0bb45c0d9a426 +70a40bfbef92277a1aad72f6b79d0177197c4ebd432668cfec05d099accb651062b5dff156c0b27336687a94b26679cfdd9daf7ad204338dd9c4d14114033a5c225bd11f217b5f4732da167ee3f939262d4043fc9cba92303b7b5e96aea12adda64859df4b86e9ee0b58e39091e6b188b408ac94e1294a8911245ee361e60e601eff58d1d37639f3753bec80ebb4efde25817436076623fc65415fe51d1b0280366d12c554d86743f3c3b6572e400361a60726131441ba493a83fbe9afda90f7af1ae717238d,2856032a7399bc2d4a4d43d7dc024aa3040ed171982042e0d1a4063b6603526eb4dea45fdb007ac0e61043a11a502d4c49440c174bb183979a5d3a35c593e1a01886c60472d40d161a0512e3372bd5f8d35a217391d5ad14db17eb23bcb74d7701286a158b03a927cfd03c4062ec0461f8c9c3d4b8de0d70cec5eb018375e138278ed9ed366d546d896dd885da0c3513c5ab7efe2eca848b270cdac3d2fe7e14f3de6848fe01d64d841f198c85ce57e16b06ff41ffd454b6c61569b71d538ce5729dc5a5aa1d4dfd5f1d3f4cca0f424701e8857ec66c8dc3d44daacab9d05626751240e1e8f1adc1e064aaf47c66d9edb0ee114a6155e28bf4769f88c053313792cd9bb2d9687e595d321e152cfb42f67ec9da6e373e7621e4379a3c22b4828412223aed28946784cf67b6ce99918e0c1217501624599e4e79e90016abd265e21e91205824b7fbb95e9ed999c50f90c5748f83e71eabb66dc2c16cab63c064bb88c865fd30eab8fafe0529312be74b55badc4c944c69b89d98e7e07054a0aac8aad91f53582b91cb22a56741c41998ec878b11671afc9df26b5261be5eead565be962e87a40a5200a0856123ed7d248431efec79d7932407a7d762137eefabbbe0c6c482cbce115fa9cb7254614de54e361c5cbc4eac03757b83f4e4a96bd47d8347ed5e2c9e96df3f03a9762988d671aa75ec9f3b5e833570f13cea7c323522 +74356e449f4bf8644f77b14f4d67cb6bd9c1f5ae357621d5b8147e562b65c66585caf2e491b48529a01a34d226d436959153815380d5689e30b35357cdac6e08d3f2b0e88e200600d62bd9f5eaf488df86a4470ea227006182e44809009868c4c280c43d7d64a5268fa719074960087b3a6abc837882f882c837834535929389a12b2c78187e2ea07ef8b8eef27dc85002c3ae35f1a50bee6a1c48ba7e175f3316670b27983472aa6a61eed0a683a39ee323080620ea44a9f74411ae5ce99030528f9ab49c79f2,6ab8f0f45b860126332e32ad1819fd5a23dfeee2c7fe47081ac855901d2da3f590fb64f989ea616faa0533e49a3b08589ff2df8b8a27bae25a23fa93710032f2ddec4e3f905ca8ac37cba1d9d225b2f62343dd5418283db7d6e427ef537650944723ddd7dfed6394ba1540b2fe72944c330cfaef76a9cc3998c1b6c38a83ea71b075f1e65c9209bedd565149137a4be1c640f4ec86a556b196bdf14f5c336418dca1330cbe1781dfcbdfc26b562025c9db90461658c4f1947a1b1374d8120168a1ab8d0cea7527f0503f19c4605463ce134cabe1c72866f37ea2f105d44a3f2080dd42da509ecdb1ea8c0ad439820d4bcffcc5c34bf78cd8beed8e394567a78864517cd183ec4366249fa9340fe4a112dbb418b32aef24426cc95e12bd243f3bd4e744407f3b461b7e8c7ff096f2279962d60e778e1c362a5f47e4acae0561944be126c8ed384ba5e71f8c23fd914d525d3affa915ceba52cb3b6265e003d6b2483c7c331db0f56eb5f4d0b4a7db558a154e34f539136c6869126fe3a7fbbc07a92ca251a6ed301cb1a8415ff16cc28d1482fbb7a70df1ef2d5aa55a084116577301eaacd88bff5139d091d0bbae55e31e50fbf28952e7071594fd81b626fa4194d97572058f217ed070b97ed42d8c7d9dce730d270a01bf847929ff0e2190446d82f93d9c2bf309f836811de1e4700d9ba736672b407e539219634f32956ecc +8c3798e51bc68482d7337d3abb75dc9ffe860714a9ad73551e120059860dde24ab87327222b64cf774415a70f724cdf270de3fe47dda07b61c9ef2a3551f45a5584860248fabde676e1cd75f6355aa3eaeabe3b51dc813d9fb2eaa4f0f1d9f834d7cad9c7c695ae84b329385bc0bef895b9f1edf44a03d4b410cc23a79a6b62e4f346a5e8dd851c2857995ddbf5b2d717aeb847310e1f6a46ac3d26a7f9b44985af656d2b7c9406e8a9e8f47dcb4ef6b83caacf9aefb6118bfcff7e44bef6937ebddc89186839b77,6e9d7e55e8b258208fe6c1c50ce490bf81748deb2b4401800c2423e9479af3bc1b4c37249a2dc00f120dc5e2114ade14c830437d6b0190fec5aaaf57d4e9c5078b867b2905d48e6748e85cdbb3f1995389ab373014e6237948b8343ab418716f0e9971db6a179b11277acb2df6b6b5903ebf311f2d94b10c3ad0bedf2adc7486929c8c43cf0ed6673c6468cf69b493c9eac2ade0ab3987179570886a28c08d0dcc83b0162a8d459680fdd2422c2c40a44e3fe55d0ab24ceade4063c995915794b0c842573e2e7c4bff8e201d3f9b3e8f49d90186aabc9ddc6110e98e3410617da24ffba5a7e5c3193c16b70cd6cf919dd6f15da3627f42b6225eaf4bf1851a570e099fe3b8e7d746c34573a74744d42135332daac9a9341e598c714fafbe052f7e745ba1d424cbe0cb1932a9e497d2111ac597f7e5010a86567c51218451ec3d1461d1d2d54f5e8754c854cd4d60972bc09482084ab865dfda01d1c7ae4c749bfbddd19bbcd95e8a53009529468bc4c47d9015a119b9c37dd2c149c65e6c99699c69c3cfa405c65e0e51a3585d35ead701feb58f1ac72d74e87d2c65fb072c11b235ffcde39559a45f881dcb292caed95b3ab6e0e468f86a235e2d83708044d75e768a2f3eb13523338761dbc38a8e014052dbd46a0064ae0255bafba6a0c8fbfb40cb41dcdacbc5466787638b901ad452d7d50a0c610001fbb6f126902d2fd5 +fa56bf730c4f8395875189c10c4fb251605757a8fecc31f9737e3c2503b02608e6731e85d7a38393c67de516b85304824bfb135e33bf22b3a23b913bf6acd2b7ab85198b8187b2bcd454d5e3318cacb32fd6261c31ae7f6c54ef6a7a2a4c9f3ecb81ce3555d4f0ad466dd4c108a90399d70041997c3b25345a9653f3c9a6711ab1b91d6a9d2216442da2c973cbd685ee7643bfd77327a2f7ae9cb283620a08716dfb462e5c1d65432ca9d56a90e811443cd1ecb8f0de179c9cb48ba4f6fec360c66f252f6e64edc96b,bf52aca76d241cb569d39eb2d8669d1b2642c0cdb8b141e87c3b1bdb1f202641a1600ad388806ba9f5db50a7cfff97cb23ee977c0d3899f414ff5c47d689840f59e7e7db2edd92aff3fb36fd198e7bf5d81fa279f743fdb6b9c00e974065802903dc40cc3e216ff727a72f267624894f114c62e7b101d9da391e3a205c7b492b7ea28d836ac6657960cbbe4c38a73f87ea1f8a155a62c0a5d5ba821d9adfd42bcf42cb3150267aeaae507a4009ba8dcf70a13afedcb2121503cffe786304e3aa980d0fcd7c908406fd2cd9cae45de97414647de04d03c1214c967a14756830afa6f83ad91ca66d9de50b8f0483f99572a284bf9468a6abeb45f335eaf0782c04563dfbf231956ba4575dd9bdfa10e2f6df8878415b357867e5c22b9cf349b480dd0ca1f7cd432fcda057a5f9ae580814a7cfe843fa831a5cdb87646bcbe70229a3ee7cbb3094e591facc8680f298e10e1383d3a6387a503fd537a6ed924903cc9149879a95a164a8b3bdd385a69a93c58aacc066fbe4e59c7f6e16c00e45bdc19ec267f7684705cef34d830accc03822efe9c1b3903c47fcfa91fc7a7b58240765eef217341ff96f0d0cdf5062d8b1939185c47fabe5498a784622d1b2da0dbf06dae6f661206f98ebdb257bb2fc4c86ef6e7c6e31e7756c8cfe7c4842cda9878d6257edd7f204a009a9e1a492f5abfd42b48593231324728f8a510c47f516e2 +b6134f9c3e91dd8000740d009dd806240811d51ab1546a974bcb18d344642baa5cd5903af84d58ec5ba17301d5ec0f10ccd0509cbb3fd3fff9172d193af0f782252fd1338c7244d40e0e42362275b22d01c4c3389f19dd69bdf958ebe28e31a4ffe2b5f18a87831cfb7095f58a87c9fa21db72ba269379b2dc2384b3da953c7925761fed324620acea435e52b424a7723f6a2357374157a34cd8252351c25a1b232826cefe1bd3e70ffc15a31e7c0598219d7f00436294d11891b82497bc78aa5363892a2495df8c1eef,08e74b227985f88b7c1884a179d0b9c9f58bd2078f8938519f460511b00003e51a8ef4c93f69b716df11df2839688108adf72476d1675e4df3399c05257b1db542d92f0e27fc59a927f00c4758ada0fd95db9d3251c01cb9167b2d6310e051407a2eaf415a2e478be53c3945a702f04e25713ec2e2e1d51d636870642f6023a43fd0859a3b468a9502a8efecf19bf97906e199c095464600b0b7a1b180b841158c6c98d13c371f7ab56496ea14cff3110aa9d33869069a1f9215a6fd99ce9226eef5a272b004827dde0e1b1bf4b0c0cbb670caf16b1840c6e88e577acc2ed4493c598b938aece1824717964048786d9cab9ed14dad9f87df1e9c374010d89d4a8616ccdbf687e12d7cdfb388cbbb88b56fee3aedbc5360088a49fc1b2e1dd5518e0e00f50e3c922c8ca600a41f72b985f02e32a1f9a1fee1e1929f5746ffeb87ec41f08861ea3463abb9803cce8c8257853fdc0b0c077d4255dad1fa9e5d865c981ba15236828e7e425f5dacc4b738de18e6c68a6c925b72c14e3042916117e91cb69311081e4e845b09679ca0607bbafcc1341b283bad5465633073e5daeed6541b1fd09537eda2f0d2a51cfd8715d3064fb074b52d48d4e7175b4ad0a0a6084128424958275068bad56b5ad2769918b6aaba7ab1e8c9f88859b3dab310fba2ff67bdd3fc9e0b2edde0b716897220ab75611975e137db525de4465ecbb2d9d1 +c941cdb9c28ab0a791f2e5c8e8bb52850626aa89205bec3a7e22682313d198b1fa33fc7295381354858758ae6c8ec6fac3245c6e454d16fa2f51c4166fab51df272858f2d603770c40987f64442d487af49cd5c3991ce858ea2a60dab6a65a34414965933973ac2457089e359160b7cdedc42f29e10a91921785f6b7224ee0b349393cdcff6151b50b377d609559923d0984cda6000829b916ab6896693ef6a2199b3c22f7dc5500a15b8258420e314c222bc000bc4e5413e6dd82c993f8330f5c6d1be4bc79f08a1a0a46,3b3e210e0fb73556801a2250f1e76c45dad31e12f9ee3448640b73d5afd6d2d6facdc1b0cfa53f46a56923cf16b6bdcab566f3a0105e442ed7e88c09d705249be34463d435c14d5118a7e028dc35faa98112f80d816abe04f7345ea55e7f7652995fc047aff6b8e4d05c24a0c78fd9fd40835e523be7867312630993fc9e5cbfb47048453c205880eeeea2ed9a198ac145537bea2c216a60774c400444c07cf6546159eae47fd6cc79ca43d0d26c79dd13f39748a696f181984b5b8eaed82976c9b0c63c915bc2a2df91139618ac82e4478ea26f9731d422c692ad1bcf483936d99f65cc8e5ce20cd94abc2c4176b668d1813aa3ed84cbe68b8c982a8f884671ccd29b70efba765cb4be7d0d139798fbf344d7d1829f3afa946c3558b4c958a9235e4e96b28be25641120e00efe178304804d90946cdd1db6229c0147339a1f75fbec606a3b3fdcddd9235ea6bd3f166ad132f8c222e45a805d166f8fec56d488a2ab66737e3238e67419e194665ddad4d8214394a4da1ae09e0ec4ec5b209c18004f4008abfe997e456bbf99f1fd9b31e69b934ba694acaddd534e4bb4472179403bf9014a9ec311b16ca2900c669a8981be3b5a8a9d3bf4d05028fe6d3d97d54b9be443f9b0f73e59780d09afc937d1f36c4cd8caa1eb2a8522aaa175ff2e4a3285849c059991174bec1ba6e42e399c4ab0a566bfbc09cf1b836bf42138026 +4499efffac4bcea52747efd1e4f20b73e48758be915c88a1ffe5299b0b005837a46b2f20a9cb3c6e64a9e3c564a27c0f1c6ad1960373036ec5bfe1a8fc6a435c2185ed0f114c50e8b3e4c7ed96b06a036819c9463e864a58d6286f785e32a804443a56af0b4df6abc57ed5c2b185ddee8489ea080deeee66aa33c2e6dab36251c402682b6824821f998c32163164298e1fafd31babbcffb594c91888c6219079d907fdb438ed89529d6d96212fd55abe20399dbefd342248507436931cdead496eb6e4a80358acc78647d043,615fbf41d7184ef0edf7ab0b079b76a4a7bf2b10a79a2ffe8d22e2f0a8b6280559bfd74e4f68e7691264a5b4651ae0edc504f6ac0677e14389d92913660e75626615622dd458b7cae4ebf1da4f7adb0771a809bdb44e918f7d681711eae7ed84745a1e7f3aff0931162bbfbe975c394ae6843cead454a00ea54db5a55aa845413ec88bdf9119e238e6c84bcb76342fa8ba1a448af7cba6d0f1c964ee981aef20c5268bc1c3ae3f723e48d1932cdb14b95629dcc5269f2ea77f277354bf910b05bded92d6b8baf9601080156ef0d1600e80d8050b99243c64221e9b8ae82773c6be95829203fbee6caedf299509d6a2da570320ca6410e9853575a342f9e9ae76e27e1b0c892b2c932d80ad2b91a8d62d805ffde196dc1f169d2b9d51f28fae6546887182b91298b7b2fde472bffd86384ee1b78b4b5654f3dc38fe4400cef50338f1d79b478c6781eca2130cf3a86d9124c31754989a22f022658cfa62833cd5f25a021b03a84a7aa3f8890922ad179d589e46b535b0e6033c8383cd6b80324ef8efb3bc6cb9cf5ba0bf5f6b185b83edbe3f0bf27a9942fa87d172a5c9294bd63396ec8e1a5c7ee0bd7da1109a69e2ed928025b8383c55c6eded0bb9e23e15f50388209b3508fbacb7dac520e0327f2148fe27450d0c5c06712a45011c95d7b02c0e0f15bf8c222527451c1da4ab70cf649a025f8c95cd919e937b079f364c97 +eecbb8fdfa4da62170fd06727f697d81f83f601ff61e478105d3cb7502f2c89bf3e8f56edd469d049807a38882a7eefbc85fc9a950952e9fa84b8afebd3ce782d4da598002827b1eb98882ea1f0a8f7aa9ce013a6e9bc462fb66c8d4a18da21401e1b93356eb12f3725b6db1684f2300a98b9a119e5d27ff704affb618e12708e77e6e5f34139a5a41131fd1d6336c272a8fc37080f041c71341bee6ab550cb4a20a6ddb6a8e0299f2b14bc730c54b8b1c1c487b494bdccfd3a53535ab2f231590bf2c4062fd2ad58f906a2d0d,8043574aa03d7c6409677e5e579fcbce191118e2161c214640d725d384a3d941857498cc75480574f9bf4f7613241183b7b1354d4d08a9ad1af03230636a14d40a30a1ce8d1dd9cbffe41011e40d3fc3dc1eccb83374f14209eb83bd16861e161882cfc86a5332bf0357de84d38cb6fe65ff8ec3c8a01ebadac09fbe960e5d55f752878a608b3e67ea840503d59b6625b42570f74671b4267246995b5575294d20b6e693d02395ac5329451f905b14d7fff86a4401f78e6cc7b83806c19f30af6c75787f56222b9ff673f5631165ed8f20da13167f4dfa4c53476d7e2d7f76f4ea6dd77072fef26ac3ac7f65ea2c4f113897d4f00ed38cba8ab162b1bc3151d769d24a42ddf88f9515a04e3fe57fb4ecaae26f608fa6a0e30166f5a12223c10adb56803343e938eb88c839ef9f91fc7a0b9df899ad3dc328166c8af33de8560ede98ec371a22938252432fa57716c4058b7cdfb1dd7f5087cd45eae5bf1a4c3ae03c19ccb580ec122dfd54dd2106a4e5a647558b24d15d30ce2fca05673f8991003ec61270f279b7c2de67d1930a5c948c9259d4e9dbdab2d94dc1e1403697499544a1fa1109956aa22da488b61a97e933fecac59711e1bd5967df18130ca394fda025ba334b2857a1edecb002ba56dccecf9044e579143dc47be03072d935607de1e674c955a63508cb5d42af7fdb80459f4a239dc78c31097e71c06924092a +e64f3e4ace5c8418d65fec2bc5d2a303dd458034736e3b0df719098be7a206deaf52d6ba82316caf330ef852375188cde2b39cc94aa449578a7e2a8e3f5a9d68e816b8d16889fbc0ebf0939d04f63033ae9ae2bdab73b88c26d6bd25ee460ee1ef58fb0afa92cc539f8c76d3d097e7a6a63ebb9b5887edf3cf076028c5bbd5b9db3211371ad3fe121d4e9bf44229f4e1ecf5a0f9f0eba4d5ceb72878ab22c3f0eb5a625323ac66f7061f4a81fac834471e0c59553f108475fe290d43e6a055ae3ee46fb67422f814a68c4be3e8c9,2aba810b7512b1b3b179995f76f843bf39fedb5b969267d5f545a605abbb3f627b59550678b4e3c3b8e0959d5907f88b814413a5d94b0011fc8bc445096cf1b49d11fb2a4ea1ef1f219f7ddec03b3678f2d95dd8fbdb7a1604af0d8a5f3dc33e257a54ca3eb50c49c03bc55545a36f807ace5a69f2d7069d3530f304f419b8d5dcb80890036299465c3c9c45fc49a73f9be6c869113ac03dc5daa116bc60f687df7db354201dad9cd841467c27e6f0abdf5eda1f8b7646365a93ba71e1ff6c28d83ab5ea309e2c902a6a1a6396525a97eabf4f69c56b3527811046674f99edd2779ae353654982a10c22baf7fdde401ce67e8044539995f528b398ddde5132fc156e5587a9a3b3d5329f8df4c55e86f3fec30788d8e00df696ccc46a564f2371932e21a45541315d8c31ded3a161e0f595ef47f8fb1dd7f1b57537fa36d105f1ad0e60c917f01d9c88fa0020349cca8b01d77affe23ca4b575abf1e42726b271fe77ff0fe81a8a20c06ac8db699aa2e11f05cc5e9bb794b7e1f847f411fc4621281d257219709d38ba231e7060f745feff6b4bef5df477a24ed763e2bd49929e6c8c83ec776be988a8528b1fb360bf5d7bcd654ff9a1cfe1ebd5f6f21954f155b1f6ecfaa7e6cd4e52d9b08c68943b29b54c5628f3ef3a966a94fa964a5874bd2fdaf65a663743f07eb0d6b3b3427dd419c8ef627675593728885a3ddb1e3c4d +d2cb2d733033f9e91395312808383cc4f0ca974e87ec68400d52e96b3fa6984ac58d9ad0938dde5a973008d818c49607d9de2284e7618f1b8aed8372fbd52ed54557af4220fac09dfa8443011699b97d743f8f2b1aef3537ebb45dcc9e13dfb438428ee190a4efdb3caeb7f3933117bf63abdc7e57beb4171c7e1ad260ab0587806c4d137b6316b50abc9cce0dff3acada47bbb86be777e617bbe578ff4519844db360e0a96c6701290e76bb95d26f0f804c8a4f2717eac4e7de9f2cff3bbc55a17e776c0d02856032a6cd10ad2838,3582def5c0ec3c751727cbdff5d9561e3a0f9effef28c063461605140a2126265fa88c15b9ea3ad5cfd82378f78ac98baa5ed67969473ed9177ef14f44ba210bafebfca9c8dda7e1ab5c6881aae8ee0c824b47493c38ea7b5180323c7e962aba1de928a0acba596b2f8b7af188265eb92c5bebc9ef0a41f692e4b762990a40866aec96ceecb20ef9f7ccbfb83a85485163789811fed7b8e0a43fd15cfa4bb13099f3cab95791f8b05f5027672eac2d397fde1cd7e06fad506ca1efc22ad9cbb354d98be5790b4021c7afe6ef25d223510664dec63d35158999c9cdcc513c8c7e93175a677a30259cb280aca38fc7a8997b663a29ebd98d1c35f7dc1daabd6770bfd3b84f1c0314e67f14e7fa9a881c21bc0e5c2afd5f1b14ef4edf9ad382f7d7e008934ef762b41782dcae9b64448abae73d5a3cc80094b4f9983cb92d61c3555e58c0d24726e8073c39c3480fb2ba9f8679b9e8618cfa04921741b3ee72a276568068334e61089cea277cf0d34ea33e02095be33202ec69d2314128ddad63f001df3809baa75e3a5720b34e8c7a63e06da419a4818e48b30d8b0ae2e2405053c9ce76ac45c52edeaf6237260f18940f0300125ce674be744dc2a07262a146cb3bf595b59eb499439d94f8135de7e58c0fd09744ebbb97bd4c10c178904f52c7481b4d808e663dddbbf3235844cea3db323bbcec1756bc4480c4fed0c14e14d3 +f2998955613dd414cc111df5ce30a995bb792e260b0e37a5b1d942fe90171a4ac2f66d4928d7ad377f4d0554cbf4c523d21f6e5f379d6f4b028cdcb9b1758d3b39663242ff3cb6ede6a36a6f05db3bc41e0d861b384b6dec58bb096d0a422fd542df175e1be1571fb52ae66f2d86a2f6824a8cfaacbac4a7492ad0433eeb15454af8f312b3b2a577750e3efbd370e8a8cac1582581971fba3ba4bd0d76e718dacf8433d33a59d287f8cc92234e7a271041b526e389efb0e40b6a18b3aaf658e82ed1c78631fd23b4c3eb27c3faec8685,8c05c9635942c0661c29cda0375395b595a82e4b1ef87d767e5a820cc6975f2b1af87b76f69de5bb9b77e14753c2efefcb735601df5cb4ddaf5810bb89ac8863379192c578a3f2fea30994edf58f5a995857af481fc4fbaa552e6564ae091c3ec2c5fb5144798405972c6947d45696f7e918d6820274bac4ed1e721e85ee688e7ef7e6b4c87ca94cb6ad3221b5b0189d2f39a5482ffab8a928a8fe4c117827e33e9c8b024bc35e30a9475d54293f196c83eed3b458d7e676a48d2bc2e09ad96167e556f00799e63c8c0668aa3710769c6533af4f04816355bf4e88a2ebba1b442bef0bc9f7dd85a1fa42745893cd1f87614356e42e897821bbde09cba135ace56612ad79a99a3397d2bbb6fcbdc505a0372df7ace31b53231887a618e4e846e3e458078b4ab9fa4d6d4d118f16ec8aa376b40cdd1594c0c41fee2dfcc866ffb1f9b8aefa04435f895b6d73e2faa89bff85ff14c133729b3789251e2a2cb38b8d5f9e6f8f0eef26fa1a17a8255ae9ef58fa4ba9bd8a8fde46ed5b0cfe9bfcbc20bddab37812fa44b0a1a99a6f10cf0e6bd931b6afe22af298483fb4d45bcce9fd79c5a9ce2eb3359cbbb4673e0feb2d1677f06a15f0938086daa9cdf2b08fef130bc793134369d4344d474f93c3c9eb877d0de0cfef351fb2589436de6247b51352ca913c3e774b70655ad48befb6e4d494a6e610cd968e8cc613339d789c16df +447797e2899b72a356ba55bf4df3acca6cdb1041eb477bd1834a9f9acbc340a294d729f2f97df3a610be0ff15edb9c6d5db41644b9874360140fc64f52aa03f0286c8a640670067a84e017926a70438db1bb361defee7317021425f8821def26d1efd77fc853b818545d055adc9284796e583c76e6fe74c9ac2587aa46aa8f8804f2feb5836cc4b3ababab8429a5783e17d5999f32242eb59ef30cd7adabc16d72dbdb097623047c98989f88d14eaf02a7212be16ec2d07981aaa99949ddf89ecd90333a77bc4e1988a82abf7c7caf3291,84e7658f462f68915cccc917b3f7a01f18e9e883cda1fa6c856e2d3b77c53b9e9c3841ef72295ce3418319e1daff2f58aa0ccf89c1107c459b505a46df314e670b51753cce3701822c4fae1f08ea93789fae1a8a61755fcc17f57c8c8e344208a299995a3c3ed6266756d17dfb70e67f27621a6af9ef926ed36f3cb169c9bfbb84df0b2c51602902c12f519ea23c3b4b8bb2b1241798f72a748c6ae4e439cf4fcf0fba17407d1366047b4a8ded133da17a5cc2bcd4e9803df6e5fc76a732ec64cd4c556dc97c8e8be5bad0fe5fe440e462da16fb1c7b18a97f58da4b5ea9ae8700a3e2d1325ebde9dbad97faad13db86d8f438588ad1e966e4a7dabd0ba4a3907dbebd2b2599718b885730bc1d7491a0e2fa468f29843ebe5e551e0cefd21f85568d6a77b8515ef42908360b57cad79b0004724dd117028bbceaadb514d45d76fce77fabfa64c11b9ac2bcb830f77c79fcb67a71d669bf7df2f3b7f5f9fafaa9571c1f2a03892e6bc576699806539af01c1a840d6b168686c5f0874bba3ede49b161719927b5e32e4f19982d6d32a0453877f08c592ebcf7aa323f78a66ee81ce5297e3b81a01ef64fc9454fbedc15c13a39f6ac8bb9a0ceb14e879181f72719f325b8ee60b3cf56ccfb42fff90cf1fc987f4acd7f052f137572809bddfc6d6d0a7f082f9868f3492924f8b9ba5d924c961a4b9282f312916100aed0966523c6 +9f2c18ade9b380c784e170fb763e9aa205f64303067eb1bcea93df5dac4bf5a2e00b78195f808df24fc76e26cb7be31dc35f0844cded1567bba29858cffc97fb29010331b01d6a3fb3159cc1b973d255da9843e34a0a4061cabdb9ed37f241bfabb3c20d32743f4026b59a4ccc385a2301f83c0b0a190b0f2d01acb8f0d41111e10f2f4e149379275599a52dc089b35fdd5234b0cfb7b6d8aebd563ca1fa653c5c021dfd6f5920e6f18bfafdbecbf0ab00281333ed50b9a999549c1c8f8c63d7626c48322e9791d5ff72294049bde91e73f8,83e17cb699843eaa6308f12943513ab4e4912203026f4653ef6711e5968cfd2cc135da5b4e87707cd732f538b904148b0a50bfdd3f72155d85a22936c2bd38bdbd2b13145ed531e85f2e0319b6022e8f2115e6fa99e8d92e8ab418a84aed36d574b82a282099db5fbbca069589a3ec308e76b03c8f6c3c5ce11df0d5635740384a22f9047c52f8c561a9848f0104167d8be0a4bc47bb8a6474180bbce3ee691147b74dc57fdf56420848decdf3fc5a06648c1c42a0172fa02df905f8318482f8189d5351751de1ed5a63512ae6a4c456fb7d55f83142cac479452879e71fc774c9bd9fea4560acb7786cf56fabbbd3881bea980061623645bcf1d20448acbf69fad1030008bfa7298fde63963386af5c2b230e9e367b78c4b172b142c7ef43022c866e975f71128719dcbc2663d892c6c4d888e66c67d9e767af52231b93da9ed7895b4b015d9d84623c3008871b95382ec788fb58222c4dd8834054c694722248f4a7d0a77e4bd2a5c418bb5229c0e2ec9ed3e03e79e3f824c2c6e1eecc72a13e341f46f3e30085b3a3fa0c55f59c56ce150537e305c37263aed88d8ef9bf0cdf9978636e03e7deb701345d9442725664fcb38edef923cc11cfb94ae152d0bae72e09a813a3c25002faba1dbcc0bf5102bc466d348e6027f5ad72ff9dc35d9c27c4c1e5dd39a647cf24269e6437fa114c74b6c1604b906c8f5aba1ae06b1bd9 +ae159f3fa33619002ae6bcce8cbbdd7d28e5ed9d61534595c4c9f43c402a9bb31f3b301cbfd4a43ce4c24cd5c9849cc6259eca90e2a79e01ffbac07ba0e147fa42676a1d668570e0396387b5bcd599e8e66aaed1b8a191c5a47547f61373021fa6deadcb55363d233c24440f2c73dbb519f7c9fa5a8962efd5f6252c0407f190dfefad707f3c7007d69ff36b8489a5b6b7c557e79dd4f50c06511f599f56c896b35c917b63ba35c6ff8092baf7d1658e77fc95d8a6a43eeb4c01f33f03877f92774be89c1114dd531c011e53a34dc248a2f0e6,2bef02aaab7478a7f4b6e3c22aa5a979bdba90ce91a42782e785ad6d06f82ef0017b54c408cd7027fb3057beab1da1b150e54194bdeeb87f65eaef6754ad8e00ec4b3f98ed2e64b85a3907b353d68614515a2a2d110a1e3249286377446c5339284b3c3ebbf8d841d49a34f7c79c935a69ce342569e173d87df08b332f45c42c9b318c6b02f4550058e2e0697f1e1e76dc0dc78f1deaf7a44bbb58152964da263f633f09fefe2c62f4a482209fc9715b0c424221f7bc81c67f438d920e7d9cef3d98bab3a27ab5e136439da3c5b8774c01e6906416f0d48675751174f09dcd2185ad246cdd351414b9b5591e500b29aabc046f048bbd5776da155b13a5970f26b393eacb372bd28b4934a6f252bc45f7217b29fd77a1deccb20b060c9858a98485671e02abc45dcf956255e52b5d21a59902a33425bd6853d56c18000f5d637cde2f109ec6d9fd3c5427e6bc2468a71cff6c57476fb1a850df304645c0e64f969a541611298e1b19f95ea628937c2adfd563fa309838ee470fa4810317177d61ed849b9fea54410c877b1c5c59625ae5314e823cbc1d3dd79bc1b6498e22f7d15328eb55d0823aa19f0922be4d6f545b8a2256ee141eebd18fd1644368ae4dde10482e8758e4865fc1845cb50155f574e177a3b0a446361801c2847fedb035ebdbc0c7a67d216a4eaa7e04862d6c09d3d04693df25bd2e3fe0a43ad80a9212da +3b8e97c5ffc2d6a40fa7de7fcefc90f3b12c940e7ab415321e29ee692dfac799b009c99dcddb708fce5a178c5c35ee2b8617143edc4c40b4d313661f49abdd93cea79d117518805496fe6acf292c4c2a1f76b403a97d7c399daf85b46ad84e16246c67d6836757bde336c290d5d401e6c1386ab32797af6bb251e9b2d8fe754c47482b72e0b394eab76916126fd68ea7d65eb93d59f5b4c5ac40f7c3b37e7f3694f29424c24af8c8f0ef59cd9dbf1d28e0e10f799a6f78cad1d45b9db3d7dee4a7059abe99182714983b9c9d44d7f5643596d4f3,824271a836fe959710453742e9d957981c2cfa672894c8a886f57f79608dd62fa4310fc0582528e15ca09c7a92d1084d45ed2a3020a9a2a10c2355fdf052ebaa1007b0c01e1ca19d95b1b05c03167923927ac26e33ed6a823c72d105a2b35085926bded8e59a49cbd7c606116bf560fac1364c7e5860a919167e844086d648bcbdb5f148cadeebe2ca2d2c34e9bde155dcc9cf99db22785d8f5327af41ba93aa1dd59a25f26615fd6eb6d57ff6475fe10beddecbd16ce84096cdc6ae5a6b7fad0bfdf6e8cfc974b082a3f0c6d8c5b25295a81bd2650446e7447951f7002fd2f417f4f553f2733d294ff90c629eef9faf0b39dc9cc4ea6b50d438369fec506bbc185d37dda2ef1c6e7079b09be893e6c1c62c24e6296c8cad9921dc182f23c027cb753212e3ee41c401396322a43f4800c48acda4a6198e40b76f0f6ce78354bcbcc33017fb30c33d7a90af566f4bd3bc2cbb08e800bbc7f309d749f9d2a352d9b284c358ff2109bd2c2ceec6e85bc16b83a7d666e582c3e3d39a6a92c196a11a397203f9c5613e2ecc8b2b91c229fe785040a17485b3dbad2b155c270ab2a510cda80e99e1a79be01c7262c217dde69d068753f9e44a3b035e10bb7aa53f397d7a1ec95342ddc973cdde9583b8348d832b976b255362240c5927d24a00050f970334aa404c531d93621516dab81e0fd89611c238d85454c6d77f1ab5d7b2c5bb +3434ec31b10fafdbfeec0dd6bd94e80f7ba9dca19ef075f7eb017512af66d6a4bcf7d16ba0819a1892a6372f9b35bcc7ca8155ee19e8428bc22d214856ed5fa9374c3c09bde169602cc219679f65a1566fc7316f4cc3b631a18fb4449fa6afa16a3db2bc4212eff539c67cf184680826535589c7111d73bffce431b4c40492e763d9279560aaa38eb2dc14a212d723f994a1fe656ff4dd14551ce4e7c621b2aa5604a10001b2878a897a28a08095c325e10a26d2fb1a75bfd64c250309bb55a44f23bbac0d5516a1c687d3b41ef2fbbf9cc56d4739,3768c48bf02d0db9aadafffbd228a4119ac6b7a815d9c74c714eac4b4ba4a062f7e9962b98c361a6b596838c671c95892fa4e82a95c60b9e8ba787158808c2c00bea3bed0ab4846fd57e638dd29b2ed47df5cd19699329626f6bddd14bb709417a972ae8020d05aadfe12034a98f9121a191926566c499c536b2505aebb97c9c49780e5e0007ee5596717e7be42d40db322bde5b7fd227b15987b599c71f1f20eb8be722ddbf3c76f9ea58b490eb11395befa02c259505f038b40e312b5af1519bb6da9e99e0214c2249a1e8c534d768a7db9ef46970a64c6e5f746b7c50670cc8e7765c4b55b26f3a53e4c3178f9599435aac9b96a203cd04988d1d95e1b5c29f632ecd66204b7bb2b7f776f2de67dcbf7f0a81ffa1cd18506b8fd9dbbbd354e3cd388f21edec9a4eb319c766eba3e1e8565b0ccef3698592e19081472004afe38fd8b17e6d1a5afed52ee44990598ce17e09ded65965a380e3452cce6d053f22f1e8cd24a76c74f6a69550c36b43890c7e239658b7da6da768869d3d96333be7422ab7c2b5d90b2c3973d666b4e399a2c5f014566e3ba919ad1964a148da2d35476b17799b82ea54ab6ca0baa098d0734081c7d52b7da8150ab3c1b8dd1174418700c46036e3918e5a21e70679d72952025fb52e9348509b4f10f412a8c8c11ef59d57a3a77c5462253c87475f38911ad2b08732dbddcc6d6a1b438896327d +7c7953d81c8d208fd1c97681d48f49dd003456de60475b84070ef4847c333b74575b1fc8d2a186964485a3b8634feaa3595aaa1a2f4595a7d6b6153563dee31bbac443c8a33eed6d5d956a980a68366c2527b550ee950250dfb691eacbd5d56ae14b970668be174c89df2fea43ae52f13142639c884fd62a3683c0c3792f0f24ab1318bcb27e21f4737fab62c77ea38bc8fd1cf41f7dab64c13febe7152bf5bb7ab5a78f5346d43cc741cb6f72b7b8980f268b68bf62abdfb1577a52438fe14b591498cc95f071228460c7c5d5ceb4a7bde588e7f21c,ea94da7fedf4b2296823eb57f0fd81468f4476e6f9035043f84ba952015af88e68233219e4d31d809a9b13a703ee6e99c230e1e037d777fdc6b4bce3f81ff2e7a15b9dad86f4816d1adf0f5c34e6ee2fec26353444efc417babe16c45bde0cb3b06abd19f354f5ba5298cd486dda4c6216d4826c3eb1b221c24a63be7dc751f8ab5458000c28937809359a4c49200949048156d48d537466effd085610f221454addd95519071c8a671eaafba7b6f894a3274599c76bf0964801fa38b601869d4c04ee9fc6ac7e54b4a6d8522912f5f3f2a7c6cbec20faf1e164388d932c5260763457d27525288be09ecdfaa1a892b99ad0da9fc1cb3d60b1b85dc953ce9b37711ae6bb82a1f96cf2479155bc3b328803d1eaf56ee0f02223bf167fb33e6e7190f41a121de59b9fe9790c8fbbc2b1b77add9c316d75a7f4dbdb52da2edd9d2356c6aa77a1cecb5330abc382a748c8972fbd78315dd2a4addf335d18d5c97547641f6b5abc4c5f166265d6934c77879a5b4cadd27a8a7f9f817acb1307a88970d29dd929d5b03a71d5b863a997c84d01b58dba539ccf6693b6004812727b254d22480bd50c5e07f162db59ec112e1dcff813bc266f704357202ad0723b373bdf49b1ee3d4e24d942d2e8f95e41ff496b9f4f535601980366fa79b662507caf88aace17ed6498e6ddb65c799ea698c7b8a49bf48021cf3b41e96225c43481b7c1 +7a6a4f4fdc59a1d223381ae5af498d74b7252ecf59e389e49130c7eaee626e7bd9897effd92017f4ccde66b0440462cdedfd352d8153e6a4c8d7a0812f701cc737b5178c2556f07111200eb627dbc299caa792dfa58f35935299fa3a3519e9b03166dffa159103ffa35e8577f7c0a86c6b46fe13db8e2cdd9dcfba85bdddcce0a7a8e155f81f712d8e9fe646153d3d22c811bd39f830433b2213dd46301941b59293fd0a33e2b63adbd95239bc01315c46fdb678875b3c81e053a40f581cfbec24a1404b1671a1b88a6d06120229518fb13a74ca0ac5ae,73e672e46b274d309899ff2c8186af4a9f42872135309c85621347c55edf8d3b5a7db51b0242618ab6d750ef75cf816c23a0ddfa21adc9976cf47a6957e914baab02e4c2dc809c0d2f67fe759e92d7755ce965ea4b4045d6172e1a0c749b4498795fc375aa6894118a1be2821a7878d25f597633cee5576b3d15e23ca7d664709ada20e3cc182d3004b102bdcf5566af522c5511049feccf80d4a6c21d7ccad1b24dddddda0dab0c2ff40e056d0a715a31dd35679fd4a4ca8bdd17293f7fd63319bb5b4abd3698d574ba5d36445e7fbda9eab049f6a8b277c0593949da84805036b776368566f622df37fd3d42efd06eb1d5c1c2847717f51d236d4317498514d95e1f4587669ce819de249ebc8d05d55e2c35dbbff3c017c7a8d55b1b184ecf72f288948027e2ac2cbe6589b351437e185a888ea5ae7219b9121e438ec3cb397133b75330b1418af085e7b42fb4c3b0f41a95bc6583ca7ded8a470e2cec237013df9cbb866454f276648b1dc0bfdc6bc5346348735764f19f08905f1d17fddd454be1b0e8df34879b4e7709bca044ad49a14f9ee971283f2a20cf6377c648e9d85599fce482697b8feb218418b1ef0979935e0f88ea5a2d38506955532a0b9da8ac1e7641622dca9f2e31642aa41db7fc73328590b69459741998ab90d796293999ba8a2111df20256d2fe50ac6b0bcfd5edd61c260512ec357e844596eff10 +d9faa14cebe9b7de551b6c0765409a33938562013b5e8e0e1e0a6418df7399d0a6a771fb81c3ca9bd3bb8e2951b0bc792525a294ebd1083688806fe5e7f1e17fd4e3a41d00c89e8fcf4a363caedb1acb558e3d562f1302b3d83bb886ed27b76033798131dab05b4217381eaaa7ba15ec820bb5c13b516dd640eaec5a27d05fdfca0f35b3a5312146806b4c0275bcd0aaa3b2017f346975db566f9b4d137f4ee10644c2a2da66deeca5342e236495c3c6280528bfd32e90af4cd9bb908f34012b52b4bc56d48cc8a6b59bab014988eabd12e1a0a1c2e170e7,bdf536d8b28e91f00b710decd109897b4e96882aef06337fe83b053eac20cc54523d246c41c9de3115870b82a1bb2eb2b1e02ccf7a4e607bcea3dcafca38f237dfc72d447cf8c544f541c1b53e7769b0cd6f2ec6d756891dfc818323cc1e1ad565f9130f59889798e418fe5feb176e77f5ff8f10c6acddbc59c8d084ab19da2ee5b737e537609bfa6f81df1846b033663d586ced1f4e86d99131d37ea5807881d2de749803e333af2c360f8ee9fd99a166f3fb8f0c50bef02df50ee615c08e88299a1f3cddf290a3bc9e4357f3d93d76ec5df462175edc5de421a6ba456ea7c42ecea24eec74011132c27fc63f1e969b474438222c7de33762f5377c197dde9afa9912900ff25373efc3a3d023e091350d0d269bcbff64ef35e2e1e1c300214c3671932cccad7c871fef4c969b34cf6e8b0881c2f7704b455f118e3bd37a74be89354d8c8dfcf649fa03701ae17b705a865c7ce9ed81e4fb374eb643294356eed48b3579315bcb32ce6c7f302ed5bcd68f2183110ef7ff60aefac6bfb8252bc66c0f4026dc37ebe4d9783ca7459394e929b8a83fd8378d9e097afcb0a7163f16e5579e8f5546898c4b521264caa006b3fccdf46ffadc1925752ef47da30f354d66f763aae46a0bfb385ffbe153641569e5e222f374f8e21ee3ef8d42663a4c424803e7966f2f0a1ea723a06c92af2393c8fa6711d89514c20b6170dca448fd27 +2d8427433d0c61f2d96cfe80cf1e932265a191365c3b61aaa3d6dcc039f6ba2ad52a6a8cc30fc10f705e6b7705105977fa496c1c708a277a124304f1fc40911e7441d1b5e77b951aad7b01fd5db1b377d165b05bbf898042e39660caf8b279fe5229d1a8db86c0999ed65e53d01ccbc4b43173ccf992b3a14586f6ba42f5fe30afa8ae40c5df29966f9346da5f8b35f16a1de3ab6de0f477d8d8660918060e88b9b9e9ca6a4207033b87a812dbf5544d39e4882010f82b6ce005f8e8ff6fe3c3806bc2b73c2b83afb704345629304f9f86358712e9fae3ca3e,b5becca38d903f2d87cfba9a80c51d4a0733674c78ef85bb236e8fa64bded9bdd01db1905e46f4210bb65bfd26965aa3adddc893087afb56089083c72f7649cd5987f449f9668ce66ed21514c05e7f09f52d84fde30e96353d48df0208415db51ea5d120a7182dc9458c471127253aca05d52fcc18b73ca1c3a5bcff4d3b6a41c450826397d9b38ac5c8e301c7a4077edcdb6a46b3979128f20b1080f7768edc1f651d1d122f97620bf2b4e9fd20189bb331ff9026ea58d7203ffc49e901fdb9233255f349a19aaeda9ea1e4f3c45ea9c54f41ce1625c0ef02db370909949bbdfbaea49fee3e3cbb74e1807f553a2000a3c753bc5d529b4e25154e2c86f755645304f2d18ed0e62b62c87931dbdad5d1cc9cbb64430d56afbe7d4c708ec992eaa8e13c5b3ce0343c30ae3f09ea3ed5c0c933a0c76f0fc18ffd4baf93bf95b2c1023dc87d4d641ebc6e1cea6e756f45fd2e58e0562f43389a1048a8bc12c8b3b19e05180597b5ca79b7531c6b8fcab88ac1aea686494b98e211c975b48b7157f985f25b168b93fea82218a227d0b89bef905a5f13eb37438831c2cd871fd8a36a4ea22879570b22c63b67bb60ec1e415f4654f6a3ea5acf74df41fe09de398351fdeee499cd98db89b320a58ee62f8569e10da4c68b9b61620e9d51a343d06ceb484ca532afa8ff141a4ed8eac22870d72f5e1085107781d2e422b3eecabf88fc +5e19d97887fcaac0387e22c6f803c34a3dacd2604172433f7a8a7a526ca4a2a1271ecfc5d5d7be5ac0d85d921095350dfc65997d443c21c8094e0a3fefd2961bcb94aed03291ae310ccda75d8ace4bc7d89e7d3e5d1650bda5d668b8b50bfc8e608e184f4d3a9a2badc4ff5f07e0c0bc8a9f2e0b2a26fd6d8c550008faaab75fd71af2a424bec9a7cd9d83fad4c8e9319115656a8717d3b523a68ff8004258b9990ed362308461804ba3e3a7e92d8f2ffae5c2fba55ba5a3c27c0a2f71bd711d2fe1799c2adb31b200035481e9ee5c4adf2ab9c0fa50b23975cf,ec7a09a04ec20de5ee683681d42177715f85562df50177cbe122ddfb9c5e81ee349d3e2a18726be2e46287759d6d28398851ed22afa78bb4b3a41c76f7006f785887d2d030428ed6ecf7decbe20bf09b1a321b96616f9d1f4ecc90bc2fed1c30c18baa23455303074f10aba5bdb596f3bb5bc1faa89589a92aa95db198915c1fec3420d6a4a5e79808012de71b41cc7a77ab96821b5bd1e822a06e698101e7e4de1e5e7ccf9093992c0b62419a660e1ac4fee0b1d0c4735416c18570697220adbbca56289c2475e17ac6fa89e96aaaa8d5f174d6d9a3edb4a6bee4b606d0b789f942a1f8d5baa758af6f6dfbbe59686ff6a8d625302931c34c8d908bbb0c5269adc95715f90259384a0f88b6baa1fdaa5bd57f5feb2fe0b968120aa0206f911d211c2d77cc465bb6e1839c0271cf55f12658a1fd1f2f4538bf7e9fd784e4c12ae95a5a2967d2847eabe150f2e113d8542b9a7cad092b3d86ad4219632c5f3740eee45aaca529d83f0bf3cd656384848ad577ce603d31b70c40a55db571868c1f5b7aba3cf853cb0ed682bde964c3051e7e81d4454906de1966491e1caf7073035268311bc1cd3590656b1321d8d6885d15c0bf840bb40c0fa4d127878e422dfca7c3bbe8ca4447d5228f83e453c94002c43f5d87e989627f89cf5b6057de6d86d2a82ed982035519f47807ce6c61ddcd9160ff0ddb3bfe08ed966c08317e4eb5 +c8e976ab4638909387ce3b8d4e510c3230e5690e02c45093b1d297910abc481e56eea0f296f98379dfc9080af69e73b2399d1c143bee80ae1328162ce1ba7f6a8374679b20aacd380eb4e61382c99998704d62701afa914f9a2705cdb065885f50d086c3eb5753700c387118bb142f3e6da1e988dfb31ac75d7368931e45d1391a274b22f83ceb072f9bcabc0b216685bfd789f5023971024b1878a205442522f9ea7d8797a4102a3df41703768251fd5e017c85d1200a464118aa35654e7ca39f3c375b8ef8cbe7534dbc64bc20befb417cf60ec92f63d9ee7397,e65d36fd64b13db62cdf8640e6a217cd4952be909be1119b04ceb6c8a71550e953be0ace373231964d61b89a575af582a66d7bb1441ea399d59a7c585d762433d64f44c53dd9b8fe8f357a26dc66e04b15b9ffd0fc7c1b4ed07db3e4c80a3527602dd16bab1f8ed85a821056f97fe2912411f7cf6bdb9070997ca4d5bc16b0b26159f7f3cfac7252241c079633cd8287cc41fb3f7cb6185fccee1e3467e90788b9e943c936c1c82115eb5b5a1af3fc6b0104959e98e0ebb0f72fa02fa5745380952a6c2eb0ab84cee35661f34cf0de4e6985baeffaf545d48adf065f13b9272098d5906da5c8b688a3c922aa74d840dd9c1ee31becabc417ea07e2c45a90e1afe588e65109c8da674533d506e17eba1abbc25dd84cc79a4ca0e15013d9d014dacc5f696a7becac187f0a7b233d59a7ba6821b3edc71c8073f2ee0caa8c9f96032aee6d9fbc15bed15e879d0f497bb8de468b4050fddd15c97af4413c4cf60859ea04103a13704cc9b7076359e28a1b90949166f5b11055b415ec8b9a552ac94e4d1f45403af5ebac0762d1ed0967ae032db30dffc8132942f45626c7e50bbf80ddfab80103e423bf00ac575194489be02624bed16c4d1fdcd0011d0c64faf6bb6feb21e0f0653f05d8fb69cf891347dff0a39136bb5d4d20101cb3ee900b508a136185fdd0ff54fefbcc6c069e1a433742d51129a1b556cbcdb8a7e76dc43b5a +7145fa124b7429a1fc2231237a949ba7201bcc1822d3272de005b682398196c25f7e5cc2f289fbf44415f699cb7fe6757791b1443410234ae061edf623359e2b4e32c19bf88450432dd01caa5eb16a1dc378f391ca5e3c4e5f356728bddd4975db7c890da8bbc84cc73ff244394d0d48954978765e4a00b593f70f2ca082673a261ed88dbcef1127728d8cd89bc2c597e9102ced6010f65fa75a14ebe467fa57ce3bd4948b6867d74a9df5c0ec6f530cbf2ee61ce6f06bc8f2864dff5583776b31df8c7ffcb61428a56bf7bd37188b4a5123bbf338393af46eda85e6,2b6d5b37da462a050946d447375ea4dec9309ec30fb6c7fa68f67aeb7b6e1921a74ff35ed31560e695499f2a5afce3e900e1c6f199373951a406a8f57dedda8c9b9d2038e787cc54b62cbd97cd4247ed933de1bd68fa670158701f088c6e785e8dde870306b80decad2dbc40a8c2f02630499292a19339e4d63351ee5a44e36fea062d2253674f5531b1c51faf694a0e963859b26a11ce890a3e5c03815bac2ccc43aac806941befa00cc6bce72ff59f60c85b5096bd7e9d4b60d23a050d3b4333a26b0cb6b69e62f33e87e65fc1562e5d1384f439d717a940e2a291897a4eb3f941397eaffcf4ec738dc643e72721b5662f698bdd502ed1a82d924bc0d780a049f7d965bb585d0f674a06fe03f0b18ae56b7aea705328072e4a374b7b9715882bd73c34e99656ec073b653c2608a04d84adfb4607b62b4b504e43f07f9d4555935e3d432ddff23d9aafc87c743c1bf8a91ea4671a03e5461cf13e76e3c1779cd97da4055eab8e705556eb7538539fc6ffc1638e702ca2a60f0506693d54a35f7af6fe0773a67767865b3f1397674eff365b3849d261e29b160cdc91368899867689e599a85572464fd895cba2bfb4aba496f395e7950e064ca509ab8d8491bb193661e250f35d5e2af12e1f981970390f456953a8ffdf72bf998d0fd7393c33fcbace063c0d63f91e741f95fd542c6c509036824b2784f394e27f6bce88b1fc +7fdfadcc9d29bad23ae038c6c65cda1aef757221b8872ed3d75ff8df7da0627d266e224e812c39f7983e4558bfd0a1f2bef3feb56ba09120ef762917b9c093867948547aee98600d10d87b20106878a8d22c64378bf634f7f75900c03986b077b0bf8b740a82447b61b99fee5376c5eb6680ec9e3088f0bdd0c56883413d60c1357d3c811950e5890e7600103c916341b80c743c6a852b7b4fb60c3ba21f3bc15b8382437a68454779cf3cd7f9f90ccc8ef28d0b706535b1e4108eb5627bb45d719cb046839aee311ca1abdc8319e050d67972cb35a6b1601b25dbf487,e8b51670e0d27d9f7989447a97c07d8d142804f876e701a49e6c4a0ee149938881900637ac7329eeab1f1e032ddc2194b2417856401060eaf019ad4d9da3bc702bd70be5fd9d9c9b86f4044ac441560e887ae21e3c3ef3f05e38c7f8b078d3a66c6fc8b98e33ea8ad1d029433626ceae2468e3034cb44326c89d7a7188a5272c116d3783fa16af98ba3070ac96c07e459f1127304483a2394837ee1a10020a79f8519795895f4786f5a15134dd44fcbd9bd1efd0ebee9cd991001fccb6a92e490793b6f16471670e1d69f9ce49020c1e8e3b453cdc1a8498d8c510b8d21fa00239088e065b742c51257766f19e17b397362dec9453f50328c5e14bf800396a0a3a1a957b29cb1c8fa059bde39b995d45900b56e2c8cd2f4e8bac756350de38293d1fe4436489d9b23860e1ad35e2411d0210ddd1c3d8994635f29674a64aa5f92b2088f3e7b4fec26485d93483af96fc4c5fc9f34254e014ddbab361dc55e0f5019ba9ff8ed7b104e09122a80be3bd29a3e4c4c26a7d2b08f8915087d9a6a2e7888710a5b2b87448b81f889830e26e6813385b761fe97e3729ad04bcf08f536a152039f04c283dd36b9544c4d6cba97e26b61e034259caaaadce508343dafbd4dbcbce25957406b22e13dbbbb186c18dcbd5b8aa18c86d8660698af26997726fb7af26c397df8608708ad5d6524001634575a2f1070a5ef72d327e91c7184b4a +988638219fd3095421f826f56e4f09e356296b628c3ce6930c9f2e758fd1a80c8273f2f61e4daae65c4f110d3e7ca0965ac7d24e34c0dc4ba2d6ff0bf5bbe93b3585f354d7543cb542a1aa54674d375077f2d360a8f4d42f3db131c3b7ab7306267ba107659864a90c8c909460a73621d1f5d9d3fd95beb19b23db1cb6c0d0fba91d36891529b8bd8263caa1bab56a4affaed44962df096d8d5b1eb845ef31188b3e10f1af811a13f156beb7a288aae593ebd1471b624aa1a7c6adf01e2200b3d72d88a3aed3100c88231e41efc376906f0b580dc895f080fda5741db1cb,120ca7e361a65a0985563012cb908028105abdbcb51cd8eaca141662b0c184e9b2d6dfcdaded7d7cbd42455b3f5a9f15596d2bace19510256275209cc9899a87c6224df8e919458ea46a35cbc8d66a488069703cbbdeea6d767cc315fbf518f7b0a0154448f8d7c56da1b116730a76954c288b4891b56fed41b2efde6c27dd4b3de9bcc25a2a901d4c87975e82372af173982601b605d845dee7bac94eb410b369bbbde500d458f9f8a3933d3bcadbcc85ea05acefc9a7a77e26e28e82db157ec1cb2c99c272f33b1b2685533cd988dbdb6e850bd3c71e0589a165fc236a65b1f1db750a3fdc1392a76e7714469b47e20d8946af7d68ef9b16109178f662320d60a0d843efcc5b1e56cf6d8fa8b649ddc28e58983abac7b2ce019aa0e07b387d8ba46cd3faf47b522d766971ba603c84684bb094e38d82ebcb108ce0353e38fa0a4d7294f7b7baf745f3e036ec0231f6a194585ff7ce1c792e4879bb44e4ad65717952b080beaae1fd0cb8ae87e6f130f91bb06f95e54fa924e2d0c42921d7ca9965ae70a3587f12017cf1e4cb70d1704a51efe27dfdd919c7fe70f967cf7044c62d6ff232b6680278e9498f247ad92d5e9491db0f00d583c019142a8eb63678231e1273f0a263c57b98e0af650fa207d4b21650417dddb40830f89e15c85e934fc745aad87ba35dc16b7a82cc97926494bcc1feb4ed43d75f518acc22d208d3 +5aab62756d307a669d146aba988d9074c5a159b3de85151a819b117ca1ff6597f6156e80fdd28c9c3176835164d37da7da11d94e09add770b68a6e081cd22ca0c004bfe7cd283bf43a588da91f509b27a6584c474a4a2f3ee0f1f56447379240a5ab1fb77fdca49b305f07ba86b62756fb9efb4fc225c86845f026ea542076b91a0bc2cdd136e122c659be259d98e5841df4c2f60330d4d8cdee7bf1a0a244524eecc68ff2aef5bf0069c9e87a11c6e519de1a4062a10c83837388f7ef58598a3846f49d499682b683c4a062b421594fafbc1383c943ba83bdef515efcf10d,f0715de35692fd70123dc68368d0feec06a0c74cf8adb05ddc255487b1a8d4d1213e9eabaf41f1161719d065d794b750f84be32a3234b4d536460d5520688a5a79a17a4ba8987fcb61bf7daa8b547bf5c1ce36b56a73257dbbf1babb64f249bdceb67ba1c888370a963dfd6b6a2ade2cefd14c3252cb3758520f0c65f4524682772499463ae1a341800183aa60efa05118a28201744f7ba0b0a3928dd7c0263fd264b7cd7b2e2e09b322bfcea8eed04275795be7c0f00e113827370d051d50269580300005ac1288fea6cd9ae9f4f37ce0f8ace8bf3ebe1d7056255954c761931d3c42ed62f7f1ce1b945cdecc0a74322d7f64d6004ff21684149307288b448e45433475b1ea1314b00f1fc450089a9d1f7710c6d7652ecf654f3b487d0283d4d8a28efb5066c4250d5ad698e15dba88e925e4de99b69bc383ac8045b7f1022add39d443546ae0924f13f4896096dfdf37ca72207987c4a7705a7abe724b7fa10c909f3925449f010d61e207add95219071aceedb9b9dced32a9e123561d6082d46aefae07ee1bd132765e3e513c66501b387ab2ee09a04ae63e25808517afea3e051169cfd2fff8c5858e2d9623897c9e85175ac5a86394cd0a32a0a62a8f5d6cccbf493daa43f78362bbca40adf733f871e0c00998d9bfd6880656666cd7be4fe9892c61dcd5cd23a5e4277eee8b4afd29b69bba55660a217112ff6e3456b1 +47b8216aa0fbb5d67966f2e82c17c07aa2d6327e96fcd83e3de7333689f3ee79994a1bf45082c4d725ed8d41205cb5bcdf5c341f77facb1da46a5b9b2cbc49eadf786bcd881f371a95fa17df73f606519aea0ff79d5a11427b98ee7f13a5c00637e2854134691059839121fea9abe2cd1bcbbbf27c74caf3678e05bfb1c949897ea01f56ffa4dafbe8644611685c617a3206c7a7036e4ac816799f693dafe7f19f303ce4eba09d21e03610201bfc665b72400a547a1e00fa9b7ad8d84f84b34aef118515e74def11b9188bd1e1f97d9a12c30132ec2806339bdadacda2fd8b78,2e27811d2e132c58a1d053ccfaaa2813b620554c49c31cf208964cfa18a3eb5724d4ebb37e37398ce9201ca33c5f6a9409f262afc5ebf0970be0618ec7e56c15c13b2f0270ab5a9536fadeb84eb2d934b989354d47fcd1dbfb40fd96485fad8df7c6e62a60866f154901e4427c2b5e6059c76224589a6be352673430740903e4225c1379561ae5d361b67f3acaca9c7633cccd2601ed278b5c7d6a378d713bc549e2797ca34fcb0a00e649ac3a4b59001e5d8e1e2785433ed65c76f4fec4b0579059dd4da49bbe678279f534b84a280f89dfbda09e09c073ea11afcafd5685a714ec31e8f86b49d2c97e6a2a66b4f2aa76d9df2d27cfacc2423aa18492e2f4ef6a9f8971627839375307f45a8b26133ff1d02f100ef05df168a2be02f0c17ccb90f23a0fbc5f536c410923b154e81a6557935e2572165a7e39f64f57e2b8ced8d2cd1025edd5dea6dbdacc8860bd6a0c598eef14619d4bc11b6aeaeb5d10bff3f9d5b20b7f2ab8254db0c1765a10a125e98d762851f05261dae06b224e2076112a62b4c3f3a56074e01cb3dd264cb1f4b58eff2a1c9acc4764a68680a40fcacc719286684fe0a742f13b5bdac8aabfac68174c7e153796c240279b0acc719158d1fe4f78ec3d47ea8b8d3a1b3a6842970fd439c09096e8b032e551dbdfd0ef86da0537f4e72f78368b319b6db735affea80633f2f8eb9d26c8cfc321c7c346f7 +8cff1f67fe53c098896d9136389bd8881816ccab34862bb67a656e3d98896f3ce6ffd4da73975809fcdf9666760d6e561c55238b205d8049c1cedeef374d1735daa533147bfa960b2cce4a4f254176bb4d1bd1e89654432b8dbe1a135c42115b394b024856a2a83dc85d6782be4b444239567ccec4b184d4548eae3ff6a192f343292ba2e32a0f267f31cc26719eb85245d415fb897ac2da433ee91a99424c9d7f1766a44171d1651001c38fc79294accc68ceb5665d36218454d3ba169ae058a831338c17743603f81ee173bfc0927464f9bd728dee94c6aeab7aae6ee3a627e8,76a498f8112b364e0db20cb4e7aeaa1c96400a3e1eb1a24ed865203c4a583ce5ca10b47e725c362696f0ade5fd75058d6882b435849030868486318e566be51b6d985a76b36d98d893a04cc715cd26c412bb4ccdc0db6d1b13cc071fbfc83f114c72d3b54cbcfe57243189251a7c0608bcaa1409b243f2652cf5cc4386cf4551d2955f371591c0a04cbfda2736a514e773b5ee8c5cfd820a7542cba65245f729e650d085b3f60ebce2cec0d8c952add51a664788b3197952e7d0d9fdcca35ee118bc0144688621dfb373c2bc1de7ca7bc751d539276a119ecae8ae2987e018e9fd70c632f2a54701302c12b971e0ee5308378669ea10d0e9a7b955be1c1bb9e7ff6857c39eb6b074c061f28d1979b33ab8d2f81078325c9f7966806d2cb62903fbaf4c12ac4aa15f010034080571bee9e863c1cb89cb01b86643db1d1a6c224934a79d969616cc3f9c1382b81eb83a8cfa2cdf20bb03cb67ddafcf9cd827d76a0661b85e82664bdced0ef34d2f807ad956724ea2cbc511632d2c9e9f8e4fd71e127d581cbbb39782be58902927b0c0d922493255f805c5cc78a96aee84ed086aa93f8fbf7282d78daa0b9c126216bd929ea4a4e53f78088ca154e9a63b3227a25705532f699606ee73a5fce6e6c94def1324ff2e0edf6807700ded2f088e2d77b7f690e646e7a73ca05febb2634d862d7b21ae2acfe3a5b3dc6ed1071b0f3e5e +eacd07971cff9b9939903f8c1d8cbb5d4db1b548a85d04e037514a583604e787f32992bf2111b97ac5e8a938233552731321522ab5e8583561260b7d13ebeef785b23a41fd8576a6da764a8ed6d822d4957a545d5244756c18aa80e1aad4d1f9c20d259dee1711e2cc8fd013169fb7cc4ce38b362f8e0936ae9198b7e838dcea4f7a5b9429bb3f6bbcf2dc92565e3676c1c5e6eb3dd2a0f86aa23edd3d0891f197447692794b3dfa269611ad97f72b795602b4fdb198f3fd3eb41b415064256e345e8d8c51c555dc8a21904a9b0f1ad0effab7786aac2da3b196507e9f33ca356427,760dd76e50c13b411d04ed9d81078f0e5b9fc5df9523f7c2aeeb418ca328e047071852fc5ec2f96c2133c4aa7c68306ffd70a782490f92812e04a3343b9502c14b781a4800a8928956ea457a3cfb94a63bb4407524dccdb6136c5228fc1cd426f75e1701f0ab7d7ada8079e4761fcc4dcc72155b4b27370a7eb6a5e3995a729ad8d8b5356a084b0678b114078b0d43c657a23f09d0862d606a8a485fed68ebbbc63a126fbabdf36151d5a39bf17632b3d967983fd62e19c944400f7a68393603243ce499947f3edce7f30206bcbff83615dbab7642c5d82de050d67c93b836b554949b96947b7d1534e0755859adb7ba5ac9f519b18c3aa66300acf9a26849665810250004529334169211624c6a63350b392f6dc6753d59a03997180980ee0e742388a2bdfca619524dd16250800918e95cab914ebbfb12232f1687be0b46426e126787e394a91f775fa91ee1c5d57ab1ffa151d554b79de8ee9a937aaf5c98497aaa726cf01a9dbce6e57a07f8d098b2844ecec9856d3d8b189d016b34c4ab61aa3191b3e4c2b44f6bcc9444e6093a56545230fcfad19a2cb124abf524689f4f665f2e84d10a2c93b8ca412b6d280c2680e946a6c9225db6f97a86fa3415a84d52ff3a0a15dc7ce97738b0b2dc1430bd56bb71ab89ee108b5bdb706c7919d5ec67c487d9c8dfa6d2333c59248104f33f4c162a5156a3a666948e3a6da13d0d +23ac4e9a42c6ef45c3336ce6dfc2ff7de8884cd23dc912fef0f7756c09d335c189f3ad3a23697abda851a81881a0c8ccafc980ab2c702564c2be15fe4c4b9f10dfb2248d0d0cb2e2887fd4598a1d4acda897944a2ffc580ff92719c95cf2aa42dc584674cb5a9bc5765b9d6ddf5789791d15f8dd925aa12bffafbce60827b490bb7df3dda6f2a143c8bf96abc903d83d59a791e2d62814a89b8080a28060568cf24a80ae61179fe84e0ffad00388178cb6a617d37efd54cc01970a4a41d1a8d3ddce46edbba4ab7c90ad565398d376f431189ce8c1c33e132feae6a8cd17a61c630012,76bbac5e72bfa9b5952d4fa8313c2c8995f1b762b0855ea28417a04cdf1bc9a72038014f4d1af37d6338e217daab8993cfc222510a869403dc46b5d798646bb76abf4006f31be334df8c6da07ab8c6e6523dcab9367e6b747600e785ea0bd3480a07d7ad1304019c0f00f90b2a650599b0b416655ae1b1d8facbce38d0dab5a6375144790b0f7e8c61b4a98297c78ee6fca19051dcf60b4eb1f6fc59dfbc5bd1b2ed6b9c72d7b5dc33e8d13566bc67013cc7114ead63d25eccad196a5c258de23d82e8cb2ba6753c9bc598a54f921ca924750a45353bd44593415aadd251b604457a3caf3da681c0fbf43e4f3814aead086a72a4787914fd08bc727a69ca5646ac709b9e0df5b56c8ff82edbe3c23218a1d5382aed38b3bf54ebfa6015c388c8e92d57ccb97fe8171e1d24360311d5ed53545b541e7f24ccca9c5b520feca2547ed6e1889a05eba1c0831d8ba9162b38491287b46bbcde9bd2198eeda5fd0869a83543713bd294d84371f1932e3eb370e30210fdbc2853f27372df095f71a34fa4bb0e1fdda682170a29f9e29c2bcf946cd2865865a70dac22a81bc387b6a06840230ff8790b6bf1953db882dacb6a9208709c121af24a6436b1a5312b3e6d77892fff968138dec8b933e3022b4141a4b4605524c95468cd89aa56bf577e16a365531434fb98fd8399dddb58c0e5ce66c8a8955ae1ed8eae5251026861c825a6 +0172df732282c9d488669c358e3492260cbe91c95cfbc1e3fea6c4b0ec129b45f242ace09f152fc6234e1bee8aab8cd56e8b486e1dcba9c05407c2f95da8d8f1c0af78ee2ed82a3a79ec0cb0709396ee62aadb84f8a4ee8a7ccca3c1ee84e302a09ea802204afecf04097e67d0f8e8a9d2651126c0a598a37081e42d168b0ae8a71951c524259e4e2054e535b779679bdade566fe55700858618e626b4a0faf895bcce9011504a49e05fd56127eae3d1f8917afb548ecadabda1020111fec9314c413498a360b08640549a22cb23c731ace743252a8227a0d2689d4c6001606678dfb921,1e7cde630a92bd14100ae80073cce0301aa6566dfec50400147a9dfbe921bf35b110bc9c0b7ad6cfb50785c63881be1569495092866bce9ae303b3719b14a47dea8fa19cad3015d320c678cbd2b7488e71180d967bbacfca686eff014b7eed274f678cc43825e79c81269f99d1b824d913f8acba4dabf5441a29c2e769b44bbe9954a7444bfa438ef1ba2b6a3db11e11151a1736bb8ca22494d4a3d126f100a41d49e6114cd66cb44b80c2e3308a0b551b692bc5b693ba9634e219e0ee8e7f28df196d8c517f9d71a58f1d945e03fc25426e13612ef4158c17590922cd6a8de677398690a8a1816c6a01b162fe6e5f0f502314c542fb568f12ca86f5ca6da7b36255451360ca352c05d10c293a8a35417991efe965ba6f5bb845be9e8c021b2b4af2ae50200c60b7ba42fb5d3147615339fd71343662090f2e7fad4cd0ac0ed49c3fc8685116a8d51d4183ccc9f39b401d47cde7ef7eea63fc218c96edef7190a2529126633a7f3eee421478d66ce367fdfda6a9a60aca3b288c6462bdff20dbf78a3dd29e73d1a3e8f3fd824a3616722ee0b87a9e393ca89159ea8169dca108f8e2feb35c9372ec3b9112e534edf733397b7585051257a564b844c07db5dcf56403e59eab6f56759d50c47779dd900849c94dcdaac1af51048098bf95a0b9eda23df0520a3dbd86a0b59cee20822efdb9dba6d272a7cd5cc95498e340062539 +3875b9240cf3e0a8b59c658540f26a701cf188496e2c2174788b126fd29402d6a75453ba0635284d08835f40051a2a9683dc92afb9383719191231170379ba6f4adc816fecbb0f9c446b785bf520796841e58878b73c58d3ebb097ce4761fdeabe15de2f319dfbaf1742cdeb389559c788131a6793e193856661376c81ce9568da19aa6925b47ffd77a43c7a0e758c37d69254909ff0fbd415ef8eb937bcd49f91468b49974c07dc819abd67395db0e05874ff83dddab895344abd0e7111b2df9e58d76d85ad98106b36295826be04d435615595605e4b4bb824b33c4afeb5e7bb0d19f909,9576636b4f4d13a576b2dd4fbb3092f358e7cce04cdda4f83a10a8b5d35b5ee034543098d9a063fac9cd26ca46837c5cb6e96f7596d4f07ea6fdd8af8b59f9e86611f1514d5dc0b7a4216c69b9c85366059bed3ea5ced38a16e4d6945c7c9539e062de51fa2dee1c666db1916369fa6bc0d7a2811ed1beeab61397b8a9faf224fb4acd7f8d9c7a8513c8a93d924fb4ee027821ab6de0415af9bac5cf3d5cb7075be5a6d410f12a9bbc96bf3ff254812c48423f383e4d74ffb5edd7ad34c6e0d64bbe7f45288a49f5de9ac14f317bd4862e1f25e338a0309739c8ddd27839b8ab3b04b9fbce65ceaab460dab0b969222250fcaad072c445d472bf251c4911c7d5d2b7d41c9d2840826e0ba6786309db6e8ec0fd94031e2ddfbb0d880cb780772a93c0b4c32377c3c8ce97c73412f5c3e1cc72aebc050737495c703459b9231c05477cd9a5df1662f5fc883a91b42ed7adabe6cb1ee654fe9e616b40ce9035cd3b91a05e050cb2558645a0939c536a2ef3b5c8353729c3ee238c5c88db75c05db6b2febe0a598f937ca7ad4faf495a10cb3c3b9e754a570bfa5e723b8c0cc107f0edff76ce07a2cf3acec4bb44e11c633bdbf89e5501d6001206d457962aa2f57c9c2f3fcdd1b76ace292728f21a6addad4551970b1532bd3e46d9a5160b1a55cf4be18fa15adf0db055bbb21abd9a5b0fbc474ced2b8787732fcbbb231475f29f +747cc1a59fefba94a9c75ba866c30dc5c1cb0c0f8e9361d98484956dd5d1a40f6184afbe3dac9f76028d1caeccfbf69199c6ce2b4c092a3f4d2a56fe5a33a00757f4d7dee5dfb0524311a97ae0668a47971b95766e2f6dd48c3f57841f91f04a00ad5ea70f2d479a2620dc5cd78eaab3a3b011719b7e78d19ddf70d9423798af77517ebc55392fcd01fc600d8d466b9e7a7a85bf33f9cc5419e9bd874ddfd60981150ddaf8d7febaa4374f0872a5628d318000311e2f5655365ad4d407c20e5c04df17a222e7deec79c5ab1116d8572f91cd06e1ccc7ced53736fc867fd49ecebe6bf8082e8a,68618f4b2868634d8ffd3483fa4aa9c200b43fe87d59107bac648665613805242b1cbb4db2761d4cbea5337e5e07005b5b4e8c80038019ddec76395ba981d36823522698c98b80d313a7b6110a0bde7ed5e9268fa655b8dcc2c762510ff03506dc1ca8769b372f07d0e325786fb1c58206578e600e9093aa84468f01a2df258e670959966b419ba5d4b6063c997822e073717565c6f9b4777e186a0bd6d72f65bb3cca7e82601f25667fa0186208f7988611a76bc4d116ab3944d6797828fc5fcf17adfa99d959f5013fb2516a2d3dc05508e9c28ab5f9e0770d0db2fbf9cd3c8ab90f255b465a9b724d90c25e1eef81b839a971dd84c4d610e00ed858c78b2fc6147cb6b1266adfac5fecda9a6f78b31ae35be6369c3e8290e6f297b7fdb35bbd59f0bfe16146cf3a5a75297ffd5d02685c39ed9394adfd3c7c814ae86eb652d152b7ae980b328f3e16f883c7c6df6672ea1ea6e08c61505e65852a1be11decb86d8386079e17e72ef8fa38b69ec192c0b90622150a5c43584c3159cf61189138089653ae6453d24f464d96a9bd0cfdef7c1c9d92d46e854d644982bdbf0e5be7c38edf469ad3c0ebae549322bf271590e38ae16a1fabda49ad6bf8b1218fd9072c25027ab31787b9f38529156113a82a8dd27bd22cfa719b3ab0d31297a0de9af901a443057d34cdc11747d6576b7602d7d6df58c292a69b4549ecb1518a02 +57af971fccaec97435dc2ec9ef0429bcedc6b647729ea168858a6e49ac1071e706f4a5a645ca14e8c7746d65511620682c906c8b86ec901f3dded4167b3f00b06cbfac6aee3728051b3e5ff10b4f9ed8bd0b8da94303c833755b3ca3aeddf0b54bc8d6632138b5d25bab03d17b3458a9d782108006f5bb7de75b5c0ba854b423d8bb801e701e99dc4feaad59bc1c7112453b04d33ea3635639fb802c73c2b71d58a56bbd671b18fe34ed2e3dca38827d63fdb1d4fb3285405004b2b3e26081a8ff08cd6d2b08f8e7b7e90a2ab1ed7a41b1d0128522c2f8bff56a7fe67969422ce839a9d4608f03,9a3cda57019548e6a68d89cdebdf96557daacac29c5ef8532dca123231d0226d0d7f62042d70bc225cbb1ed8902d8e6be75b2b37504990471fd01f4c656e6f6b77961c753a780d91fe03598fa2d5f60b772b34918db836d2cd278fb41b223a6d1f25c91a4b98b64ba3eb32dfa5dc5e1cc5ba1467f287d56ce98478beee91087daca1e2fe0adca38883c9a73699ac98aadb5c4b087719eba775b0abb1b0e5acb4f79f0f75dcb2e7e25ca22c06b1629ec1ca989ad1f1f12c4580e43da76b2b58345b61085553a827ba0d3954b0befca8394b9d19022d33df6978148234cd16c7491075517081261e9af8fe42c66a7580132ea3307af3372489d8efe01c5ae579a92399b844266d13804b887538d70d2a4eae3c65e09f6bf877113992c42d490456cec22ff8c60b0c7d2517a49d2822cb2b2ab6bef74f87ce134f78141157d0498f267c94123e1606d4ce1ae8d7847cf9fb23d8a11901292cf36fb975fdf34aa0ce10b851e116ee7129b06d3ef10cc1aba6f761ee2f1e4b497da11fca3e844a8dd1a6129db5b3f863378d3488ce7e208241946bac2e4aafc912cc46e5a6451832a2a43176e06dbd49e9d379a69e6f08081f609b7207c5cd391445e10d10ff2b99e0d672c19cbd9f5ffc6ca46ad9536973368a747a7a2f23aade81a43e49d2e9cced3f64ca24c012cf3a306c40ecf36843317be8d29803a40f6f71e7e9229154b0c4 +04e16dedc1227902baaf332d3d08923601bdd64f573faa1bb7201918cfe16b1e10151dae875da0c0d63c59c3dd050c4c6a874011b018421afc4623ab0381831b2da2a8ba42c96e4f70864ac44e106f94311051e74c77c1291bf5db9539e69567bf6a11cf6932bbbad33f8946bf5814c066d851633d1a513510039b349939bfd42b858c21827c8ff05f1d09b1b0765dc78a135b5ca4dfba0801bcaddfa175623c8b647eacfb4444b85a44f73890607d06d507a4f8393658788669f6ef4deb58d08c50ca0756d5e2f49d1a7ad73e0f0b3d3b5f090acf622b1878c59133e4a848e05153592ea81c6fbf,2dec1b61a2977a54ff13cefc08f9ec6f11be80e7f5b77c4ccf2692450ce86c9d57ea58cb34ab2995a6193935dde84bfd62283a881cedbf685ca26a8a727252223cd6e7bb8a3c7751b8721ed16d1209611803778df77c6a005e1a05aab97f6205e0c1c6b339f8d8346a84c6a6d86efeb17b6f8c8e30960dadba3dddb860f46d2718c7307c55b65aef1082b98e407f56b633a16578528b8211254fa6af384af0ee36ba49638386494e347e961d6d65ccdf2d5d221ac54f6a2f6c4eab62b7b55e26192a2e223bb053558a6c3646355f3686dd1d3712406677f183e94cf822d0afa9416815c14bab7f5c5b4e44f364446e08464370e60a436653b2dd29e60562712136940df4ae19617774776f0784f7e8ac600bcf8359e02b070c0480f372dfd69df9c33ecd3484678087087c7dad64e160b32a0372318aff1668f5a0b03c940c384239994f546fee94e3ed0fb8ac259002d09c3110806ffb56419cbdc76f28c8f828db0aec39a573a903a49c0c9f77f0504b9c8cbeca83b6d3a7af24631f7e4b99e9b42ee201cda0ac1ffb79ac24f3516d766b0f71e1efef8e6cbe38c24d86b83388d6d3c2f9bd6af94b8a56b6b5cd53af40837fecc5481f9af1fe216852c281e068f0891908b583845b58a4cb4169a0f2aab2c36fd184b15c3e4008e38e00c0b6db256b89c4c373e8328d13e840d65605c44ae017b0876cb5abe1ac4d9ca14a3b +7c815c384eee0f288ece27cced52a01603127b079c007378bc5d1e6c5e9e6d1c735723acbbd5801ac49854b2b569d4472d33f40bbb8882956245c366dc3582d71696a97a4e19557e41e54dee482a14229005f93afd2c4a7d8614d10a97a9dfa07f7cd946fa45263063ddd29db8f9e34db60daa32684f0072ea2a9426ecebfa5239fb67f29c18cbaa2af6ed4bf4283936823ac1790164fec5457a9cba7c767ca59392d94cab7448f50eb34e9a93a80027471ce59736f099c886dea1ab4cba4d89f5fc7ae2f21ccd27f611eca4626b2d08dc22382e92c1efb2f6afdc8fdc3d2172604f5035c46b8197d3,dc2038c613a5f836bd3d7a4881b5b3bff3023da72d253e1b520bcad5162e181685662d40252bee982eb3214aa70ddf0a95c5d1031de9781266b1e0972fc9777d4a74164da68a5d4585f7a8e7438fe28d8af577306b8e2cbf6863c83431cc4c898dda50c94efd4925432fca36a6304790fbf4fefaeee279c01b8b6a8d1c275e3cb4e8bf17d880903fbaf27bfa65a2e3db8e285878a94955f6fc14f05a0fa2556994b8612bb7a494b4dd8b3cf1bc9e4bf833d4bfbf878c4d3bdc8fc70d26d7b7edaf0afe2f963dc6884c871c1475f4b92378b9824970e40da0a59780e84ac5138aa1efa46c1b50c3b045be59037c6a0c89e1d3cf246f1362794e8107b7cba74888f0bf4b905cfb9c33517f472bac16259809797f2fc883ffbdd7cede9518f891b9117de5ddc6d3e29fa56eb617f25e9eb1b66f7e46ed54c1d43ac07471d35c57b8c73bc68f5612ed042bff5e68634a4fb81e2ef0d92fff1e11e43fd6d9a935678d2fdd04e06061da3ba7de415b93c5a8db1653cf08de1866f5c3d33be32a3b8d2b7bb39e9745c6e88c782f220c367f945828b9b9250de71e8a14ec847bbeec2b1a486ce61731cef21b4a3a6353c2c705759fafa50ad33fb6abc23b45f28ee7736df6f59aaf38d59881547274cf9af2cfc8fc1ecadf81ab72e38abccd281df956f279bacc1796ad1f90d6930a5829bb95e94a8682a51a6743ae91b6c12c08e1465a +e29d505158dbdd937d9e3d2145658ee6f5992a2fc790f4f608d9cdb44a091d5b94b88e81fac4fdf5c49442f13b911c55886469629551189eaff62488f1a479b7db11a1560e198ddccccf50159093425ff7f1cb8d1d1246d0978764087d6bac257026b090efae8cec5f22b6f21c59ace1ac7386f5b8837ca6a12b6fbf5534dd0560ef05ca78104d3b943ddb220feaec89aa5e692a00f822a2ab9a2fe60350d75e7be16ff2526dc643872502d01f42f188abed0a6e9a6f5fd0d1ce7d5755c9ffa66b0af0b20bd806f08e06156690d81ac811778ca3dac2c249b96002017fce93e507e3b953acf99964b847,91ecb5133525e291736cf8f4793bdb00a4ea32f48c3f24cbd3238e6408fedfa6e7a750409f197041001c1a090659f8879cb26912b46a0e7e4e791fbf5692fd36ec84a55462b7876724ea944ce7246261f26038b166668e6b7eab0b5119b44e4581f3a3280508cd8b3789ac37f992eb9777b9e11c0f19a3da5f4b8d304ac4de68b3c2cd6659f33fbe20b47e1f6b0ce06ec0963f8e7412fcd84e3da3867cff08f82aa17c43c19bdf3bc0d242fda4874ddec389564345ad11a267d7a466925d1e9beec667b029da0982b37b51413b4601cac17a02cbc681f927defaeddb0f6a69fdfc39ab735470e86a00f82eadc94018a6e2a29e7f393f30d954c82936e158a364fb139ff29e42f30c0b95bd5714eb7a535a5b1d1b3b36a862e35d10d1f8a5afbeedecc51a855724271da9ffb8efc6615c42b03a57a2d762b46d5d94e097dafe5d7a2ef522ddf2ddadc1f83eadb72510e770735463495b0217b8bc91db597683254f6e0ac0e9b1e56ed0216ec9618173b163cb3f393152469268c056b1a204567ebe7367f863ba145c3bb367fa3c01e556d62fbc8381cb3c8a9bed907d481c093f14b70d1bd31aaa41fa753ce31fc59740a47bf5980f8a0e32eaca8a488572a3a91db07a25c34330cb7da7e0fb7d1541c3f3c377963de4560a8d584e11e9c6a1b917f907c34f211cd78904471199fcf30d4180f88e7bddc0392197444adb1968d2 +d85588696f576e65eca0155f395f0cfacd83f36a99111ed5768df2d116d2121e32357ba4f54ede927f189f297d3a97fad4e9a0f5b41d8d89dd7fe20156799c2b7b6bf9c957ba0d6763f5c3bc5129747bbb53652b49290cff1c87e2cdf2c4b95d8aaee09bc8fbfa6883e62d237885810491bfc101f1d8c636e3d0ede838ad05c207a3df4fad76452979eb99f29afaecedd1c63b8d36cf378454a1bb67a741c77ac6b6b3f95f4f02b64dabc15438613ea49750df42ee90101f115aa9abb9ff64324dde9dabbb01054e1bd6b4bcdc7930a44c2300d87ca78c06924d0323ad7887e46c90e8c4d100acd9eed21e,54a3c3f41ffa1a12309ccc1d6b7915e126cb13371a2953f33d6512241a5b835005a7fc8844e4e5bc097b9c5d8e388ddb5a55f43905e11c380b8ef1dc661b77593dbfafb6b2a4a28039abf57706ed1193e860cec1f5d9c522839607a02f3ae0d057100cddfe48bd84f60db063aa3011ef8a6aad3947d8f86e2a6a28e258a99d72e998e4148dc877945844094125db2be06b98508704e3901ad2d8d2cadb19291af8436dc4cd89d97060df9f7ce0738ed5c1456cfef18862dabe84a08a22bf310fe273496401619f156ede9311697566b11c38bb10d4ac5787d4d6491cb43b4d79c5f062645facdd48edf609737c7ffc226e36587b39759f23da6cf94349cfa50b9e18f1c6cd42dd22ea04a4a7a73acce723e4e5948fccc9857eebf22c9761ab8aff73386d470a34254750bce7edc88a46f54ab64f562bea863488f846671503e5e305f3cc61212e95d055851a4d4a9a145df52dfba84d27d084952f7e12af3c4e20860a479156b48cd65ab2bee5407aa200ce205e3e46c35dc4b50205c11187ec81eca5be3b2e90a170d53e6637947470220b2a6edba8c0d0e3525be456417e6ea0fd98bf54a5804aab6bfb728b22a5d01baf0cec173821f5e075a0e4b7649e303d17296981efb88327d5b1a3a8ca72129b979dfbcfdc45ec3d1bfd01d10814f225c6bf09962f0491756cf9607d3974c24fda6ddf6e87013ec5cb2b883bd0a50d +3a12f8508b40c32c74492b66323375dcfe49184c78f73179f3314b79e63376b8ac683f5a51f1534bd729b02b04d002f55cbd8e8fc9b5ec1ea6bbe6a0d0e7431518e6ba45d124035f9d3dce0a8bb7bf1430a9f657e0b4ea9f20eb20c786a58181a1e20a96f1628f8728a13bdf7a4b4b32fc8aa7054cc4881ae7fa19afa65c6c3ee1b3ade3192af42054a8a911b8ec1826865d46d93f1e7c5e2b7813c92a506e53886f3d4701bb93d2a681ad109c845904bb861af8af0646b6e399b38b614051d34f6842563a0f37ec00cb3d865fc5d746c4987de2a65071100883a2a9c7a2bfe1e2dd603d9ea24dc7c5fd06be,264a7d71ba8e67773ac5ab0ce3616f1147341edeeba1a177e8529b0def09c3a99d91029d77c3f9f85508ae74de172f358cdd2bc4efc8b27bf280e162b03a08272d0165d9012099b8ec0274801af9a0d672fda4510c09347add664505be434469ce78df597a7890381fbeebcee79fde94ee240a2b3dfd60b23f4126a5fc397b4b4e5e21893cafbabec64bf53f603434f168fcb667828e79f44b1526e9875f9ec9982648b9c6fc1ad6527d7fd2aad064227d9a85ef9733b2b484202e00f8929e18899bfa6b92c3aa8b05f9ead25df02e02c7e8c264b67ec07ab47a7d95905f660cc6722aca28215aee543fb7950f0204784aff77374b803e5ea679f22a0f5659a363ee122aa76bdc881eb28d5e347842b2cc81ff0447b68989e744e187808d7af0011a32b66f9050161168d6f246a5c7b212838b831e71d71606f21a40d8a9aef42b21465689b7ce967dc2e53f869f0584e19ddc629068c1acd7e6b986c3d1f1e24b1a907f7ed4e5b83eb7b0a5c6a4508e0dc21be2c1bb5506bb2b97d9721b57deb9d4d39d58b77dfe6c869f5fbfd74559082b5efc3692e72a9b961b6a669ed700cc41ffeaf370f88373d5bda8db6dd2c3bcbf1d833f4b9cbd3b4134502931178c58fcffa80cb496fd850352634f73d002fc4a6725848ce2541862b3c5566a915878e60b3b4c1ef7f014f0f32446298891a383f63568c849df2a208e75eae37ed8 +1861edce46fa5ad17e1ff1deae084dec580f97d0a67885dfe834b9dfac1ae076742ce9e267512ca51f6df5a455af0c5fd6abf94acea103a3370c354485a7846fb84f3ac7c2904b5b2fbf227002ce512133bb7e1c4e50057bfd1e44db33c7cdb969a99e284b184f50a14b068a1fc5009d9b298dbe92239572a7627aac02abe8f3e3b473417f36d4d2505d16b7577f4526c9d94a270a2dfe450d06da8f6fa956879a0a55cfe99e742ea555ea477ba3e9b44ccd508c375423611af92e55345dc215779b2d5119eba49c71d49b9fe3f1569fa24e5ca3e332d042422a8b8158d3ec66a80012976f31ffdf305f0c9c5e,c87cc74fe777b2dc9a33473f88383dfece2244a807ff92babeb7bf08f37eabd9305be93213a63a4851bcdc648c2eb31bd509844a56b7b890772e040e67d32a4098efbccd0ed6d25b2ab9eefd0b65ebb76d540d0fecec277ac98139ae8f67025dec7ae76850e047098557d2ef7d9319bc153641b1d2a376f23e4a1f2fdf1168eb5901b3e11a0410c8563dc4bf1fb0f616cfeab2b086384207cf1a10d51634874493db0533787c0564c1400bc56cdb7c32a6fa4800f0e685156f2bb63a63b67f6d40ab574ce0ec54a4a533958b3a48266ee038e5d85e67f3ba429ea1671d89a083b406a568a0795c56ef042881ab67665258ededb97ad04b5a30388d7ef0dea494ba645f8fe47e81a2cc4a9c6885ed80c6f6d37bb0e81a60575201c0ec3e9ff30f70ae746b86aa3efb309f13fad5ca2c824c2fcd34af1dea5e60e4a8cd92e7b653301721937e03ecc2ad5642a3922d4d666448759961c6d830ccb45d666b675c920ac2486b100b5a51a7659f24735c173f9fdf02b1401a03ed5bc45ef098e799e7a3c29eb262d408ca9a6d2c18c5636f3b378e63f8c71c70058976e880d8a0f23e0f2f1cae00f4e06fd60673cf0968a2e3c5d97a79659bc81f6639fe69b18c6e4d1f3bf535814a4d6187f3f9bd7f7509b2eb899a6ed48526c665b706a526f0e5ee433dcb3b5c7bfc99078342b78edca9502d6f73566bab6afeaf63ec9a020a7ef5 +08d0ffde3a6e4ef65608ea672e4830c12943d7187ccff08f4941cfc13e545f3b9c7ad5eebbe2b01642b486caf855c2c73f58c1e4e3391da8e2d63d96e15fd84953ae5c231911b00ad6050cd7aafdaac9b0f663ae6aab45519d0f5391a541707d479034e73a6ad805ae3598096af078f1393301493d663dd71f83869ca27ba508b7e91e81e128c1716dc3acfe3084b2201e04cf8006617eecf1b640474a5d45cfde9f4d3ef92d6d055b909892194d8a8218db6d8203a84261d200d71473d7488f3427416b6896c137d455f231071cacbc86e0415ab88aec841d96b7b8af41e05bb461a40645bf176601f1e760de5f,61390f3d091cfa220147b1c85c59f1d6b7d9f87db3a8910884aedd2db4ef65bd77f1d091d8375002713322f3ac618126d47dc4ea0404402fffe139c8163cf8746030b2e57bb2a74965159f4484e3a4c41e7f849bfe872db3b47eb91e4c9e67dc09ab0fb88fde8a9815baadca11238b97df04a0f5e5570ddc87d18e6e33339dd481d20cb746478162cd1464929dce1fb906b6545d846d891ce91358b9ea029f281ecdc557cb769ec8c1faaad10ffe13b8076072455bde3a3276ca458e8ffc4e377aca54833c31e906866e9dec7eaeaf74ae07339d70ad34278b076ca541cef4dd10f68fb29c17f030052702b7b87d857f462414bfcb9fba427beef0b930df09c7a6bb35620ef843c9866e242eb2b30e30c4427c1e5671f2390f6f9f42b77305cb9969224355fb7a751e2066fb8c492d6070049c768b5263642802d21632dcf50edc2c9357a4a3ca20c8446cd322cb5d8edf82d31871424575f022d8b7a6b7baa4f6326ce757ad523b8bd1b4a77c5d96e7eef9e2963b02b107f7f74c9341d964d70daa7c9e1ecbcc354935ee07192f22c15d693e5e10df094fa8b74cb2cc87b967f11237b3ab5d3f53eee9bb9e4ca16b7df02e46ea9f141dcda939b2d7c964574a0e11e3505706c0e9fe33be262a7e6589d7bd42276cc3146f0a728131e9d346b91da1eeb6b3e34ea5ae180396e219b5ffb6f87148ed8d4bac21e760861b49f248 +d782abb72a5be3392757be02d3e45be6e2099d6f000d042c8a543f50ed6ebc055a7f133b0dd8e9bc348536edcaae2e12ec18e8837df7a1b3c87ec46d50c241dee820fd586197552dc20beea50f445a07a38f1768a39e2b2ff05dddedf751f1def612d2e4d810daa3a0cc904516f9a43af660315385178a529e51f8aae141808c8bc5d7b60cac26bb984ac1890d0436ef780426c547e94a7b08f01acbfc4a3825eae04f520a9016f2fb8bf5165ed12736fc71e36a49a73614739eaa3ec834069b1b40f1350c2b3ab885c02c640b9f7686ed5f99527e41cfcd796fe4c256c9173186c226169ff257954ebda81c0e5f99,39ec35d31923584fbd73a715015cef05b945a5afd2d109e72e356bdbe0f73cdf666aa7b01e77bd3bc0c409991f1129961f6bdd772ade7ea97af0b88a8875190b453664ffb64fc4fac3c1108a3c222f23b12b7613941b137449471ba4847eaa4a16beb50960fff5dfbb2e756938b38a93509bce5f900a59e69fb0305a19e460ffae88d74a727c82fc7138b88db07edb172b39566dd22f0e852f715af9d3c3f0089e9eba72ff6063357de9a744f20e1da367f27c6ab6fc9d231a606a79a621f8150773d1dfd52868820ee5bc28d286ed746beaf8f13213548df0a56bb0e01e5bf6bdd1c901ea8c791e7916e5679c88d4d85cb1acca63c211e7218fe6eb2abfd2badbb31147177f123fd111bac4880f1224ed01f3259e4eb91deb7562cb9c3009b3676998afab8d5d24bfe7d27be7f3a57a932c895b60a9fa74504472808479f332fd9915b8ed0c11604e80457c0de5f7015c19a607aafde448fc08bb185517e6ad7dd330a465f9043a0478e1cb4be9185187604f30a1680c67d3a0db1baccc05d401aaa8fc66d9189089eb7ddbaba05faa8dd83fa544fde68a793a36d854752f22fa13333c6152f7f18ed789848a13327071d85d5e36c4fc291cf5b4b9391f8e2513d4b660b1290790ab50d12b73fca21a93f8998d5706c037c387d662fc20be35228d85e5bd007a7173bd06e5cbb7e41063ae4843bf3f5a77c44e1a36fd2e1c31 +5fce8109a358570e40983e1184e541833bb9091e280f258cfb144387b05d190e431cb19baa67273ba0c58abe91308e1844dcd0b3678baa42f335f2fa05267a0240b3c718a5942b3b3e3bfa98a55c25a1466e8d7a603722cb2bbf03afa54cd769a99f310735ee5a05dae2c22d397bd95635f58c48a67f90e1b73aafcd3f82117f0166657838691005b18da6f341d6e90fc1cdb352b30fae45d348294e501b63252de14740f2b85ae5299ddec3172de8b6d0ba219a20a23bb5e10ff434d39db3f583305e9f5c039d98569e377b75a70ab837d1df269b8a4b566f40bb91b577455fd3c356c914fa06b9a7ce24c7317a172d,9bcbaf72085f4ee5b2b237f520977c7cfe8780bd62b0aba13c161d0e7eb036ab27e9b08407bd501b2482c280997eae9c4b571ed6e39a13d74d7a1e2258cbf3583b28e738fb14ab2b60e6f1e188953d96a9361d282b85ddc243fe6c7cc644ba203b328fbc4e0088e40283b6a62122065a11a164dd1ea05f421b4ed60f44ec982636f0253ae4e6ea320eda2351dfde0285d1ed860a51699e702a0519b0c3119462bc9cb3decd66647823ee139dbfe3ee125a6f74aedf5044238389e0b0388698fd8d7d882d010c194f4478d6da8fc195529a475932e4fb178cf318ad8f24427bbb90c0b08adab27be5a48c9804acd9e56e1cb2bfeb236388917458408c446c6b5f1d3bd55ac0f6f1ad06ab419460f525b564dc67bc6bb2cfd08cdb510161f71a29aec95c67323259c214cc39401e483e982ee6576a7f1068b088348916a5c47d1378236ddf475733f394e14216d2ac112457295100eb70381e632876e700d355973944ed80ab91ac39f2d9df4e338c02082505c028eddf867e60aceffba59480e6953baea105652bac6d29def70962b6bb93e3d9424a77d31d3020fbb3be37e7905a6360c1b624327fd68ed02639a2b54fbafdd9804fcfd60aec2b044c921a77b25b7032cf685475f503d00d9a8db733cb6115c1bad1c847c1bbbd342e62470d6df7c21119a35179ad3c7f68cd246b8f3f51e2635dac460db83fcc5c0dd049a2b7 +6172f1971a6e1e4e6170afbad95d5fec99bf69b24b674bc17dd78011615e502de6f56b86b1a71d3f4348087218ac7b7d09302993be272e4a591968aef18a1262d665610d1070ee91cc8da36e1f841a69a7a682c580e836941d21d909a3afc1f0b963e1ca5ab193e124a1a53df1c587470e5881fb54dae1b0d840f0c8f9d1b04c645ba1041c7d8dbf22030a623aa15638b3d99a2c400ff76f3252079af88d2b37f35ee66c1ad7801a28d3d388ac450b97d5f0f79e4541755356b3b1a5696b023f39ab7ab5f28df4202936bc97393b93bc915cb159ea1bd7a0a414cb4b7a1ac3af68f50d79f0c9c7314e750f7d02faa58bfa,8536a6c25934a44ff97c0a09e026eb12b9c81cc8357859ba736b29bb329b182b5da8ffd7b855200cb9d64fe463317c213997ebdf1810bf37e00d56f75791375c5fa84dcfa37ec196bb2dd3c66c1d33034ac48bc7feaf15f9702d7d11e4712ac87934e2064283d04b56bddbfb3b56c3cde69b7d736196b9dc5623a3132be33af12a386a3004eef98d4487b614547ba59edabb0b83b6ca39a5955f925f35a5209c0cd567369751312a6a63d0f4821d442c14cc26fc147e63a4656745663cd96b01064f60faa4ba98258b09c09833046412221a59e23d5266fad8c068cc949d172862ec30ebddea21e1cfdd6b5fe4af566a19d0d41fc9328ea915d8b97cb1d903bc40a4083f6997439055b44a695450039cc00931cf3bc9fc67bc417a8aa270b2b4a410bce4a2131523749a957d293c1438a993432941a9ff4210b33a5cf8b4434553b17cfe869b940669ca9f18b128ba354855f08a692fc6d23bf0fa12d9f4df0a571e44d4221e8018c4282559e6ff2eb02ccac7a7b83e34aca7d554c33f05cbaeec49d0516b10de06bcdedc09d0c4a9810b0797b62cffa75fc0d3bdd796327bb1fa5dcb546630e9bb0457d024e982d6d7930391066c58286beac627d6eca09b4f6dfccc71ce589b1da1e890ae0c5a0cf531d9c1d2330bc8397f09f248f9919995326fb92147959c3e6c569ed662f6968f4e9ef42b6c2fb954d79da22117373e27 +5668ecd99dfbe215c4118398ac9c9eaf1a1433fab4ccdd3968064752b625ea944731f75d48a27d047d67547f14dd0ffaa55fa5e29f7af0d161d85eafc4f2029b717c918eab9d304543290bdba7158b68020c0ba4e079bc95b5bc0fc044a992b94b4ccd3bd66d0eabb5dbbab904d62e00752c4e3b0091d773bcf4c14b4377da3efff824b1cb2fa01b32d1e46c909e626ed2dae920f4c7dbeb635bc754facbd8d49beba3f23c1c41ccbfcd0ee0c114e69737f5597c0bf1d859f0c767e18002ae8e39c26261ffde2920d3d0baf0e906138696cfe5b7e32b600f45df3aaa39932f3a7df95b60fa8712a2271fcaf3911ce7b511b1,7201fc2af67d095a5e317269e750f965b8bec311edad18da2435d2872c0056617f0fccc80552010f996e5b34084b09f31f35870486a8c53d220d7d009ffc2c58f26ac41bae05eb486ed4a18e74fd1c31cea640e8d47d88c5d506c5719a3eaa4716ad4fb906a5085afd46570f2b048264d4bd3554f5ab0a8271d6529b9e2f1634b5c78abab6bbacf4f01a4e33377f9e1fb12fc20435de0afd62f90e2ca73bd5260285bf5cb9b4302a312bbe48c3b68a4da6e842b7d87b3be0ba82c9b7953cb63b7e7e86296b88557bee2ec9576a468d556b77f872bf728fe3051e4932988029d88320088b70c8b19b59fc03f2f32bf34f42746a6e9672c21ea85087a46d5bae484f460af64f8f62bc615e79adf67efa9941deb5b358a5833cce4a92da0f237a506d530d64435689e1db79f7afda051cfc065397c9393b3a87d6de9c08522bebaef1b33d2eaa746a5ae7fad267f168ece1db4bdf453a100fa3743d9dca3bd0c00dd7033ae1eb573bb79c6cf53bb38130af279c0a0f8198c5145a5dfa32b322716ef6115bb5466ce54eef73e68c4c2b1d0c321a03b6c7bd1be98dfcb50c08df2005dad35c430004de8e6c531368b5f37e53df3d376caaf854298657573be7038052c2169bc907341ceb02925385a9fc03400f53cccd6d3bc039bc49f7e5cadbb68fd5e1589cf1b97c9c6360a4dde6474ff39b96cc2f4c698300db2ad5668bc19f45 +03d625488354df30e3f875a68edfcf340e8366a8e1ab67f9d5c5486a96829dfac0578289082b2a62117e1cf418b43b90e0adc881fc6ae8105c888e9ecd21aea1c9ae1a4038dfd17378fed71d02ae492087d7cdcd98f746855227967cb1ab4714261ee3bead3f4db118329d3ebef4bc48a875c19ba763966da0ebea800e01b2f50b00e9dd4caca6dcb314d00184ef71ea2391d760c950710db4a70f9212ffc54861f9dc752ce18867b8ad0c48df8466ef7231e7ac567f0eb55099e622ebb86cb237520190a61c66ad34f1f4e289cb3282ae3eaac6152ed24d2c92bae5a7658252a53c49b7b02dfe54fdb2e90074b6cf310ac661,c7b0ea1011bbe2d11df8353d06a6ad5176dac3e33039c621a635e1124edf2425ad88ba552d6b6034ae3a5fbdc735e4381064925bfd6cb5e3e753d27c7a77f4bfd3d33652461f5409ca29c060ac991f3ca90a29b9f67502a524795f1306430fe7961430b431e9cb7c21eabe1ec3d1d6440eea64496f30a3a44172b2c5670da2f4dea42f783f5138c966a642488231dca509c144b59e0f4a40c191c035e4a464abb6f4b9e0f9acd86b7bda0485238a56b2934c7aacb484287ee013c46e48fb648e73add7e8eca6b2a8fc34ea0ceb46b0c360a6004b34403ae5fd345a78b55634b242cbe07a6fb13fab721ef976b3e1f82ff4db06f86dca50348398f1dc831c70618fb387f0b13d84bc8a606e72d6b85991a4d7151e2d9b4b5e07d303e2d639d2a243e316b6c328eb01f52c524fa7d76763ede5f0fec6824d73efe546547798d9c78b22765e69ee0f72b538c816b230481214099acf758193aae0688cb5a9e11b323704ab7724e5f1c4355c11eeb595312a25277794b996c6bc19c77f0a048cd31fc8ab70c7b6b6b0dfef5f632879dccfcf462908f04afc8b440e9c4fbeb428b70a56511eb7b16053be225b72cee491366742a77152a9bb0fac5d261c01abea1b632289f26fcd628598c1f9b6ab1a5c36f926a2b96baf71644c0723a6a773dd14c66a770f11bd82ea85c6608c821139601f9b98232bfc21c7a3b54e0f7a2a6e4ce5 +2edc282ffb90b97118dd03aaa03b145f363905e3cbd2d50ecd692b37bf000185c651d3e9726c690d3773ec1e48510e42b17742b0b0377e7de6b8f55e00a8a4db4740cee6db0830529dd19617501dc1e9359aa3bcf147e0a76b3ab70c4984c13e339e6806bb35e683af8527093670859f3d8a0fc7d493bcba6bb12b5f65e71e705ca5d6c948d66ed3d730b26db395b3447737c26fad089aa0ad0e306cb28bf0acf106f89af3745f0ec72d534968cca543cd2ca50c94b1456743254e358c1317c07a07bf2b0eca438a709367fafc89a57239028fc5fecfd53b8ef958ef10ee0608b7f5cb9923ad97058ec067700cc746c127a61ee3,fd6abc78d5ff667aee2029f1683e1ec57e82e69e6f3963e38486590650a18eb3a6b611d5ecdd6f8e556d2f8bed3726dc51b2086275923e2bac576625fca0a10ce1cab318ae80806929ec5ef10f3262f460db6d39d6db17fe364792ac2cf5b067f260366fda234ee09761858a3c5edfa7d8c8bb7e968bf78922cad2a276096e06164d15782b74e75abcb32d1d87cc5ba1b188ae777b5fa570dafc393c7fa0ca76623543ba75ff214a0f01ae3455a9c454bb6773721df3376bf92b4c6db9fd4edcd802e30cdd698a865c29912517e0d195b1d05c391be04710121c764df515fd0ecdef0d91603bc2a3b9f905b5d7c25133657fb6798aba7119ffbbb836028764298ec082fd36cbd7d32a81c549b32e6e82c8c897318eeed0c3720ae2b620a40abc87c28613aa2322edd83414b8a532d48fa5769e4e8a46e159d5bf9926c6647836527bf5ab23846ea38f321ee7303a1dafaf61c97d6059b10314f09f3d5dff337802edf70f27e0224d1b110453902d3f4d5a074f2fa532856eae37307507c2e9be3952ebccde1599a3a9b331fe760d29720afd9134b6f5c33cdfa60e9b700e0ff15e13d197830bd93e785482bba5dcecbe0977433ad8625280f0dac5c6a4963f23844c7ee7ac6c88d098b8189b274d49194727118d6e73898584ba8feac1947e0b0acb81dc7b580f06f52a5743f8e7e8066f6c76b5013da694072434508c2802e0 +90b28a6aa1fe533915bcb8e81ed6cacdc10962b7ff82474f845eeb86977600cf70b07ba8e3796141ee340e3fce842a38a50afbe90301a3bdcc591f2e7d9de53e495525560b908c892439990a2ca2679c5539ffdf636777ad9c1cdef809cda9e8dcdb451abb9e9c17efa4379abd24b182bd981cafc792640a183b61694301d04c5b3eaad694a6bd4cc06ef5da8fa23b4fa2a64559c5a68397930079d250c51bcf00e2b16a6c49171433b0aadfd80231276560b80458dd77089b7a1bbcc9e7e4b9f881eacd6c92c4318348a13f4914eb27115a1cfc5d16d7fd94954c3532efaca2cab025103b2d02c6fd71da3a77f417d7932685888a,aeda7e54b44c4ec1dc28a305ab30cdc9fbb1bd923f41da60558acc8c3fb34d85ef153decd3090860e383151ebd008044b20b20b0c6216d16ea221addf00b99dfa692ce79e69ac853fd70c6d077860c54ff77ac55962cf0d06888ce0a95dec7ce760e8e0364ae935cc8ce962bafb617dbe45a4669f0f5c6a7767fb0c9bdc853c84cdef5f722da5c31d15181725158f946c8d810af7296ec91f3ec782d38b00563e454ac9299b8da2c4d2fe89c0c2c6e094a14dc3cde4b4b5a868cbe8c6032812ccf17a1e511e7e59c0239e6696c2ce093cbf79f641cf1b59d97b88a16359dae8366e23e13c7b8f9cccc099f9b6cc0a228223fbdd5242139f3be2c19c06a15563e404428052e32ed5f6ebc61afe642340625c29174ed962d6ea5d8d6b06daa63cdbe674ca6abf8aacdf727bcf6279d4ab7b2511d782c21db7ba2543c2273970cc18c136d74d6583782fd44422a2dd01bab97af2a420f8f1de60ac0f4727b91972289943b5dcb3d22030d93a6ed0863e1920dc8a6688dfcfabfc3ecee59afc7b349f5b6b061e599145e2242c05d63566906a40b98f8d280f31d25880d0db0a90af20108715ec9fee5ffe151bba41e594254b7eaf61c5b444094b307511a1799d2e983500fe9643ddc2652b7b77fa27db41b50f788224be4b4f7ded43b56a3bd7eb52620689b4d22859ed3e0771431168d12404b5c56347faffb9e133fc5730ee76a +2969447d175490f2aa9bb055014dbef2e6854c95f8d60950bfe8c0be8de254c26b2d31b9e4de9c68c9adf49e4ee9b1c2850967f29f5d08738483b417bb96b2a56f0c8aca632b552059c59aac3f61f7b45c966b75f1d9931ff4e596406378cee91aaa726a3a84c33f37e9cdbe626b5745a0b06064a8a8d56e53aaf102d23dd9df0a3fdf7a638509a6761a33fa42fa8ddbd8e16159c93008b53765019c3f0e9f10b144ce2ac57f5d7297f9c9949e4ff68b70d339f87501ce8550b772f32c6da8ad2ce2100a895d8b08fa1eead7c376b407709703c510b50f87e73e43f8e7348f87c3832a547ef2bbe5799abedcf5e1f372ea809233f006,9fef3f4fefef93b5124dc0c0d3fcd29fc5d6f680f511c682bd41e397eea9147441e698e4b420cf2a165b15aa36895be8ae914ed53fc9950f16d540ff5054c0d731789d126091a75fc5c7de3c28478e86e05c7a604ce904da8f7ef031dc9d957401b155d110745f3145c34754a45b7fef94d0253de536bfa0ed5e655243e689ff909ded44948a339cd55b897d015bf49e890192d051a13c26bfd5e8e71ae287a6e2c18017fc997bbc41a7d39a18de8b30f5f313d449c5095314e740501e2101807eaf33f596d0ad639c83bf7037e27c1d8597b4bc9f335433137ef4081e381b831f17ab09bc704bf1c581f4edaf9502290a92501cd7a0e5f0aa10674bfc9b2c9c2c812f4c3725d6e7975a1f181ba63349d18efb824dbc4d7d6267e7c4855afb5f4da4b26bf74785ac1e97d3e78de97179739481a47686545a7b81f9d6bca18cc3008be300c34134edcb9c87870d8bb4da18cad8c29ca349392fd82e0bbca5a06a043826194a52ad80e1c3bafa28751338bdac266d8245e055546611cbf929cc8ce6da35667a66ab87ec22cf3b54d8ec1d7cdec5c75e0ec3b53ed0c030ae30913c12aaaa71567c731ac8c9ca1279c7a8facca20554a506661630f2b6b9792dbf5c8fd545c283dfc65e9d758b4b86079f569af818138304e617d74081d80ccff0179542f6fff41151b85f84b2dd18fcd8c2b7790b645552c94c0348315bd91e1bea +721645633a44a2c78b19024eaecf58575ab23c27190833c26875dc0f0d50b46aea9c343d82ea7d5b3e50ec700545c615daeaea64726a0f05607576dcd396d812b03fb6551c641087856d050b10e6a4d5577b82a98afb89cee8594c9dc19e79feff0382fcfd127f1b803a4b9946f4ac9a4378e1e6e041b1389a53e3450cd32d9d2941b0cbabdb50da8ea2513145164c3ab6bcbd251c448d2d4b087ac57a59c2285d564f16da4ed5e607ed979592146ffb0ef3f3db308fb342df5eb5924a48256fc763141a278814c82d6d6348577545870ae3a83c7230ac02a1540fe1798f7ef09e335a865a2ae0949b21e4f748fb8a51f44750e213a8fb,e62cfe44b169a061faedfe6ce667056bc0255d1f22a56d3df255ffbb145433fbac3dbc0b998a40001b805927bdc1ea47762980586ca088d64babc0acbd488c5f08b8c220fd5a15ec679448532bb992360c8b166bd8efb59f2b5e091f06cb1df8d79ff9b69c4a49a9ececfd6403d6f984a987c0fce8e6ed4c0e9caede1c522e4f71495f8599f2864c42809c931771a32fca62b0cceb02e5d7ffa15754e6afa27e568d84fb041cd35140a48f4b23204cab939b5c48217711a5426f194ccbf07491c0dc2f885156b40c9f782f4a17bb7108e465d9ae1f52b494c74611a1d9d379ea8835e0f98ac6880c339d70b65436a07f056e9c118a89aa41a0e4463482b5b037e96736d265caecf4764e6f206ab47eb83689e3380db572bf815f7e2acc67bba3f4d074df16d3b95aed1c4718ea77d1e38608400ea88c6f5ffa084eaee206eec8d2560a601587ddc5804d86912e4b844d87f2cbf10634cc32f492bbfc32b4e746ee3fe9e9c9b03da7de441a53c0e3b648366a4a997a28df2a10628406c530175191f230a97e2248226ecf6293d39809b0dc0493ceec48337468831a5eef0038affc160732c097cf96bbb90f5a302406ffe8c0f1fbd7554c1c0679d2af199e565d96ac5697f2ff748cf0bdd87a0da1a9de71020da59bf69adc9e7fb7d6b8a38113c3370a120815ddaac8ce49ed4738c3a2805100de7c6b2279aaac367a930cadcc +6b860d39725a14b498bb714574b4d37ca787404768f64c648b1751b353ac92bac2c3a28ea909fdf0423336401a02e63ec24325300d823b6864bb701f9d7c7a1f8ec9d0ae3584aa6dd62ea1997cd831b4babd9a4da50932d4efda745c61e4130890e156aee6113716daf95764222a91187db2effea49d5d0596102d619bd26a616bbfda8335505fbb0d90b4c180d1a2335b91538e1668f9f9642790b4e55f9cab0fe2bdd2935d001ee6419abab5457880d0dbff20ed8758f4c20fe759efb33141cf0e892587fe8187e5fbc57786b7e8b089612c936dfc03d27efbbe7c8673f1606bd51d5ff386f4a7ab68edf59f385eb1291f117bfe717399,e55556489cff55ae9df1ab48f860e81c3eb95d979929bed9c747fd1467d201fcf041d0b3d72ef227c82c93e6346cb02a5c78afcf0b9cb6af551e9645c09244ea67e02e17bf1941f3910b069c04dcd5ff7b4b9c69bb973efa516b4aff0f8947da042e21bf838a94bc8d98e6a30fa830fb9774d14ced360125da945f44528b99df2095c5186776d434a4ab2202a8cd5443ff2636f6111228bf1f5c5bdfbcf6278598733776bb589230d74314083b983cbbc476e4c9f0996a01dde09c8341da4c2382923fbf32a1ab8e37e9a18da38f54154c44fab88ad8857ec5ff82cbe1c9d24d6aa676978fe7f18f1c2503af6981551710690db902f46aa5ab3856ebba8ebc644c7339d6e28eeb2aeb6d5f168e0447cbea439ecc89743bfdfa88f963a6b57f28157f55cf46b57c2396a357a8e44ec964ca32c51fa5dc17c1e0f6f80fa2c8d26e04f03c32cd763f6ccf0f16f915d72f6e9159174b69535d2229c8a543e992ab0e86bb51da378eb378a0f28ed49a8f57f224e03c9c1248f0133d70af45ac7f0d27c5804cc99e982a2a583ae566262f3cfbdb91bb0c2f2561651a812cbe22f1380929f85a94fa721afe6ba1ee27430f2cfe89966a9919ab21036e81962afda1026b3b4a95fdf0ba51940053f01eefcac57cd11c4c60d66de753f41a178cc56a938a72a0791874eab6dad49af265cfc6a03016f0a1a490ececd045b9f7509f1193f9 +6a01830af3889a25183244decb508bd01253d5b508ab490d3124afbf42626b2e70894e9b562b288d0a2450cfacf14a0ddae5c04716e5a0082c33981f6037d23d5e045ee1ef2283fb8b6378a914c5d9441627a722c282ff452e25a7ea608d69cee4393a0725d17963d0342684f255496d8a18c2961145315130549311fc07f0312fb78e6077334f87eaa873bee8aa95698996eb21375eb2b4ef53c14401207deb4568398e5dd9a7cf97e8c9663e23334b46912f8344c19efcf8c2ba6f04325f1a27e062b62a58d0766fc6db4d2c6a1928604b0175d872d16b7908ebc041761187cc785526c2a3873feac3a642bb39f5351550af9770c328af7b,5c3cd7aefddd08e09f343a8226155bc3ba959998299aed4ce4e85c6758833685a58e5cb8002fa4788ecb673e810c98bdf71a18f7a2ddfc351056d0639bc600fa42bd03b1315cc4c9640a8d61d481bc7f9077c9efdea6fc3993993cec88481fcba0e4c519cfbb57b465fd1e3d33557d8da77321cb21e584e677f3a66d38c9e49d9a9545d6b84afa37547f1ceb22c2ed9d8d97693a69eaa2d15f376e6de77b0ee6c7dc28fb1c1bcb42bf8751400ea2470b87f19830a6ea33da0912dc894892c6c242e90d24238439c6794243a5a6512e3486680f4f9166150502a1bc049f48ec80d2694ff8334515eb4a97d483e7e401bf6e446035fddb8b600ca7478b8c40aec176b79cc671e90caae5d1ec05e51d5e7ef9d8b4ff3b3b319d80c093a83a3d21f22eb4dd3b88fab1345b29ab527f8d69cabe8fece7e26d40a63b3fa08340501a40d433d77dd212ffb48265901d9a05e17e8f24786c7c23e50cfa11d5ad497d98579b02b642d48fd74ca608dc32e76c3961e07064168b898fda5b4fec10554f32426dd818b7e207f3facad3525577b5fbc19f1cfd39fe6453b274362c456b8fdb3aa26306e306ef1bff87056ae99fd0cc9bbe36ec508532e8239b3c33b1705d6da65813621e8d319460cb6bbe94c9cc0a5ab5c9cf538775d42068d9665239e1fad0ee8fca7ea4829c8be493ac2de44b340028db1f27f9e4470d3ee6ab48b416ce36 +b3c5e74b69933c2533106c563b4ca20238f2b6e675e8681e34a389894785bdade59652d4a73d80a5c85bd454fd1e9ffdad1c3815f5038e9ef432aac5c3c4fe840cc370cf86580a6011778bbedaf511a51b56d1a2eb68394aa299e26da9ada6a2f39b9faff7fba457689b9c1a577b2a1e505fdf75c7a0a64b1df81b3a356001bf0df4e02a1fc59f651c9d585ec6224bb279c6beba2966e8882d68376081b987468e7aed1ef90ebd090ae825795cdca1b4f09a979c8dfc21a48d8a53cdbb26c4db547fc06efe2f9850edd2685a4661cb4911f165d4b63ef25b87d0a96d3dff6ab0758999aad214d07bd4f133a6734fde445fe474711b69a98f7e2b,83d754c973e2f1cea0a8eef4cb2340f2bf78cb88cb3aa458e7c915b5c8412cee403cb18e062d2d896d5bffe7dd1c3ca2e5e37e193554a176beb2c636abb687e867af6b9eb5fba57f371c167cf210956c5855f27fbe890708a28321bbf2d1d44dc7a911906cc4054d6310cddc4573ebfc9f7227031ee0eaed3a810aa18367d2f6f56b478881f628897e2678fac39f76a745460da7913374c9af81415592891035f93286bff02dc737eb087db8fe7e77a188c206caec84832a120547d967107a49af42d422ee7364db5b6592185c07dc7fbc2d0abc2a02c3cce0070c23f2daff0c8fc61563cb7ce0e930b75c706ab8180bcecd4e2c47859217b42719ef341765ff7c59c239c1752a3ca73e04da7918b61a4d98df5481f3b2a23a4797d66786ccf940ed96d6817d6172f748262448a69844e59ce9673cd9aa3f5aee057608d4df64042d78a03920fa23de7bc65881465b31c4204f68d69cddcfaeb9a5a6f4aeac6572df206802403d169eb5b2b69cfe3fdfcde19b198385605c864b5f02bdcabbf646c5945899f52830c3cda909443c96df6dc1417677bd80675621755d47d076df56daeda124a3d6b1c7b6e050f6d3024c5627a62c57c94438a8a3c14c5f572210893baff4b7e4e84c99c6ca09eb3629087f1c700513f2447525ee23622099e8d8b5d2ca8918cc5775feb5f34fe5141ccc93ec172168638a736ceb0541a1b18369 +83af34279ccb5430febec07a81950d30f4b66f484826afee7456f0071a51e1bbc55570b5cc7ec6f9309c17bf5befdd7c6ba6e968cf218a2b34bd5cf927ab846e38a40bbd81759e9e33381016a755f699df35d660007b5eadf292feefb735207ebf70b5bd17834f7bfa0e16cb219ad4af524ab1ea37334aa66435e5d397fc0a065c411ebbce32c240b90476d307ce802ec82c1c49bc1bec48c0675ec2a6c6f3ed3e5b741d13437095707c565e10d8a20b8c20468ff9514fcf31b4249cd82dcee58c0a2af538b291a87e3390d737191a07484a5d3f3fb8c8f15ce056e5e5f8febe5e1fb59d6740980aa06ca8a0c20f5712b4cde5d032e92ab89f0ae1,c6d3296ecce00f96e8e0224fc094279afdc51f4d65790b7de6612a536d16dca57edf5af53b7dcff98910f8c41af597692c5b9590b7ebd712076a74ba9923c364e042286f754143b2f1e00c47d4d01ed6a08fc3b62918d4c7fc8a5afeadf7b83a02acbfdad3032d72c60e5ff342ae9376c60cac094780d9f0a6fcfe63496a1fc660a33e1111ff441bdb600b37a33256a35e86cb245ce8dd2951e6b4c7c96c8561207d402d143902f085191084ee39e8fb472965f51c6e556cf4eae55c540adcedeb9e77699c161a88dd07093251dbf403e7a26ea6ff93b2e5c61e5c0538cc29d69de806d995c9bb59b52915a61b9daaa3b21fc325ae7e1d5923d7e2cdb4f71e9c1e9deb331916f09b22a34ca70fd20410eedb22118d606870188bbb9800445b136ffef3d7539b7104eed36e3e663b5167a5649b0fd2013424153b92bf520845972c146f8e15670be40cf2ef1e73e23e404f1753833abeb111327e862904c7ca969f5820b41c6484afce6374c72620c1b0df72c043c1bef6b33eb17a64b0fbe48d68e60f90cfa669214f96709777b9a278b65f197956345395008272e6cc3ddf43df36b39e491897323cea03b88d2fb8fb9f9f1219e951f4cd652aa28c1cd03a369d85c7ecee4c3016c89885373acabc20e40dea4bcfa7b499941d8bd06738a71f3b40ed89ffe85c7c84ecf5f644cf1f3a434d2b12ea3339303353890b3c4c5534 +a7ed84749ccc56bb1dfba57119d279d412b8a986886d810f067af349e8749e9ea746a60b03742636c464fc1ee233acc52c1983914692b64309edfdf29f1ab912ec3e8da074d3f1d231511f5756f0b6eead3e89a6a88fe330a10face267bffbfc3e3090c7fd9a850561f363ad75ea881e7244f80ff55802d5ef7a1a4e7b89fcfa80f16df54d1b056ee637e6964b9e0ffd15b6196bdd7db270c56b47251485348e49813b4eb9ed122a01b3ea45ad5e1a929df61d5c0f3e77e1fdc356b63883a60e9cbb9fc3e00c2f32dbd469659883f690c6772e335f617bc33f161d6f6984252ee12e62b6000ac5231e0c9bc65be223d8dfd94c5004a101af9fd6c0fb,e7b210d8ac4395b2de4a9066a345b1592a5c0649d47ec8392816a65c03b5717ffed2427f513ec34d3db5ad59af61e0ec5df9664a1f24e50a31c6c146799745465e3a130c84b52edc04140aad1a8afdbc22d816339d5ad126c616b55302cea748e744c6f2f538e2285538697ed1b2e169d9b335b6194b59775cb19b14e2a5bb0754705e1342e25ee1824c75479d317ce844d477599cc6a637604dfdeaaa02a3cd2c1b707661dbd2b1fdd77d2187c1e2295d92d98d4e5ad4208db1771713bbaf33e63f16163f63ec956c7db48d265e53058363a923bd51bc3602b184eaf2b8855dfb15ab9015d5fa72999cecfdde888f95252885988052c9f1666d4e90f82c1ba1c27e4b0ff07f99bc4a54b9fde4be5c3882c395f69ae3754576f65ca8cb03eb2890447ccfb37a475748742ac932b615537b7ffdbd9e73feb1bd29a8039b1321f8b7f6bd80bce4522174ddbc4d6e95f18da7ea0d4dae4d14afde65f8ba726662563c225de20a218927e2ceef7573af8313db530d5feb42bb2fb7b4dd616d25dbcc6f443a9bc91ba616b858ad827b049a65916cfd0a823a2726243d8393e248a8e1a66a057350107d01b65f4bfa03e6f22a4c26645b7c2cc63767e89f2a8860632226cd6fa6a68db79949affd3ef91758168a295a5342e10c402f2b2076adc203ba107a177d6fa79f12de20d084cb463bf0c74b9d3ff6ed9455301a850008499cee +a6fe30dcfcda1a329e82ab50e32b5f50eb25c873c5d2305860a835aecee6264aa36a47429922c4b8b3afd00da16035830edb897831c4e7b00f2c23fc0b15fdc30d85fb70c30c431c638e1a25b51caf1d7e8b050b7f89bfb30f59f0f20fecff3d639abc4255b3868fc45dd81e47eb12ab40f2aac735df5d1dc1ad997cefc4d836b854cee9ac02900036f3867fe0d84afff37bde3308c2206c62c4743375094108877c73b87b2546fe05ea137bedfc06a2796274099a0d554da8f7d7223a48cbf31b7decaa1ebc8b145763e3673168c1b1b715c1cd99ecd3ddb238b06049885ecad9347c2436dff32c771f34a38587a44a82c5d3d137a03caa27e66c8ff6,8dd1f85c100c7f05b59a9a0a78581b5541ece6a40672d9af23e9f80a9d3fc96346e1b0f3dc309bb110e3f9f465e08371d93616258fc5cf5f3264b6f20cd795facecabad03bf361324e242f098fe715e14d0d207b5122b01e47238e8ad8cd9c2e874e816c970f8caba5c148b9d2638adc5d13384dd5867679b5821a37b77b5c8ae773f982d07f037e319b0c2a88b8716d8642edb7c51afdb44297aa2ad22ed1deffebbb8a89a601b3c8ed2bc1894ad8ee27d85e4b88547d64394709532582eb95a682aceb7c205f4a3cc9693e443d7cbb1e1def42905622ac0e12d0543be1786c13a913d45c63cd7f06e058440b34dd44007cd2b7ba489d89358276a3d597e19a0b973f558b4bee867712543c1bdc817495d3222d4472b00784d7cfd83bbcbce7e2fcd0f9c1ec0fd003b3d8ec74233a3bf7e95430189eaab5ce341739c8f198052a783b9ec0331cdc1e2bd8b25fbe9b471a768cc6b8f2c90298196bc65861678c7632b7914d365de4bb2cf9dbc4a0a06034711086a0d09a9c139132556efd7ceda2933eb9b86ad5ba22196df404684993a8e7fecfe6e582e5a3a4717753e5f3bef462dd8820bf3857881d54af1d0f2ace27ab1c208c3d5087db201f155164c398f2ade81ce38ce0d741920364c57580522fe1f0299a6263c3f4a78e03300372d379a4a9a550ffaeeda27b30b329435a8b2e3c127568b48b1a75462f576dafddf6 +83167ff53704c3aa19e9fb3303539759c46dd4091a52ddae9ad86408b69335989e61414bc20ab4d01220e35241eff5c9522b079fba597674c8d716fe441e566110b6211531ceccf8fd06bc8e511d00785e57788ed9a1c5c73524f01830d2e1148c92d0edc97113e3b7b5cd3049627abdb8b39dd4d6890e0ee91993f92b03354a88f52251c546e64434d9c3d74544f23fb93e5a2d2f1fb15545b4e1367c97335b0291944c8b730ad3d4789273fa44fb98d78a36c3c3764abeeac7c569c1e43a352e5b770c3504f87090dee075a1c4c85c0c39cf421bdcc615f9eff6cb4fe6468004aece5f30e1ecc6db22ad9939bb2b0ccc96521dfbf4ae008b5b46bc006e,16322d3005bef6a6cd077c13f13a0dba11cac621605d78e2ca3ebb07386c0acc23d0b21573123e1bd43accc1f12dbcc34874b5c18b6d037b339e958972902ba3174a9831eaab3543b901b6cf4ef5cbd1ce1b60ac90e94f6e15c7dad13ac4b8affab3141326ae057852dab28fb1564a7375204805747a45c0e96e2e046611ffb1bddb6e6ef5c0bd75e4d654701bcd7f903daa5b2d32e017c5a81a907fa908c8523d821a9947e647767f04fe6a8d0a9297f65610b1ecb332d3dd37ec4501400c3c1e0035a48652de4f0bc038c90c5b4fc2d969b1951de5400184e6c761c7129711ecf3f4146c2b8d662c96a30491771dad21e0d9667f7312147d53b1377999f0274d239ada0e2e2843676ecec0d528c89a5e6c4ea111accfdea9d10bd3f79326283a609f1e2c9fdd4120367dc5403d53a6d0b0dfc3a3726096ec7f6ce189a29f23053f79e179f275e32db13567e108a63c7033286c4f6636afa91c37e32a5b2bf01995133fad11a96ba922ce4bf5192a0536f4f238f9cf0aead2265ae73ff3923682644cb414b8e92e9c5eb8d46e39e46a5a394d75ba2d01a18b2309dec99931fd9c29dd61073b23a19edcbacca8d9227e8fe23d313947ab6d9c807c8c3bc8e189158a1815410a94cac21d931560bae3afe409d4904c32d4aa5c7ff6463ec8c432f97effd812ddbbde53ea65956c9c2af72adb2c7b5bc1efcfc8ef4ff8a152aeb8 +3a3a819c48efde2ad914fbf00e18ab6bc4f14513ab27d0c178a188b61431e7f5623cb66b23346775d386b50e982c493adbbfc54b9a3cd383382336a1a0b2150a15358f336d03ae18f666c7573d55c4fd181c29e6ccfde63ea35f0adf5885cfc0a3d84a2b2e4dd24496db789e663170cef74798aa1bbcd4574ea0bba40489d764b2f83aadc66b148b4a0cd95246c127d5871c4f11418690a5ddf01246a0c80a43c70088b6183639dcfda4125bd113a8f49ee23ed306faac576c3fb0c1e256671d817fc2534a52f5b439f72e424de376f4c565cca82307dd9ef76da5b7c4eb7e085172e328807c02d011ffbf33785378d79dc266f6a5be6bb0e4a92eceebaeb1,14236e75b9784df4f57935f945356cbe383fe513ed30286f91060759bcb0ef4baac858ecae7c6e7edd498f01a082b63fa57d22540231e2e25c83efb3b3f2953a5f674502ab635226446b84937643dcd5789ee73f1d734bc8fe5f7f0883ab10961b9a31ff60dee16159bc6982efb08545984bf71fed1c4cd81c0914b4c19fcfeef54af4bbe372f18cfcd3a18657f5b9450f99a78f0fa2c3cdca7461c4ed7569536883b66cd87e9c200962902eaa16a54db6a0a5cc26d889038c0760810b5bb4f33f1e5d639b6f9bc7ca62ba6f8c9f8de770260afe47f4e0f82f102198eba27f543252ac8ddd83e1b8db0a91ac65633fd12a550ebe96f93aa6704ed5905c234fa6d9203910cbd02de166c4c3348fb81ef7b84ae1455fe318b5fd170883f49ba2f24289c479a2c7531406ba989beaef3a79f659028642e9b033f7deb9ecec3a7a9f1dbd2451fcb47c81e21e91d20b924c6bd04c1f0b2710d2e570cd24bad5b5de4e49aa80b6add5507b4d2e510370c7afa814d7e1a7e278e53d7ccf49a0a866ca3a7b5bb71ef3425e460feeb29149f217066613695f85506a0946cf68979f04ae073af8028976bf0c5bdc2212e8c364583de9fbd03b34ddee5ec4cfa8ed8ce592971d0108faf76c8940e25e6c5f865584c34a233c14f00532673fdbe388cc7e98a5b867b1c591307a9015112b567ff6b4f318114111fc95e5bd7c9c60b74c1f8725 +# EOF diff --git a/Lib/test/vectors/shake_256.txt b/Lib/test/vectors/shake_256.txt new file mode 100644 index 0000000000000000000000000000000000000000..541139c28ffa204f05adef38d064317e8ea009ac --- /dev/null +++ b/Lib/test/vectors/shake_256.txt @@ -0,0 +1,258 @@ +# ShortMsgKAT_SHAKE256.txt +,46b9dd2b0ba88d13233b3feb743eeb243fcd52ea62b81b82b50c27646ed5762fd75dc4ddd8c0f200cb05019d67b592f6fc821c49479ab48640292eacb3b7c4be141e96616fb13957692cc7edd0b45ae3dc07223c8e92937bef84bc0eab862853349ec75546f58fb7c2775c38462c5010d846c185c15111e595522a6bcd16cf86f3d122109e3b1fdd943b6aec468a2d621a7c06c6a957c62b54dafc3be87567d677231395f6147293b68ceab7a9e0c58d864e8efde4e1b9a46cbe854713672f5caaae314ed9083dab4b099f8e300f01b8650f1f4b1d8fcf3f3cb53fb8e9eb2ea203bdc970f50ae55428a91f7f53ac266b28419c3778a15fd248d339ede785fb7f5a1aaa96d313eacc890936c173cdcd0fab882c45755feb3aed96d477ff96390bf9a66d1368b208e21f7c10d04a3dbd4e360633e5db4b602601c14cea737db3dcf722632cc77851cbdde2aaf0a33a07b373445df490cc8fc1e4160ff118378f11f0477de055a81a9eda57a4a2cfb0c83929d310912f729ec6cfa36c6ac6a75837143045d791cc85eff5b21932f23861bcf23a52b5da67eaf7baae0f5fb1369db78f3ac45f8c4ac5671d85735cdddb09d2b1e34a1fc066ff4a162cb263d6541274ae2fcc865f618abe27c124cd8b074ccd516301b91875824d09958f341ef274bdab0bae316339894304e35877b0c28a9b1fd166c796b9cc258a064a8f57e27f2a +cc,ddbf55dbf65977e3e2a3674d33e479f78163d592666bc576feb5e4c404ea5e5329c3a416be758687de1a55e23d9e48a7d3f3ce6d8f0b2006a935800eca9c9fc903d86f065367221067658b4d7473ed54800d196fbe1089811dd9b47f21e3698b1573653adad231c39f145b586d6c0133378416138e4423f7af7dacffe965706a3c49024002b53ba05871e3f066694b163630b0053be41fa45d4317eaa84214254038a37a9c83d62eb9ea6e6acafa6bbfe5af9f389690d5a9e27bf97c1b93d93ecf36df6da212e12b2448154156e94687336b6da91e368512b9f34c616166542923f3618640d930f922a3dddd2f87920378541446f2223f593931bd1ba02e2907ce3404621f26b900d05a1119a9e4934a7cd818dd9237445bf50475a011ea0078788801d21dfecb7a2bb294e4956dfa71d8cc472405342bf80120fe18a551d88d6abc24d83f077bfb25ebde5f4b03678d677ee646dce3496d5138be108782ca5a00aaff3cb4bb873ec0f2e932dd74847033ec5f07254e3027b0ac12db7d6d3f90b53d8a5bd63b99c3bf5cd38b453d7cb12d0ae2bf1cfd3ee88af71bb6606b0b791defc2d762c8641bb8319fe17321eba407eb744699d92b35abd79f5b9a85408c93d61233fece638023875aa02b9edbacc84003a28cca2d55a0742d635fda888905986ca01c1e6420d49ec25224d84e915dfd1638a492282f1fd053770168953c +41fb,b64ecacd5f7499acc085c908d35dcc1fc0131816f28d360592e1265079f92a5f844c4bf6aa50d98d52720797e8c992f43c76a73fd95f9bc4cd272157842ada2518190fca342dc20d0c57cddf01b3ddf77977eded63445e40be82df8d26db629a2d307ee9fe28d2fe557e3971858c6d67c42be2cf44dd7570521ce06474467425b7aaae39db90945bad388009ed5715c684bb4e4981eea324ecf66584ad08d9f27c6a4dcf615591857bc7364e8a7c136661ae5ffe828c734dd5ea5a071276e8477b8525e02b7b445d91cc6e37d58740dc2b069be6d92e7df95c1ab52b76f7761ae34328962eac7156e460b3c04ffecaec8722a56e7373285e42d4cac5498f8d7dd5ecda9f9973a32f8d425171e1390bfc812c9ee4d4ab8fa9a0d93aa90a4c258fc64d77bbcf49977e87c3810c80c4585168996a31f446f9391a193b888cd321e22e9368f4f11495fe124141c04015532345d7cb0a13a4dd9007d737b3a176a88e5fc153d4ac2e8cd641c40c4261bba70e1b87114030ff67cb22acec90ac288d6b59d25b00038468b4780254fac4ef158ec2cd52c0ab9217eed1ed0a5e7b4c4b3a64b1824e2b27aa53398765d5352bd1ed0e9c7b3fb264d141741659f7d8fd0eeec9f9163c42afdb540d5f2c87833880a0c942ae4ccea7fff2f4c798b8aaf24c33be8054a09459a3af7200d555334241709a18ecf88ce93c99234d6ab0285916ae +1f877c,f6bf0397dbfbb20e4ae30f0a47fe976cd109b3aa09b0e3f29f560e4ed333c0d083326b03f6eaeb57e277bbfe1cce36c499434d838cb4c8cd8b02a87790f4a6717b22d46f9220391c420a1a1bfaa9ed5b85116ba1d9e17ff16f6bce6704c80a49fd9ac42689db0996c6bd3266694077c6de120043a827d44979ce8ccc6aa7e5308eba64acf9ffff51d36bc4401f8117d4b96340c62d106b0a6445f01987f9c4c0a420e1a9baeb594bcb1bdbfe59b6065eb91cbeb252473c7858eca475e1c81e8425c7e2c1706c4c4abb3aeae39332479ecdefdfa93c60ec4007a51c5dd093b527264155f2202e01d2083d27d71a6f6c92d839e6ea7d24afdb5c43630f1bd06e2b45b2c0d0ad70bda111363298ab9754f26db00a3fd93d72981dd463defd286320a274f5422e9400dc6e7c78d75534c75af6b0398596eee5048919b8fe33467c2b7c227bc88994b28819815d821dc27bad0458d57f40b12a8a933729a0f6bae74dbd150325d14c302835ab95dabde87a2acee9347609a6175dbb538fdfb278be0b3d5f062768f9e0eb1ac9c36b4e05e3adfca73981cebaf6e047a18196ea78846d9a782b6e1cee2036866dbca749644e74ef5a4538d4afb1706b360f734814313d20a1ac626bee7ac0fe9f277d48bc50816ac9743a61e32f8b26ca6f4dc81fe7f3558aa2f18586d89a8e3070868c76b4ca4727f541072dcdab3d547d52abb6f356 +c1ecfdfc,ce7fbc15503986e3b84530d84a16ef64332a6ea57e354e9f2054bfc2aa8891f94b4fdd42fd227c94b33f9ad45cf3982239f81fbc2cbac7809f01e1c294073ad6d2821c1283c5c427f41fd46455ef7b4ea0d6d5e249af95fac80a8678c1a5318443e63122ddfed2591fc690527f97a09920941b02439af3ba36b17fd588e187fcbc1ff109ab4a9ecfc671926ef0cc9c82ee06ec6759e2758a8859b8fa9ddf46d6c049621ff589f3ff56c9419d6f48a68b68fefd068abec24824d7fc150277c2439bf78d15d59dbaa2cb17e5282e6e9ed744841f4a4bbb778cfeab0471ce850b2a2f948db3926f733ef7b3aa9ab8ea84278dca62b0691f5dd13ea11660a8e2fb5cd8ba74a352c044e7219e750f29b62f94ed268a68029b94b64f3d4f2193a7fc69ed34a59657471f04c4961084ebb581abcc9d50e3674a7debb285fc7215bf6606db1392a7f1619b347a4d07d230da07811fde2aebe45a70178cf841c619f712ef26beeecc4183a1040076e73fcf6fabe5c25a4b71d564a97cf3c88f1856d9c8b42e94f746ce4605d2aaeb56d1da5527598e17e5680d309788e09910beb74df7d3c3cd4ec680083f5845f4a1c15070e57979c01b89df7be64435ea4817bc0ad23acca6cb878f7131f02f9215e2d5c12cf3b4d24b29620c891a54ac8be6e3dec08397887de0ea86b81a5459b968fbae18b4b0324de7e7c1aeefc7598644ce1ff8f9 +21f134ac57,bb8a8447517ba9ca7fa34ec99a80004f228ab282472841eb3d3a76225c9dbe77f7e40a066776d32c74941202f9f4aa43d12c6264afa59639c44e11f5e14f1e5695208db78f37cf3ac172469de67b80014d1a4b968a56f855baf35a275b8ec77b9ca591257aa2ef048663cd05d76b72cf3a9d2bb44b154b16e95eb8b61bd8415a867367f0031bff5d49237157c197473309fdaafc8146ab9fcd4254477b052ab306bb575eca6872863b5f43f026c2be3289e857d50441330ec02f6ab4c6329b18d3af0a1ed9db70f34016ea0caff1f0ef08ba6d26566df6cce9a457e1900fba3338a771e40cfb39581f16019d521e4f398539c4a6f2ca22ecf9158b96064c0f26b8a076e58b5f0ba3187342a5c9a5569e6d08a2ac27258cf0426d995724579c723a0fa8269b4239026a08d88738156943f1dff6e0fff5e4696149436cd97732424366626ce7b67a3bbe480e425b51872aae7ce59e70995c194e00fee82119a4320a4b91158db65b83195c9b799d3eaf3cbf8593d11dc67ee8c0cd7ca4fae69d9f46a7e70186a33dfaad510d8def82aa5710b0abb70dfc396ecfd33f56f66957b82a220d1eca09166f72358a71054a179c1961b64f26a3d7aafb030c28a73337862e8364d3f562b324ca2ebef58b7a8f089213178c8d0addb5a18022154cf010c722c279ae60aa984597ec6542ee1abdcaae8d5545ff45e781abc7145ae2a31249 +c6f50bb74e29,69401ebf1d4c7ea500be60ef06783dcb009a13b4fcd8b341e5f2e40f39e732237e86716f26873c1820bc36d20f6d5e64a9c5e636855305cbc3f4be4a9905b5f79fb769a794299eafa8e81ffa51bb4d602480b1c40f9ee9bee017d5d7f6de68c8a79ee92a20b9da5bd3d01bc565cdd3e5786fc4d48f719c01cd6d3cafcd500f4f768600e6891102ffc10f1394e3a40a1bd54381775bb400ee6e20b95420fcb2c86bbfcf380bc95eefca33bc8de823e13b4b04a7ae1fdeb8279f3ef3e4fd50b2fde530b0d4c8dabda6f225a4121a79fed79d8a013c9df1103abf081294fcbbc5abf20ba38e0075169a9c13cfff94aeb271a46875710a60cd78915c33892d7fcd6c97a1c74846adda847f58adce8ef762d11c4f15ff8b97f9bedc97e1a8ae554c0b9e66ba1d48bcfad0d56f91b65e25b03a5e48cf4db0dbc467bbbc1e037743991ac72b4b259d65013a2708eb825dfdc65093a4f4f5e98427de7c60138467d8900adfce1f27408638dc66957d27cb774bbaff0bedee0f6553bcbac9724a20e8ed0ce6b2f764e4f0d80e4521788a5cc88c3d36f19925ac2f205cf6eb7e6d6888eefd0be49bc8bfd8a80b9e05dc7513beba7be52d39bf9bd2b2dcd03fdc8f8e7f90a83dab2ad85f51d040ba0f1c0a9dc38e929a50db7f99a26836612e601c6e4346e5e895ef4ccfcd6a5cc3777fc11fa64a9ac27d2cda67e29cb18a7e99e2ca0730c6 +119713cc83eeef,c02561c12ccdd167ca959d9756cc70946f7fed8ba705e3edc433d3c45d9299d0aefe9e8e25d602c4db0d14ecaefdfdfed2de134ac5d0c4dfc02abefffdd7667a434936151d529a93cb266100b94ad0449597b1590398a1a63c42649385b4cfaa828c89037e0f97beda8450a68520143889a92c258645664eb57cba01c3b1134318e11a1848d912d0d2cbaebd59a71b52495671c548522f401394fe48db49956c03044cafbd40371ef657f1aa86e4969459bbbd21dea563a51482a47147ef85487a5ccdbc532bc2aebc3265e71bd8d56f4521cd93354a73d175fccf5aabef2768de2d8e851d4fc21ff032829411db2668300853ba5f8bb1ffdce3ff59197bd1833d2abfb8c3027b36b21969f7e36c3b6f3faba9454addecdafc213d347a44b0d364997a9e608bcff3d2004139cd05005b9bd8fec09e5976eab977b5de8e39373c10d9ee2d2ec196b33689783ef3abc3dbceca9bf33e8dee9a1afdeaa71a2fe42a3b0c60781c9a2d5714278cc7cb349a3b6e7251b96e4e2fac606b459c28ae81b551168d28acd01d4a08416b6714d8f82485a1c6d5348f7dc4981aa38e7f39edabc981022c4cd3345383d8c25c929fbf66026f91664998bc34f9689375d06ff95d208d4acc7791633b222acfd3ea26f8b5c4858997a1ff77050f280ac7b7e5325abe9e55fc27ea8ed1d9d32194b0c5d8807f94ae6f737276065ca08c323e9ed421 +4a4f202484512526,8a804fc3a4fee6cef6808c756a17bcdf6b235808493fc78e79701e59a9e9a67d60f0f256aa69dc0258a2510f9936aee2bcbd0f679696f439f37bf9afb170d44a58dbcf71eff14cec1e624d3d8f1ddddd3e33421b1e305c794c2c88fcadf9d7c51f52e4352bf9c9c895aa457f5449e82fb36e2a64d1aa69771ef3d675f09030a95653837ab2237daa7fcec36651355b2507713cc6a2186e950de82dc699122644193f8f231c607ba7f3bdd0a214b4ec0155d30517f681fdc2a89d3143040be0e0b6dc7e5185c723464ccaa2fe321af3b4174283355fe3d1ced518e00b6063ddd607b166ba388978294244ea8ec773a528003a04914b76e9be3337d806ca20c584b2bb66afcd144417e3d93243f185d26dba90ea39259c7f23b8a6427aa8a7622f277605f4a463f78a0c189c8de2c553ae20773d7cb4f7e26a13f4204b3752d9ceddf29849798479a4bd0d7ce4d22cc51f88127435bd161f026b1811a723e786db1dc01f921fe076c3532fa969ef1f8993e0a4fb6c17597d8db38dd7af259e322751cc0a1cca2ee4940f4ea56ce9179941cf4696256cd04ab853266d12e7e679377d54e2c2f24832974c573192dd2fdd4da5efd72114109248b03f0ae03123252ffff977bde87af8d8022c4c51da68efb87abeeda7a72eb4d0d1a2eb65ea4cebc7ccabf3787b9be98e14e4a273635f69e3e4ba557a1a42d1bf69ebd359b895320a +1f66ab4185ed9b6375,7b5562aba86e6329693ce1caab2506af93ad28be4de045e66a7b277c4dc3c2c9e698ad5f6d8826230a38fce87142dd83b28f055fa7a9212f5017374a7eac5bb7824c1540597de34be9ec894eabcf751bfd5de029a1cada7e599d433bac0499aad9782579d28223a5d16264efbf55eb1370748e7dac4b56255468fa9694a93c4b3759f691d9a4a08b53a15f61faa1268e38aaeb43b3fcdbf0ba003e2037eb52c8e9931db9c60ffc1d1fcee7663d1017ab6dcc1b92472a88a3d568af5aff930aeadbae751753cbf2f987338deb1aa822fe28788866073319662438b6caf6bd8d79de14fdb6d30f7983f5711177765d7d5e1efb610fafc9de733c9db3fd2f1c35421d29cb96f87a0dd1e83ad19acdc7c2bf7a6f047994a96e6d91bec34aaaf18aab7b32a0b379a60f12afc697770cc6039031c13b5dd66e0d368609d3018accfb02fa4973bda707cda096d712faf59b43be3ef5eb7c227530c987dc4991955796b2f588359112b9e7566ca785cc5706ac333d12e2da37a97a13b69540084d1a5908ed3baf73a0e1c55a6bd036f1342f8ec671593b9b555defbabb3364914e4396d6e2b2adfa951a6a263aada6d879b4ff330f848d2598cb418e530bc63bb11e7a247c5a2c21d5c2a34d23721955567e4452df9f5e2108c1fea8fbf672422bb3b85c7c5664b918d3f3644339367cefbe609a9b00c250111801c3f365ba752709b76e +eed7422227613b6f53c9,c92fdfea927eeee73162c436c6a3fb97291c33787bf7c2cd80decf6004c043bc4509a2cfac1fbeeb0bcbc7c2974b168af3291dee1af2d0826935da79c5bf7cf3a211f347c2a44630dcc20e964e3be24a20766a2ec50310f4b1990a3987fd8d144d3a6f091c6f8ecb7b2069905a7a1bce8a49a9779e9132bae521fc44689f7861b7c735815448984d6809c2138ed64a45c4320e09bf459a985a41d024dc4ce0d95681dc9379fc4dee3c024436e7a949589a74b434f6b5d5742501d1e4761e0df89f4f1943614c5682086d31f6eb2b65a005fca29b48777748132a15bce74228e5cdcb95c05f51730e8e27e9de71d582a95ad3e78e64b978d872b91a88c6175ec3f92d5aac14bcefd0f6d8d5e2e19de467c530fde86aaf6fa5ae0254ea01d70860278c24be7f7c52669aeeec52c606fe664d7a8e857eb64948d663dc11e9de33a410dcb3eb61fdf6e9622b66b9b9f4a39c4b578a8d346906d14aa713d2b266db5b85aed05186ccb2809b38bbb3c9f99c2861793fc70d972b51f2199674e734d46fe0e8eb675777ac9e4b578a7de4dcfb5ac1e7a2eb0067237b985050d66885f85ce3410467b5ca374a9f420d8ce5da4a4934fe78065541c53d071c88f0ff132eeadefbdac5e98251c597930cdb32d79656eb44f95c78bbdafaa59b7e36da08a58af3daee99536efb56319643ff422cfb53d152ea302a6458f58b5eb9f2c81c31c4 +eaeed5cdffd89dece455f1,f772deceff020d1be280e7f93df5056577e78d104cb1e2afd422b021c6206d94af56eb9404f8294403173e4a6932a1576bcc47580b6ce2cc80b20ffb274fac017fa05b3d804a6cd8e874cf258e5d46ccfe06d76dcc18c9874cd3b7543973ebe3367ad38e51f0a46b92d47a68018a819f2d90724ea9f5fc51f444003757b028fbf96f5413296aa9bb8532773eb8cb7cfc803578faf52082d4bb8af606301fa927a94fb62a73e2e9fe367e782351185516c181aa674e19301a38d1375e1658a181dbf927973c02207bac3a0b65c0c6904e8195a3c6550d13cfd46c1885987263e82ce56485759bffb2647f420625f2b483c2750fb0b4707a2014ff57b1a42375b37b444b0811ced4cb93d5c45551d5e1c8df20bccd9437b7e439156dd9ad4d905393afac1347ab2979811cd1beac7c454c4b7166b85bfe52ff6c4905c55d83c15c3a9a7760bda9fc4b90ec4aabf9cb3660a883be7137733a1477971d479049268add74e0c8210b1a9faba84fb940f62b1193ccaac3f020d10ce14dd8c058c46bc35846c07a10dae9c03c3edc323cbcc83987df1fb2abd141c7c0694624aa68df9c306d2e179fb4d603f42c99ea369c90c176495104fa7de772ea71a9fb014b467ca220f9c004f287f8f0786b3d47c9daf3feee80b2ce4a92aeb0ff8e8c09448dad76f5fb01d6997ebb139d7fa5df8c0bf12bbe0af2b6e354c4089f32b8c5294634 +5be43c90f22902e4fe8ed2d3,00f3525289b33fb3c179398ec76f2e31b824a532b2aa6b2da6ffad5287e07f9f9a2fdd2f2032ac202119ca0a01b7c9c6de724877ffc874d5e578066a4be43757bc2d9b09aa7b483749e0f88582cf9cc3d47b8a0a98d70ac793326fc5eb6533f00eec34bfab3518ff4e98b79582621c2bc7bb7ac8afaa8d60df3f072fcaaf514fa7fd9efe2b1fcd3cb96a7f70a87436922584b93ef74bb0325416eefec14efd150432366c1c1e5f7949c2573cde16a24c42918c919abd988f8951207149f873f78d2793fd642f3b3e93041b8855b8ccf62a2f6a2b8ece4dc704cf693069bc789d470fc4938ad23d5b5dd20d13e31345b2169f750e69c4913e3dfa1f1e54a3019a8333b6648659a6a2e93882fc4f8ae0234fd149123d831f148213f578e8961dd07cedf94907abadf7efd84500e501bf2588e3b155e7d24815da9584595efd2fc6f1768f651c1eb10e00295534f89a8dde9d37c05f7e4ef9ea236b615f82bfd07e7f6feb1c62dfcdd4f598bdfb3cbb0fc3259ed96d52ae156b20f0f6ebb089127cf98f045bdcb12db84c2ee47800ce36ab10f982231fe746d32fc5002700e264aaa6432e7bc6bf4f4af41e82e256c3dd6ddedb24b3607015cddf78bc1ac56f835d03d8297bdee57f87effbd066c3de372f285eb2e7d7359684bd2072b090bb78c3ee71a45a0cb7c22eb4081ceb3cdb89cbaf3d124ad86a9a830457e273c8ab8b33 +a746273228122f381c3b46e4f1,1cf1698f0702653368463a9eef102e8588fd5e711f4ba16e3798d7c7730acdce6c65ea3849cdca9d08437bee09f78d52397c92d0f00acc9d5e9450213f337b9a75697e8fbbddca67ccbb7f8b2cab1209397a4eda1ba9ab1b44366e4f7a0d2db47d5480247194d486d63d72fcfeceac8cfbdb7f8784d4cc9214b3893fc7eebc97a33b9ddec9605484c96bb77cae4d212f16229dd507622a01c861043320d9c06373e1e0d9649d95b42a990b0b447adfbd307dad1394c30d12e010ad5f6c8acc729904ccdfca2162c32c5ee5654316e10a97a192ec23baaf594b711277a301fe6eeb4b54903d1bb736d4788f65dbefecb4761685c683db56c05d0f26f179010cb323c2fc8b9a44dd4a172be2228c6b0a0779b0637e6b5de047776597a17fe94d86aaed911a1ddd27f8f61710cca8c5f38504a50f01304b559419f06b5f043dfe984b4dea2db6090c1a836f26c0728048c0d89401722b9576577f11700bbc5a6bbf1c23c687bb478112da0dda52c1ed622d0227382f76edae51db2ff14c098bae8d25a2a53d98508da98c99aecddb7ead8da98ae41bf21a59b3fe4b3dd68f0fb15242ef3056fbf77462d4ff67e0b344be02ccf03fb98f6dd5f6d306a4c2b2451ec8aa2933172689bd11a7e3911b236905d6d8ce1c030e754a0b493cfbaa39123b0dc4b7085f9fe5988b0447b706cf226edd34b644bcb591a002a08cba030f6b1927 +3c5871cd619c69a63b540eb5a625,413131add0dba2b0a48443d3399896ad65bf5f4426d234ae20c9d2db3d9dfab81401d7722842a58312f837e7de13069802f58c7ce9a3ad1703e9c7170d1ae751023147464cf8694515ab5e26836b935ed493b9d66d9229bb0b66f1c5ac721d8aec1f883dec33d0380ba79be198a6aa1f2cf555818d54cd28c0682eb44fa0f1810df50a8f005557c9ba52f02d70ef769ee7724b852a94e1710c6758307ffee309c8f884dd0597012679f7c97cf59f8a41b06a845ccdefd5cbda268885a2781fee48fe4ecf4d0559868607f3524aa25d1a5cbe5c33fe0e8e8e47b6705203d49cae7f1749da49cbc469b8870c1cd7d029f6398cf7aa0d3114f56f78885093a59c0c188adaa40976827ae1000bd6ab4c7a2154d80ac6786cc23adef333a2c538152584045a87e942b8033c565506bd319ad99c85a4655f6e47979f55b5f9f9822f9a338cfbaa50d580e27953ba9d13bdb3fdb480226edd2a8f8f56c75015714a51ea63c73fffac63dc3fc6fb8d509bc40b87b9332fa37daaa441d05984ba56781ae25d324e508b300e6b07629ee5bd2de33d3bbe6fddb699e35c324fdb521cdefce30d01570ae82803b0b54a7c1af4b45121461a848477c11f535b700633d88a68ad2abd9afd09a4ddc1be5511b574ca6e525eac7a6cd7c26eed3e5656142ab8b24d97a76fab94edd8af21ca7170a98660a5cbda15925e67c5c579363dc4f6970c95 +fa22874bcc068879e8ef11a69f0722,2feaf391d45b2b8632ea10806e35d465f2f767dccea9304502a4cf9cfd85f7cd46bf0e5cdf2c31a43c6aadeb0c4683b3fe54e042c014457d0542a8ac09529c1931fd1ceeb0eef6c5a1d28f7fd1e7998537d78b9dcead530b0ab257e273432d3d7205e451cefc6906451dddc6b3b0da1d1f2df3f043396858e7619b8a420d0cb2cdfbbe43e19bd2bc670e2f5da51a1b8141f7fa0fa79538fc909d31847c46653c8184114505c51c49c844ec18ae5c6ef7820400d0859b3820fed6b023d1a3455c2bd6e1a7d25169b58bb71a82107893f27e994ba04c79d209ed97e359d02b991e402cf0d14eb61d4c1ed931b4526d63e9e9517faa5bc83a23521620fb5b9e9ac1cdf45536af54e567f5d9bc31196d23c58c0c70939497a3e11fa544a37991b5c06b8d7f57d3057e83c3eaf1758ebd0f569e5a8979d340740a9fa1ade5a9d956f171d9a0d0efa871e98ae8d5f3d5733fdf0388fd8d9564e6c267c6438f0f78d7a224dbadf7e6e645ec6952b96a9d6fb441cdd640b576b2c92bc7c5fb11ce767b0105de7907dc00dd4f8f25dc85b6a84083500f3127708ecc1250aa15d350437664d0d6ed61e83dbeb951260c1746c0f06423c4b84fe75a752e7f034b2584920288ee697926b9bc87fd0862992c3d9934876a978744043d8949273a3583a7c5ddbc25ddc0c7befbda1f306c9ef7a2f21e15543ebd5ef87c39814c91e1b60b079700 +52a608ab21ccdd8a4457a57ede782176,57119c4507f975ad0e9ea4f1166e5f9b590bf2671aaeb41d130d2c570bafc579b0b9ec485cc736a0a848bbc886cbaa79ffcd067ce64b3b410741ab011c54422568089405bf1e8ddd9e3bcefe1a713dda18cc2b73fde0eb323fa7518de2808c875a6c55111be3e0cd20663b794048f5ff44638ef871fba0f4c2ed41a96d3621606740935e9ea1abefe15a1a3bd55c8ae6b2c021cc772b34da219115c8f6072a09f2b718e26ecd2538e5f12068f577ed7d03a2bbcc7ca7db81d2cbaef2ac8f33b1355798576cd3545b9dc792fdbb9c8d1c123ee0407c6328e09103fa6ce1b4dc9ffb0be7236dab3abd29e704d0c352c524fac14e12fb61929d98ded973d7e8785a8acf52af56c01ce62ad93660c93b683fc22088d7302f72d0dae54553b0c3e6da7c498beb3aa46e7459779a1b0e1fb19556a71635b404c0bbbf3f34536f2776fa12206513fbb1f2a11ce9683460d22778867aba7335210d817b720b3d8a8c48243d128ea2a4ba8996d160351194c0ad3988ed0ac5ed61c1f576a33c914c2bebee0eebe55878e2b43a51e510251068e3c0f7c7292189573eb6af979cdaeba8b8e359e6b632babafe3528773cdd4a1861b7ab2532113f2b259d45598a76d54c739dc2f4af2700f3b5cf22431ed9f73d53caf41d134f5cc67ecf8f99549c091ca6697ff20e08bf6ae9b6be74bc77f26db50d25f48e67a94dd705521f02d3cbd5fd56 +82e192e4043ddcd12ecf52969d0f807eed,87f2a509e9d42b0f595662cc93094f26f06a86d79d98398b7f87ee2bb5fb25384f9fe3f7a72ab5de21cb3b7836f73618307242d53937c67cc5f36a7552f917db12a4364736b08671314ebcd3f34c670e0bb066d3e8792ace223608f5a152ecbf9fcb4242fedc1e27143835f0c06320174e7eeeeb60f6b5a8dc9aae97eca494d79b3ddfddbe91d3294ab4c3b3cbd1341ea4917733fb13a15ba34b46f0d5981c9dc457a123c4152776e15b37870c24edc0bd9cb73cfa5d290739c17289c2de3a71aba0dface3b76df71cdb67697321772357587e3c2319c15d867a76f5c7bf5ca2f523265d4118ead7f96bb30349f5c4373d5e4fab4076ceb6ab8c11ccda6b7272121a11f00f67d7d5ae31e86edab458bcde042c58e3d3368dc485bdabd40a3f6b7294c038b8ed3026e70ecc9ec7d6060504f931aaba816d5aa5ec9fa7cefec123e71c5135178f252885a7153a4714e0d9c95af171a6aab936f0b464ab07e32aaf29cd4d931562f700ca1419bca2ed1243f8ee1b442cdb1f5252225954136e2e80a7fbaf9095108647aff7f31d4c4caa050eb1a90ab1d1ac0f67b9f411006a4b76d5cb4b48d2154da87303ed37c9f911064e4d2f0531474e98f3f96b1a0a008ddd0af4b86435f8b26bfc7693c338c6af5823ff7a9befa57d72e2f1bb2982da356a8b3d08d4c19355fd6efb35d68b3a41144b49713a470bf61d0ca05e52044768cd +75683dcb556140c522543bb6e9098b21a21e,20561970bf01e4108bc498da4b8f900a0fa378770daae9703e166898874a1821ab0432d7cb1d0a7006e5461dd3049387c4116327d1d3e0755cde00a3c40bb5fcfbde5ad0a7e46650ae7cb37dc2f0e4f506dba47437eeec9f823acd89f3eaef767aeb39d38f8800da54790f362a3c183cb9bc420047ee86b3ec22e2b2f4c029ef64a5270c21255d39363894aee6478788436c758e4101f2096cd7f13fe76e54cc5cd85c9183e6e1a1a3a218379997aef9da643d8012f402fbbf88e6d0ae991ec4645f3118fef0f66d7c8ee74528d622e1e9ef1a69e39ca7ea0e045bb568980d4659ed20f0ce68503620a94ed7d5c9337dc20805d2da7d0f14b5ab3b93637f771c9e63d0b57aaee353aff672596c4660cb39381a9010600ce93197cc6a06219a3778b89b0f6ae003b5f9bef76ccf6d551b852e076a678a74e75e408e1d4d6b1960488ff21b6f6b7c308205f93bd9da1c6da1de9707307410bd7ae22ff24e24bbfdae849ffe2666b1bdbca2e08cf9d0f3f7698c4f983d4b92ee28b5b4b8bd98c317aefcb41e56dd5534f59da6c84b3d21587d2ee740f54a0c7fad62a63b98af747237b68f78a39cba4596f81a223367d34557688b324b5335cfaa67e78a8095c92d70802a2aa76129dee69b91d175bdc0a485a58c91cb8ef326b2c8d1d82325c4abe4a0f764fc01a9f0a743e7f107ce384dc223d7ad7481ac8ab7bb273237cd735e +06e4efe45035e61faaf4287b4d8d1f12ca97e5,f29097e10de56c3a4a24746ee4e7a6507050d18e40f1cb8c701b5e589fb645a4e400a3fd2c9c4d48e57bb9e146abb1ef98d0bbc6375c266754c7f1cf62682f0c6a6d6b11e2e0aea41533dcdc851319a34fb197d56f4a35d3b82c3d314eca59e03774e84391e8846d236d0cc51e7a5591205c6c1738b746e616b2a8267709103f51d0acf3156ba42cb226be3e94f2293e9e0fbc19bdf5717633e17b5944a02505cc53b01325d1d77965295ea6b6b50e12941767f7288b9f4e6ccf3f567a1ea3d17379bd1ddc357039fb356d9457956a8e149e30aa5092a4f85dbee2083a62610f04fd28a5a1880183366211287e9cdbe8b261e93557a38f6ec2d13fcddb5dd905599b5469257f3f2e83125dae5f30e8e7514d55241121d968508d1fb55c8f339530a437bdbbe04c42b6b229666763400f5493e31caab061a67accf41954c2aa0a7fa0087a4b828a1afbc62ba09e91a3aa44fa4a74652882b7ff38c9c1692bf83fbaaa17f32dee6d25518fa0721463334fadfc6d050e0cb195e477150ca1198ebe4d19ecae1b1321003823bf04d8f9d4866ba3013c9a47ff0b53fa6c70f57d220d86e8bfe71a61354f099245004487b65e7c45e090630e6f73fdc56b2efe6b3469bd31d23384cd4a830a716d50c7a91dd09a45a79f47d73bb32d14bbe85cfb56bbaac47d973a6f3f9fc23edd774a31b533fcf7e78a2a75872c5954788097e04845 +e26193989d06568fe688e75540aea06747d9f851,bf4eee53baeca39e2884780a1f007b5069e7a90f1abbd12ef77c77a4038ca56609d52b9bee113536d8fec7d264f2951072fadbf2d3a0b21690ed5478a540c02d903b3675787929ac44a2bdc6597b2ef2956b3640b3771edb189e98fbe8fb4cddc8c641adc707d47ea2dbe17616aa0acb4af8d7197626577a5ab5a71af7223327fe96c4472b3f21fba242416a266bd863be3598d57dd910a265335d17a7b51f59debf9f4049abea37cad33b8f2032a4fd5fc6f124044fbf2a9e47421fd6c1488df87b942cf01f9fc7f13f7824c7c09aaf6d739f4e3876b383546ec682deaa6f633e630101646bd1456cc22a7bac50190548ee56c5fb0115809be6b1d7cf5488a26660e0a80dca89ef655a963e8013a61ce27da232430183d41c9c9af96c14e846addf3684782e207916820f57e04c60e999340f9630e8505c98f467e2a122fefd1031d67789f890be96d7b629828cda153f9cc19bf8b6d0b0716f931f17014d9ac4b6d983dd41edffabcf33693f7558dab690f669c53c21a4d8de7bc32aca6cc45225a2c980aef2307a7097995d97ee060005cb965512cc85cc81a75d3f2f0975183d9cee293bc69a06c896634962369e01f475098c62d574a0d6a57a5fdab004ddd8c3d96aefacb39b3e4e1523447bc8fe397b488d8a5da6e4978aed897ad0a2fb88c5ecf86cca7a67438b988c04f3c14a754a74ed3d03d478ce9efd752c0531 +d8dc8fdefbdce9d44e4cbafe78447bae3b5436102a,a697f36886208cfbd55c3cc1c407c3f978a31574e4b9a790716e601c6ee0abc421aa5e5488b57e293cad8af40065c161407d0dcdfcbd172ffe700b60d7efa289c4755733fa535365db90082eee0b812442e367bcd4451f152fcd54687de4ae20f7fc60fcb3dcd1c419edf74251ec84471d35e4ea43e684995101acaacdc0d8ecf5f39840850557c70be1477a2f168cbe97fea85ea188594a4bdb583ef9dd2c5b682774e7e7e0cc85c1723cf91603793c711e2da65869be3a24d481c032a8674c1e0cd91a267302cc084b53c84af3d0a7d350bb62a2f3b9027e1f253c24d481a34ab8d8b164a78b0a60c95c13454bc4ae87c5e4e101b7d04c6c3f00e6bc4b4bb922f39c87a4ad843704e125f5cfcfd8a1e8e894230cdd7dbd7bd40a9cababeb5bae9cc49db656ac90ebee4afbe3897b0f7a64059bb331a4767983403df36c919759ad6bfa379920594d0f775ba2390a522c3fa7b0348781155edd29be53891b41f44e16bc5c290c1cf31ec33e66e588addd70e79fb26eee21dfdf40a3c54d8e1cd79f2848b4238f7b803891ec01623ad92e53d3ea22197df29bb6554aea8cf2d29ec4b673faa0a0c64675f3bdce07288eed03d980c36e4d10689dd5e525f34df78b1e76cd87f8fac22da1db1fd9533f58577d136fe161a688f3fb9cfb42d909efb98085fefbd8d26498a847c9493e02e5364290cbfe45570ba39bce1415dd5bcc +57085fd7e14216ab102d8317b0cb338a786d5fc32d8f,da7660020d2eff07955c3724cf85b1b9533278ffd2ec05522b8a876db92c7f9998f0f029b2156d630df390b3f8f5a31a8e74b943d6b36e1c97bc4f059408de495462a8e039f590d5fcbc3965a663f33be332f9e56bf37d9108554dc9fcdea2e771a5e22ede61ad5476153969d1ecf5abb108bbaaf6323d7e570b2747ec04c35e7de5ea2ac0306042caecf38b0060984460d000ddd3dcabcdcacc83414e56ee2c44f6d6dcf4875eedcc4eed761b62e1a3386970571ee127d84563034f1ba93d2a84310956c532f0ec4414bb01ad19beda20c714125176ec202a9f8f9917359794239ddf0376fab51a5160f0fc5cd16e7b7dfb0943cd524064104bd1cce97a342035fa47138c27dd9fb00f6528409e10bec016503b17687c66f2a00072b6245ec061598da570f36b9fe8f4c35e3e8fcb3ca1a8d913feab1890c8aede727e63c6085b5c196e82bbf872906c81440ec8b0a65b2271285616c7111c702964e3232ac34e7cd4ad5f5568c9e30b813941c02466b817cb1523d6717e58b4eccbcd74a923e806d82af352395f22526e06a71585b71569e87c3d1aafe8c06098204042cb2e41e92117e4264ecd229a7f2bf2a9188a53264195766707430b432fc332e160d786a9415a0260dfd91482b683aec0e62b0d1a480650041eb7cdcffdc9601ab353d9197ca15604351fc226bd574c3b66b1c6227b7cf6577df01520214a961d0403 +a05404df5dbb57697e2c16fa29defac8ab3560d6126fa0,f887a018985c64ab3d5609be2121e73f7ab70d4a90bf47660e535b72dfc0a1df20ec0c372862bbdd1c74db76a0ed12bbc032283aa5fa615af320e1c15315ea171eb224184691d13d38ef39debfa2629df136fee74c49d61282db8dbfd0cac30b135330dd4f25644b73fe8276c66325ba588c7178d39ead3c8db5bfb6a5f30f590181c84c6b88c421a4ade52b6dfb74d1f1d82eb206fbf8678d95442db8292189ea349d3335c8a4b57e88c4f91b12cd0a3fb10830783869acc88ba943acd63acddfa8634fed8339626233614efce39d60dd2d8b1f6bc87799c4b7ebbb7d407c5621e56cb2e8d3952e07d5560544f810b2bbc56054dcfa0731a9b67067cd1c8c4951fb2ad6466098da17c9547bc5831646ac73bbd06e596aedcc57804b01eb817edaf9d46e3728f003d286b95664317361ef0b5adc00dcb1f6368295656df2a41c950367bdd25ba8db2b6b7aeeb1161fd089d02e35bb9188e7a91415dba172f906264905be8ee1e9da5af53b3acffb44437157dc275d26323402c07c77070d479cc89afba181029fb97f9f0c9df1b4be0f0b000a218e380cb84a40abdd79e267578ee379c3b674a25a30e902400b0bfa6a69cb7ab96661781e7cf05a6f225f301065b59c033c5d873a5be3307b6e59708599595fab5d2a91c601fc75e97daf27b9453bfe95029ed5b7f2b95c35377e5153de2fe9afc847a82888e9469e8ddcf4e7 +aecbb02759f7433d6fcb06963c74061cd83b5b3ffa6f13c6,2dbe1b6f378f1c56aacb5f9a71a12eb3516942f2d45cd4628e2d6dbaaa4ca282d640806c927c93b3dc6d1c96d528fc2fbdc91d7773bdbc26b2e5429063889f0842640d4eb0a69f2c705a11fd40484f16a0248077897c8039c575c1a1c7bcca09952ebb4914576c9a9d35b2043c7a5ade1ec97b6d46cd647815941164bcd8d117e5c4892b6a5a5155b066bca61a9293e705edd00ded6402f12d0dafccf608391f24657283102c30e71777b7b9f39f069b90b44a6e84d87660d1bcf9587a25eb59f814cffa8cbce7d7eac35b27e8707f65f5b78fb16be7c17812857b8cb6a447bafc1cdf793f83b6d29824b3c355ecd204631ef1e176b53a6b82fdaf3d224851fc7bc0f6b83a6d05d0432fb34567a48be56368272d2012c0f296324ba45b7438f13759a4a1af293c244c5b326d6c68d28a5a3fcef1ae25ceec38d866d747d62cb9b5f8cb38b047151192ff44ffe1b35b5d08e95344e09bd7194cac4d66722c9e365f3c0b7b48fe0a2293e478b4e6c8e6b7c93f41637bb0fd15fdc24e6443595faac6c342e8def79f01dfd96e624a8954b0ae93591375b8fa6d7eda21578a51ae0eb69d97de7afc1f4fa797fa6d11d5c2663a8b09665463770000249db5a23233bf83d36c7a15d3e8673f52dcc06270b246086e5ad0648236c68efbf04a311a9a090c72a6a79116ebba4bacfe7f46b5630f27c99f257a3c563b864933b8fc3672a3 +aafdc9243d3d4a096558a360cc27c8d862f0be73db5e88aa55,59425fe5b259ead7e04232543c65eb5abd0c4db6f9e03c184928e877805b9e7ec156d8c1bd0ee27e4fa931832b41781dad3c7d23bea681c74251b1ec51a90077356d3c5ca2a2779bde6f45be6adc20fe6dd0bc489b3d6e43dec4ff6e33a24c62421a20b8740ba1e13bd6447e2d6ccedacb692a4468c898f815df88b8a3e0240bcd64d2277d8456642cb129f8627eba5380a9329932977021dfd641498b40f8d75db5a4f9f62ed2efe831eba92ea600bc95152b3e2fda2873f54800c15c2256768099ba5acad759734533e8f4b5c729b42fcaccfea0d6c7b5dead8a5a1d0d115836d63476eb3c90325f3ffc48c964f69b2957e121d9501405ecf5cdf5c7827019bf4a92417b1e44c444d8b714ee85154bad6462317515cf1b680aadccad3f3b69d70875020fa770a0f7a969e4b1672dca70ccdb8d7122a7e8ae77ca7e0819d6cee706d71f0732dd1aef5106c65ad8c66fd350c13f2d02237d2b4b9ac3dda52e3771fe5473c47c77bf84dd90ef38104d8571ae25f6b7ae6b292708f0b967a998a6d8f66429c1c81ce5c03843877ae4c56f14fe4f5a24c8f93072ce79e3a3be409d902881b73d9bdd3aa0c8eda88f0511e98eb93b271ff5f244b956b1da8c7a8f377f39c803355f1d70d55775c7fba96cc98c02999a47eefd94e52811faf30c099078c7c1c50772057fe65e954fbf28cc414cbd5c2eb12ae86a0912d3812a04adfd +7bc84867f6f9e9fdc3e1046cae3a52c77ed485860ee260e30b15,48612b3a4374024bf509409fbc6b12e049f2f5065a0cc31c49eedd57ffd19f1c1af6263ade73b4c29aa77e5c05bc0aad40c904106a19a8fd55db489ac77904569acd0d62f18bac28a287299ef6cacd0b342760abae5a35a2e67f85e854df55c5bfe831408c14ea2b0a3c0ffdf29d8b9fea747edb856df6591b3cc76d3f4bc7770e38fcf603f4455c9b5019b7d8a2c939340bec5247e597cfce386a458bdd4ba5007d03bc82bf310b4a8cd328a62e2fa1e8fae543736c10633b3c70b21b98c769adf07567c3f6d89a006be4b2ad21643bec00de1ec9f7ca7ca733ecdbce3c58b45119e5f593dcdc5c95bd07082cf5d9b9a1aa11530e302e1fc8d6d2fc3b0fa834ae3b2e98b428853c8a1b9266aeb7b8436543bffaf69467d7eece47f2dbc790fcf2efe2791213482b641388d58b504577430878ef15485e437a4a1f2febcd994c088283d92c90975c976331d051ea2c2ea887a20df5c90e4fc77a9370306152fd2ca6c6410fbd529bf9ca22b4c8ffd4444eef136ef0b61276e42b0d0424f2682f291c7a704aca96b355aeda4d382c16b3ad879bc6b688197294203661f21e3e881bbf4265c6b71431b5dc29f614e090d723ba086b23051b00b7e81ae8d2315c41a90e1205ce8a1c5a744f82b7582a099d61fc5fa6b2e9a28920e503b32a84f4831201daf2baea8cb98e034f7ab63655e670952eea74e3ddbed01ea9dca9533184 +fac523575a99ec48279a7a459e98ff901918a475034327efb55843,775025e1e1e0a1c865e2b57b7b43ed67ff002df27de0a62ac1776f894e1dbdb2921029afe631201298cd5d51b9a2a6e49717e68a180eb27b9954a807667e4d24024dc3a60a60a819edf2870260aea535698f9b5d83b820013547e570847ef9f4563931138791b44ad298217000f039a9933ff02b99ab66a571d2d5e16507dca9eef54b1910e26ef361887512d646cbad74f99deb082f7ad971e2e9ee37af77b80b2a763de07d91229e8b5a0e9bf220b0c15dc939253bdf45caf4a8172afda5d096b47793461654341d08599bfaee496369d5d6e37562f9aac399a413ff892f9dc07e624ddbab1c72fa0f2d1aa98ec442bb1bbf7609074e61ed16d25367869a5f54e33b52dee5020b9ace4dfe5115ed049a6ce62227661bddeddbf77ac1d45114cb734d9cabc634908ff540c2ac162cbaab655cb35138cbdf81cf5318e92516ec9c4cf05e14547cadd18093755458621c0903fe6abc29ad174187f0d5d6b314cae5a4f9586012d396bbc69d81a66927352a9f4b926e1cae962a73401587ffbc6d9fafa35ecc1b678d0d050f790bd8cf4b6ea3c3b663cd77fc6004c257328256f26205ea41ef7a423cc757e81bd7bc408988dab45e8d632b669dcad4585dcf6348c8c5d2dc651a4ac1806f3a55dbe5fae59d50e2b9f25f89200dd88baac59c14ea0798194b90641642b425317bde993ad1467200432b1ebf23440d0f789ea5a83d +0f8b2d8fcfd9d68cffc17ccfb117709b53d26462a3f346fb7c79b85e,36da0700fd13a62a128d5c87f69863a9ee8dfc65e5e1f97c495a675ed8253cade4f79d45d9e34c8fcd3d5af760344fa76b271a916a539d467f9fea26df0cb98dca0409602910d7f298d6e93600eae6447cd2ede4a76526014fb58abd4a48abb38da5acca349f140cbb391a6705e4e153c87a80c93e912c912b9c97cb89b101e6bcd0b739cf89d18b522a1ffb858b837c643240dcc8f8553508596edba0282847ea724b5d25ce6704cd3df3ef40e5410d0c6746f97f390dcd77f69e6c41cb009ffcc9ef3c6f9b2daa646dd07fce398a9603bc223aa22af0676931d4fdd5d2c06c6f2f4d31d4854f72e44ea149ed172bf152cdd08d33af58878b8e268ce44e8246360ad41076fc4e9bd9f460cf5ad24ea05f4e32ee2af4b1f56b8813599f23ddda7fbd9195a40c5683988d1a84fbfc951d3613ab6ff84d372aa4a0eb2b68fff9b37ad1abf88725a5479e77e55f320bd8bf69a2e174f715b10d8ff4e8ca72f2e29ab501f9a74cd4ddffa99522d1c48c619b1669acf555f5e5221d34c7b36c56c53c3ea3ac302c197d74735a1fb295a39ae38d87f451f86c327b67c16a1d1be50c453f3ca5c9bbc5f78d7c46f5fbe1b44c366159af8797fbd29c6b025894b66266332078860d083a58873b8edde27300b4177f4b1a70ef2557610f19b2fd8df4692fa548a018a014f55b90d77ed357987a033ed8e83e07a5d5d3648612854eb10430 +a963c3e895ff5a0be4824400518d81412f875fa50521e26e85eac90c04,4d2453d01b5b3fbf0fbc4e6f7d2f28914efde730877568f3da9ca256c3252560dc9f9ac94ac203ab2a3829a3202e6f4d385d215b843d64b52b3cc28b11e3876248b4cc692d4f7ddd46c36fb7292794875d8353d945438bff037737e3e9133fb6559cf65e7129b98644141a1e5870b22751076f4af9a14f2b0d198ff4772b91f4f5329b5bf9326fe39d5bea9b6d4cd19beee8a6b8fe1cf3ea3e256c7e1a6a95c5b9336ac8cd2af6d35c776b5563563cc59906abf1acfa707ae71e6e52d6a77cba9e960bce2d3c11e7a6ad237874f6316d982207cd5cdeaab3c5eae28a3e5364626891555721f81068f60301b1db9cc8d8fe00d9949ef2998273bcedf012a9824b5942831afd4922908624f4c2d3d218fd440652f59f536f8b33ec88cc3e9db8a4513eb8880b95f29876c4747a8f83d089879b29350dcb6cab4497a8eb14afa848432310c213d7439968d4942cda32b5e6df26d29f42bcd98fe7c67020804380d0d9e4a931ef9aa117f872c7c0aff2e5f11451af753c383144e60e661d6db11fa78e542fd2c9df493da608cdead669e0ae4acd76744cfa68088420fa24a43b6e2c1706a10db468d8a7b6e18ce68c4eaf1cb1b9d794af9457292c2999dc18337531adca5be1225be1825b31427efa14be2b500c0174333cbd3553e05ad1e4e27858bca6f2bf2a966a8eaa6012f4ecf1f3387f3e3409d3986f2e2bf7dd239832c9fb +03a18688b10cc0edf83adf0a84808a9718383c4070c6c4f295098699ac2c,2d46d78b2bd91664cf875974d2cfdb0ae27e00faedec3370c5cb83129ebe05ec438a0a02232601c33ad623162b8bb160f5d8f5c892bba4606d1937a1e4f90782205cf7edef07c0edacedd95f486157a0c64e0303d30029cef36894100e79693f3e794596ce99adbaf2e3d4b4ada5d43b9735de4b24520ea9c8041cacea8ac659699df823c7be9ae82d52bcb294a43a751a71f6e0b939bf9f0831443026a292058b62817fc9eb139dd0637b7efa73344858078aed6fe93a6f22e1e14b92e87cc3cb5c4fd7170413c4949e5d06ddd44fe90ac4ebeae413a7baab1fd2b99baff442e155e94eb49d75efddd9c0bbb6c1ec6ac6496145c755788dfeb766ca0256df9c658b7bc660808f875e9e38b3e297543d2c9032b454161f9cee80b0a7f9f49039728d2f12142ea22c4708307b6593cfd0ef5f38a1e29fe43058a735ba02d4edc010c02f4b625aaf832030949e81264b213aa8a16bfb10d35c5a369b86cbbf4eee8df699b302b052315ab495b9b287e9883b05c6273b4c32fca1d186d2df481f54355da3af3e7eab49c1406857cb9f590e7b1b8ea5b7a0c5dbb7fd778a4fb570be2cb735f21ca599af8903596e80f8379b517d6a0f7f7d5125a7d4375bd90175efcf5316f13c8b09219bc84052b7fd2bc1d55656fdb9cf1918997717c6e2aa0fdb46530c27114263e017fe5d91153fdda221dd63f14c25e3439e05f5dddb3ac966 +84fb51b517df6c5accb5d022f8f28da09b10232d42320ffc32dbecc3835b29,b3dc434bad278ece68c6dfbac1416bf47fb37645ac6e6b7e4dfd79e4605ee32b9795ed18683fcb56f910e223704ff1200f015eafb2ee06181e9eab1ba17bc5d84bc22a2d5c134991c906a71d8b20f6ecd6bbc27fe715edabdcf1c4e1a374b15ab4d76ea6ac580904bc66010cd8352caf365da80094f461070cffa34a86df705b87cc277d80196c86c602326e8e3aace1be7f0136c0988faa11a2ff91ae941799ec4de96e9f167e4088c822bbacc46dfa327df7210c9b31a9f7306ae753152a86f9e0ecb03fdeb7415c9adba6d61fca7f4d3c776ee6fbe6901860292fcc6cb89fb45a68f6165e36885dd40671ee372283591bc90c2b4a542282b13bee71ebba4e12797df59fe47649a27af116da9f41e0f0b6b962f7260dfa2f569a97bf47405a4ec4a6463680e3903cc7c3ca2f39e9366fceca8031da89e447b37f3b80769fdc0449291faf1bb8f9ceced3c175062dae783f51637581e913104c7042bc328e1f2571caa5572e75ee3f5a0f559b50191f3ecbc1ffc039bd3dba90f7007aaded690ff35d8d84fd0a9d427b2171072f1ed51a8ea9aa8a066fef6b88915265d80ca283eab1056b6bca093d60bfe288e3b9029e5aa395c9f3e3913d4b22bada270a282ff83c963e97f1f7543aa92b5f419973671ee03a79d1392c40ee57265fdaf75977c9f0e98c2ceddd7f7c52b4122a4e517280c9547df99ffb30692ed39929fa16 +9f2fcc7c90de090d6b87cd7e9718c1ea6cb21118fc2d5de9f97e5db6ac1e9c10,bf7a4fff6c7b53893bfba9505594dfff317a09278c3a59221b8dfbdbafd08ee237fcc272ecb1c7672b41b8dec7d54b988b4cca65cf297e1d54da65a176350ac489947359e11e34ab3e4d6744ead1775df90bd5be0712bd54ef46dc279587527976461d6b8f9d0c0fe14b10372550ecf74b3cb30c463f25090abf7db84d32f51e8aee7298c49607e4d3dd79b9348e33f2e58a7d0d76394c0b1c79642cf2c3077ca0764f291ff48a8cd723c953276a829cc1e7b798beca33e8b0fc0bd44224cab89ba334e52d6943a1ecac72ca3bc825bd61dc4caee1a12e053ef31115456da434747aa8d6defe56e35fe67d5e761881d681ad8efd3ad5c69430ff75794faea5553fd91a4ecf7730ee8205aaaa0db99aede2c52591696514aed17f7b8942026ae16d67588a943e5d13bf47f15f1a458f06ed83a48641941dab491594dd02c681950b84718caef0e6187f23c89fe46a40d5c22ae297a05e8b613b264d204334be5922a6dedff5b978767233ac58925c672f4f4b0b77326a5b283cb1df217bddfdfbf12e4feba42e23c18675e0fbf0269e2d53a024b4286fa90685c2d8e67e3a60be0d7072c3ad8be9f4a389fbbafe191cf06eff95605a89c3c668baab7657a90f23b6b791421d214767736cb617bf1481ce103768e5a8a3384978eaa8f56a6f2e729d6307973ed19b270247867e5861172467821a22872e52657ba2ffddf6052025 +de8f1b3faa4b7040ed4563c3b8e598253178e87e4d0df75e4ff2f2dedd5a0be046,2ea40ca6662a79d253a43db2845535098f8f4d791e45ef610b47f90d0f28309ec047bf1c565f799253e32a3c538ec6ad842406d9bf127cc56aebc442b4b8fbb5da5c759e1be0c201246b960324a087b3a3093ef07cdf45d915c2a4b0ff70d64c1611c17c629be9852cc408afe212fc303c196f422a085a72684c10460e294fb60ce9f2d5e2a599e4f1e3fab86740f61ee2dcdaf7e1c8d8bc298f40b993cbd0a8edbbe0eb8715b6a58d2cecd21fc637b02e05bad75e3b8ef0c2bdb157288f763f0b190468016c186a945032572e71952325d30d2dcde2a915169c51d0c448644d785ac658b0f0132b3cc96884c41ddead9b57425fdc013d067697c0fde6a2dd31afe31cccf9d85b46325d6cedd80b70ec717278d70c4344757088906a577c2eb030f8ad2b18a1a196de26648915560d228f702956b27046ed63ea6bb863f797cde111a02b19a6f49bdc7eab20e040938b9977d534bdd01d19b15781235c249a24ec832770a76520f5c0e5f5acc6e6df757fde79de7ad8c43028515b82614d0da808400c574e5a982d0cf9461bd25eb6521064152dc7bf3295595b7a16410012fb01aef4ed6ecf22c209fce011888e29b8c3f84cb29f42ae0ec1c4c6d4c02619f90baaaf7219be0f2129723ead133eca7e0d50478de346f90089baed5d1d04563f64e3a3d5e228988d71da3df85d906c9afc972ca6314482ba62c557ce7ce8986e +62f154ec394d0bc757d045c798c8b87a00e0655d0481a7d2d9fb58d93aedc676b5a0,489a2da0386ad9f87188cef4bc2b22186f74b1561d79d8ade98ec2190003b99795dafefe1851276ecf233ec9acc0142dbaa3ff1d94692430f67c2b1d809a88a683b73e00bbd678d3728ea98dc1a751fd5839b8efad1f4cb45009411b8f9b9442ac797b55e1827b0b6fd2a4b1e9f078fd43d9553399b9a52e7567cdce4a27647820d8483f16360104a7ac8f3594cd786f51a9ed172443bcac49e1f4b32e4e915a3cbd7ac18fe691e4b9bf35f31d1e8fa401ea37458ebbb1cb6c4e99c6b031c6c6981d95422ec1a9af5e74c0218f403ab62d54e28aa116ff96ce0d6e8076420846dccf95c9aacfab3a4864f93b5d3869a7dada5bbf8197411966166b2f4f52e3150fe802c96c47afd6a9f64f7554fe3d52b79bdacd6c95401c9a78f11594347e77f727acd5e0131cf898c4f36dbb067ee05e438b6faa70d8b7720eb94728440147b159577cb5cfccfe9a9ec321081d429ff88c4abe02c7bea2b10b61e521889e5ccc29470dc16132489fb43092b6c9efc9517ccdc0b0824a95501d74b44560662141114f0eb6c7a0b469ccabd358546cf1df37dea67e3946acd70a504a787acf86b07298938882d0b67ee67d69a8cabd0b835152633bca5a76c2e6db958fda265756669d1105a67889f83c01918398bd296ed801a0b5f0fc8aefdd5205793adb85a8d6ea15cfbb6a82153ee69c10c2c92cb38c90ce0e73e32489522994096f08d4 +b2dcfe9ff19e2b23ce7da2a4207d3e5ec7c6112a8a22aec9675a886378e14e5bfbad4e,578b2d3b14b19c349dce30cad612bc2fd7ce8d6f034fbf4d328e7a570eadef3f9624b65251f992132d25e5363bd653122d5257002f806dce93d0b15919ff9ef2c303c748d9782588c90e3b236d51b69b1eaa1301a703b8b6eafb6c200745d5b08a07a69b6204be3db36cf6127e5f8399e5901318f9f0c18cef9201cbd31324d87ce630a64518aa7042ab3e2c64f39231ac3de7bbe859cd3a4d90109b2955fbe75a38f45c4b841c7e1e32f22eb69db97f6aa4d45d12ec5180aff7863c17fe1cb7dff337da46f7f5b0dbef813b40dd67f985c978b9eccc5685e059f55e503b5be924769a11fe1873ea406ac79242ffd6d45334d7c51fd4d1d5eaa28e1388e3bceb4d67320d9723d060eff815766587fc11c13675dcc53f30ea1660dc8c20332a3ff05e2e70ac821e0cd250132a59dcc4f40abbc8783690fab8bd7693bf106e8f8c7a6d59495fb7301390819c87c86bd94442185de8b4cc784a690d742a439f73ae7e8252a3d5c0e4c0410fe919cd7a53f85f522c138a3d654d9b947963bcf293bec3d253dbab8fd39a48a340f8afd75c97519bff4506550be8f1c1c7c345c89edaa8a56f128af2da8e86a19a6494bc33dad412e6ddde813e3338d16c4c34d40c2e6e1ca61faecb934d4ed0bb0a19d3ab88ea32f7e277bf8521aa733d7240394733a3a1fd7623463857e1633f0face8bb83437dcc308e4f6791d8790a54ff8e06f8 +47f5697ac8c31409c0868827347a613a3562041c633cf1f1f86865a576e02835ed2c2492,abed83f7273f3c7a73a700565f16aecbb0e03d278594a29fac83b38689ae49a72411cb6fca5d636eba8c560cc038b47da874429be7c50a9215b5098f94110ef4e38f88d8db1c483d3ea4728f43b25d94e0c89bb50c66cfa25a62fbf536ebe3d8e7e71529ec5333a2823de42c50f02414c99cfc61b1e7b4c767828748216bf6b14658c114c52b7a53c52a3f8bb35048343b19c5b19fa11fcf5d78769f1712e6f8fb5b31c017d3e23091b1e8184752ed0669ab38e890d3d7880a71b0b22149038e81af04c4cc7ccba8487027908cf2f50ef3d6563141dbb9b898d06b7253b4057e9a69d026a27f5df48bbf2fee2b603240d44b9453ff485b2212828061ceb54cddc17c8de430d2e86045c790b23c84499c6bb04151bea457c8a18dcf0094f969365ae1f25032ae0524c2a09b69f71bd3ef46e8871aad3b58c92bc4b694bd5d47a8a80ca8daeba6584e5d5b4d6b5671c823e6f78d8b67a6745236bf675e28a17c2f8cacb4b5d167991d27813c5500951a5e78086eb87c18d0e26863260f6919989f5eb180ea48de6a3750b9e2c1f780230e0070e216d373d3e0ed3daa0f668a8810da759cff1494e3bd17b369ea71de73cf0e7eb3912515e454544be78178db41f9fbc4be73d1eac8c015496b08839344d963f070e5aefdbf29bd056b77c2b98826ae397ece0701dca8aa45245f26d718d9f46c90f34ad8ef70972acc600bf5eea9 +512a6d292e67ecb2fe486bfe92660953a75484ff4c4f2eca2b0af0edcdd4339c6b2ee4e542,a9d48cdde90093ff80dc7846baecf4c7d6f876703aa4404be050345bf7d2f9ff3f93ce132e38ebea01ab691bac9f8943cb33aae7887e9783e0a11eba2d139a615df8a62ee4ab9e57bce1f7fa19c3b3f6aa88b547f0bd5ac0e2237b514145173ae8deeb6f606caf1545c9f442d84d36080ba514759e3c0d1d3688a3d8b7c28dd8404aa5e09aac0af3c14792d78434762169caa935e2aed3264a1c0a005c359b3b58bb5f9b9a6e5ece5186f9dc26c952a298b76c49138d20798bfcb843d06cf20aa1d540111bcd50c6d39dfc23ef7a8aa8e93526690c8608623a109b1554c840f15e670dc4c33e3bd81784287c3fe98ffcde6aef5da5c0038e31d111c333f48ad6634ecb47c45213f23ac0c5787cb9665d3b31ec2a0ff9c597a4372df2ce34d443a86b8091729049c4ee58e4ed17ec9503360739c966b1b3a005237c668a6258e67cf9b5b3611a91ab5779d6282adcb74958b7d45c06819e78e904b4c557bec431704ffc563f40321e64a7cc456211b5c981c6c987469fce101a81076ddabe22408e949e86457658e07f61f5be6bfc68b968fffe044bfd278bd91180a05a40fe65f26d907d205411b880d3eb4945652fc0c112525e06c4795c01f4b67be8868594e617bda761465d7beebb2c564ab66fbf976d38521f83b8df85a203197f0b6aea473d3cf3946e4dc87739a418101aef50d1a4355b1e8e5e1d638191dd815a5445 +973cf2b4dcf0bfa872b41194cb05bb4e16760a1840d8343301802576197ec19e2a1493d8f4fb,41cd43af243be7f0580a9b406aa597e72958d24e45f52a2e1a59bc535c207efcbc9d8b65a567ca05da450458c2ffd58ca8ca3b01617ab6df19a4c384294aa174d728cb93d6d82bc135ec92f13870dcd556db4421c1c6563803eee5ebdbcf14b3ad79edb4e062970bafb3e801d5de4acaf052a6e07b0235b0cfa4cdde1e54c3a0cec7e8401a4d38e12193e7cbd66213b7c7b0b8046220ffafe868e31ce93fe8bb7ead861d96cc5a3edd4820bc2c62dd8a4d449fe9b938f1a55262e7cc25bde92315e329d8f612df71649ee0aaa3983fb4984b6e1127188ea9f3d40590d854f5be570543addd8e330bba204919d7911e56702efba881793087ecf5cea975a88db706fb08aa8a10ba5f72d2302db1a01bf15fcc3b05c969370050cac51f54990d57d9a37790b5e26d08b56de0aafa61eb238687d4396b2899ff6d250f92b1dd2acbedbcc1c0a194ba00da478d0bb659d901009ff593f6a4f66092f67238909056e1a0ee1c8d51cd39ba3794ca92786aab18d03c13cfc41f08373d1275d75fc58a9314133e62c14e05467ec5829967856817e7af85dc0a83af3e87097210e71d7325748022e25194512e54b9b18697c3b70b96ca8d572861d25178cba90e503b84930bf714aafce91cecc995b2623c63f15a1f0f50849f57f5037beec1056d4163d728c59bde6f526f331df17b5a34177d7b05103735461cd325eec332fe02a85b15 +80beebcd2e3f8a9451d4499961c9731ae667cdc24ea020ce3b9aa4bbc0a7f79e30a934467da4b0,a0b529dd351c0f7c539bfac5a3302f5e88906a29e665daf30571447c3dce7bcdea802e364b65b3037903c5edbda2412e084cbcd4f51a4024ca6e154da70c4781dcfc7836f06e5e4606d16d2e1bed0d60fb36b84f582eafb152191cf804d121f0f69324156b733dbc79e1355b9b4d1726e393c22c82bf1ee85372cf04a594018c63a02edfbb2892221875f20dc73330edcee0e62cb57d2ba43fa1e8af7adf157a79861fb48ed49c97104c6d89d290061229d51bdfaba62cb77c498a8d71f627372244452549d4f7469ace1e29ec39e60e8563d3ffbaca5804d6660c7c1559879ff1804cf864ae8d1c8ef258b41b21b48400adf439a76c0bdd62fbbc2607d85f4295aa0875601fcc1c3be531b526ed081188da38b0e40f7ff4d7a41c4cbdbf8db3f46c00d2da9d7f8fa3459f60c7419ac6f691473136eced7c342d3eb5a39f611eedbb0ddb3eb12ad67f1be696795b951a7308df5fdb83be7bf1b650c1c9222c22677a4b37efe0cce03d7237699fca345a31238067f83547c5442946fab4e129bddd409f8a0176ce87a341bbc353cf8a3eb72e5c7aa696b12b16e12c13fcd597d864771c43777e8433899f157a0dd21117839d2ba21e85ff2e09fa0ed73c9af26173b9c3b8ac5b1fc4bf7c87f06b5af7626ca15eef79d529454acd23a7643f91811365146fb18cd0ddc3d46c72c7d1e97e4414225a76b55a19b226d5a77fb1b5d4 +7abaa12ec2a7347674e444140ae0fb659d08e1c66decd8d6eae925fa451d65f3c0308e29446b8ed3,5eb982a2754fe46d19d8cbf86b4d594d14b421c8ab3ae44762447e9f789271f5a1175ca9b6c604fe8046a9a8c11a9ff9354bdc91bdf051ab6fa1f6a44d0e42977897f5342958adbcc1e612a49b46ee66420e34f2233e8ad857359ea92e3fbe3f84191127833d6bdff88019ba5b6982f446326877b3d3662767c6e91b0a6f9d2888bea239b25f1b6a248a6cdac1775976958fa9624edfa7de3050cb73602d24d13763c2d67a016308bf4c53d9c7b4a95ab542549944b74a2eb30f688b1fc9138b57fb76ab320ac7bd48727cf4ce4bd34fc3b0c2ec0e95bddd0ef0f5f70fd34c6c890982978613d2132fccf37541042415fdde4af368a207d59251f50e14d7a5310bbbd378781df611b425495fc69a2a6644fc6b29accfa9918ebe05436ee9e191946af9cbf15011bb53cced508c4cec0bc4e156d0884347aa46a902f216ed6577e56129b441efe731cf6c0eeaf378f5a29586f5a62d10bab2778f106fc6c3efbf2452c75045d578c38222e14247db42fa60fa6d909e0aec09edfff90cc41b32a9725714e41ffa9f350ff3c1008511534337dece84a0f3d5df085993bd3d5c755b95e6ed4b36fcee70b68af427c3c80386983920307878c1a01c5d782af85c89c8bcbb0edb2274bf7172dbf16ae9ba1cdd7a97d6b2bc2d06f20bd0431618115097621a36c41c9788dc68b95955ea5e097177d66b0897c7bfdaed8487a79e14dcda +c88dee9927679b8af422abcbacf283b904ff31e1cac58c7819809f65d5807d46723b20f67ba610c2b7,78c7d0d0fdb5ffbcfe55ac06f0e6e58c805fbf76fc2d13911b6b63888088cbed5f7e2071f7bbc12063de085394a691dee09dd1dae2eee0dd9491c23b0949c870102eaee2f39e20a62d9ae95b0426c0fa05545c0f128fb53e0b8be090c1c82f0b66df4d7cd0f63c9a85e17844988523296849af7105f845e0f26200a260912128fe7f2265c9e41d7fe587becd50b8b729ec445c7ce9135c95914c6c9686f43a56cf652a6dd275ca6a883651f78e8fcb8168e8dd8fd780735f087203ee1a30b5a13d5f6b7cea34ccca3bd336b208dac5878e85bf147b0b4e70d87f73de0487bcafb6ed9c3002e2df56f215b78c7020a1bc9f433161ba7fc94b4ce3679ee955d80363420768c9c7e3c6696e94eccb0a748fc1f1f402ebec068078862f1e2dfc8cd6fc23fe1051e51dfe3d65b3779cde8824bfba8ab63fef474d648fe4a8f9c083ee0e6cf8ff6768d1f54f313705f4a3d7568192d91e9f0408e8ebb101cbe97ad9ff76a1f347ff152f45d9b20aeb7de7cc2047e47635032953fc5cc5ce45d66acd2e11c77fad0da8dcf15ff123365dc9f35de92838173ebcbda9da15fa35d10b64e7bb71539708d8806145a1892fbd4176b2e9931514bec17fda5cdd82c8ef9f6eb4e2900d039115d5b1e940e8796fa8fd74127fa53990639f130732eb48cf50620a9ddcfb01fd69490a8b5105cfc7a3ea274006f51221c2356212581fb16963e7ea +01e43fe350fcec450ec9b102053e6b5d56e09896e0ddd9074fe138e6038210270c834ce6eadc2bb86bf6,832befaeca90fef41577649b6348182753ebee32ea688306dbeef8665d6ffc6c5a26ec69ec8c90a0fea854893c0c4885a2dca4ae77243f735048ff31b80d1a4c84f055deb1c11f76bf45dad9516899555aafea86a129c4eed1d4cfc7604045d22120c8e06f67793644533202a69b683b2ecb19aed3db158397c922dc3a90b64a8825541ba5dd9afd7f82dbc603f156b9f619a83c7132a0d8ad71205c83aa4a52b6223507493e0f9fab9530762a190c9fc59680c961b08cf36deb67a9a472ff93698fdb84dcf3cff84c6e9d48804abeb6aa47ad62dc9463c131bffdb127f9f63f8ff88d9eadecc6b0e00c657ce54e7bf800b9a35173dfc6669bb54a069d9ee62bafe9b3c791dd51a21994cee03fa37faa5d56518a6b65572c1b3a17ef52f642c7b2cee065282fe742e5f9c9ba5003bf1676ab07439cccfff7d7b76df84e3d99faa269f0475cb5ea7db25d3bebee36b96634b58596ac788c5f31b8daba35211d4708eb1f778ca38adb4c15a831d8769aa16110ddfc406b05bcf25b45611319603c17a40a24cb2c38079e5684b473dbdfb98877ffe06298c33337326cc2ad1baeef678bdbffd89bb1e35827ce296e20b0084eeaa0ab1fc647efcc0231df9b9b5aded6dab34c75e6cbe206dee3e794aa42500fbd837b6f6aa015bb4c923f8f1f769b049888933773cd24b688b0f787a2b74ad15275ad6c4c336cdfb1bd929ace58ce +337023370a48b62ee43546f17c4ef2bf8d7ecd1d49f90bab604b839c2e6e5bd21540d29ba27ab8e309a4b7,0cb8ab1e6149f41d29171dbb444b0f3c07fefde56d9cbd1150fc43e29009e0f5edc50f89ea7cc0ea6c9e23236c6aac72bb3321a51afcb32f9ab5d1051ed244e2a8d417431863649699077079e1687b36f75c995d6a78b87a9e949a56a2cfbcc15cefcaa6c2cb51f054072a05c12fba86b10d303b3efeac18f8515bfcddb1172d56b8c92c1afd4ad5de2476cf073b7fb4b7ddb8fb2c4ba8ab0c53474857f1ff47cd3b1060612f7c564988d2881189248cd13d5ea347f10e1f21e299294651342ebdba1657862306844e274d7b2dc9dc6d92f395af2f5bd01b13fc7c7aff630e854db63ec517fd3251d12c10b5f6c17dcb8990fb39cf1ad3b65f2f019b24591b813d56d661a904405dd814aae4334a8eef7cfa455c994c3e31b9507fc0e2de00a1a0af4dbccbcdbf393391c5aec9e3b4d3c8e5f879d8e75f63078e686a1bdd5e6358c5807a669f89f90d4ebb31b7396c0152d5dbf665d28bc59327bbfeb466f1e7570462ed898a31e386de5538db505fbd1b9020c984a49bc39968a69d5b3e2b9a9b61d6776d5349d4334c3042c0317a2a34234e8cb64b89d29e3a8b6e8799822f57c3c6c739b3c263cb4b283ef0f859305c84d11a9dd0dee36cc8976e6ea1bcd04451b0e0efe343634dfec7868ad52ebc551d5cfc0277b15b854614fad548337f20467d175ef3dbb135fc37367b916ca35e714b998c3553d5f494903a8b9a4b7e +6892540f964c8c74bd2db02c0ad884510cb38afd4438af31fc912756f3efec6b32b58ebc38fc2a6b913596a8,9fa49c101d9901053c789b01a505853c8370fdd00f7fec13abffc91c7b06e1211dc293fc0d52911cc12aa9ced634b398284f3870e82b7f5af9c3298d53bcfc3a3de488985cd1047318c2319b9e2ac85752b3b0ba2c151fcd08c99e1176ca599557d3a63f4f1ebf2fa31ccf9afb729713387a7ceffb6f61ff8162b1cd943d9154ecb362e6ecc6e2669f746b1422904a3dcd93313e4031238b6eb117166b374fa8ae8440a358c1ea7b11b88fddbde57370836644b72c0219747a0fe793a1d77f42e66d2d695bc1d9567cf1a1b743c33ee309cb4956bfc426b06fe20ffce98a72fcdad31ec5ded9ea45d494c89ae577bcb79967cb532b97ccc1708eb2ae8e830cac0953c34ed28be988e89992c9f0c8fc58fd5e7346db2f24bbb57606302b0520d7aae54f3492df6040916af04b30f7f2480b22b93ac47fc5de2ccdeb27a47c25045695ae9f3e54fb27052cb58141918105e0621156ff4bad6a35df5bcaa0fba8d67a18130f117a09ff90b8760a7027614be569fb67659bf0dcd1f3b7d13222a338f9e5736d5dad6032189e149d22d56861b72a561a9da575d720f56c365c5c8bd0455c18b7b73dfa4652c1d570a338a5b1d2a2d00a4387613d11baa57160a513f4b64d91739e032ed72bb2dcfafe6ba6136fb381857071250cf63051059f9ba3719305d33ef9dc8d33fd6d427402ee348324c78920278d6e5b2678c1c4fd408760 +f5961dfd2b1ffffda4ffbf30560c165bfedab8ce0be525845deb8dc61004b7db38467205f5dcfb34a2acfe96c0,7818ec8e1a13963c319bd2199294e1459323556d3e1ca05ea11081fd706655c1cad1a9270495e550dd34a71d6d6b2554c2cce9776b30bf0cb151ed0a87cd09735cebbb03a188eb8a1d62ec0fb614bb8d1d67418f91df9e7fef2ea9971cd46a1e6ad52d2433dffe98dd59e0c9f32a4a493acce9e6b2d946a56da432a43e45a7914959af23f1d08f5cc55b3c06669308021c004f0afb3df5bc10a7f19a7ed2dca14297281d49952d067b094a4068493e7df99403063ad007ce8ce76e2a7ed02f7023543e43e9cfece94601379a048a73663a9b06b04704d59fdb6deba49799d3e8052c1ab34302a2a2392b53a5fb9547628ed4f8f157db8d795cdea73f99212297512a04269b0d5f418e2795bfe76e939f8bc9f2137141da25cf095f2b754f6d0cfd84b3901a903445b7a71612539f4f736dfc1d4da1b9a8cfa87f15e34d4a813808ccfe2c9a9a710a1b9752166996ede550e14b55dad529c8a99bb9fe2688cf2cf29424570715c49eaf94c0ea0bff227ed445435e3626f31cd5e887cf1490a9a2b7951ad42eba5b24b02ee726f95e1e6862dc30636983c88dc915361f209dd5603672c9b4d4ada1703f56955015b9128ff7c0547dfedf772e63ad7ec847b946a66b6e4d3dc8a8ec3b50745ff7841318bd115ba649b662c99b973f4e7c26cb1604d407ae95ce967406e70396558ca27abd91fa7190a5d0f4ac89a070f45b858b86 +ca061a2eb6ceed8881ce2057172d869d73a1951e63d57261384b80ceb5451e77b06cf0f5a0ea15ca907ee1c27eba,5f6539a11001926ef3e0dffb0142588d4e48ed4a212753128c4c944cc6503e5fd4111583d67fbfd4b2ed2d82447e985dd03cb4da9ccd8ecf25069e84b4741a4c5756d6295e55075601098d996a375dfc3156d5f56e28fd8f3bd4793601603bc999bf93659d63f3b95ad0af1f5e1749df5197c95aeb05c683dcf37e9f362db1dd64578e8ed9c1ccf0a3ad93e69b82fac004abb2489b0734c4cac5b1a9316cc30f44ac42914ae696698862938dd0dbb3d8fa6a53d1f70d25a175cf810ad901d29dc3be40e4f19a5308ccb795f44f2ec364946d99f59d2dc1dc21c5dd162b7c8cd5bbe8f4ca8f606a0ef5b4619ea93b278dcdc2e943455f178ed62fa747193215d76c8f76077f9209a9311f1f848009483c82a82be1a9fa17ee69d1de59aa305da992f709f2c9a1efb33dbc8108a7d22ad38934d2995a3a5d58dcdb8e435d18099d9b3a5f9cab18b940f9e1b2db9bc9768b6d29c2098273be3eb77d07dc6e48868ceed85484a46d94a3807ced72c292fd699acfb6b1da030eabff5456fcdfaae70e851ba49142ca528d91d00ce148758b54f0293e6c53c7540b55288322b015b6067dd16c0cb711c63970cc16bafa980a8c3d8da5ff2236d8dab951a2fafe29fc72257ad99409f418e405858fbd1a9eab6930977c034b3d020a86c25586f8524d6577557d73268d225cb8e38892d3e7f0095f68a98c1b7355b5e331d69bd487fe4f +1743a77251d69242750c4f1140532cd3c33f9b5ccdf7514e8584d4a5f9fbd730bcf84d0d4726364b9bf95ab251d9bb,b3120c516e7a7039b7f8d2a886b4774fa9e14b80a7f7b1f33d1b4faaad74d549e2195e5b6345b19afcdeba3acd5ade7200500bcb9c94d6848357d6fa88cf9125e59d0cbce876d681a68b6ae4e25dd5994d496b7c64f0b9124beac30348ea6b80803ff17c0846e19f9acee413e07e6ff849801c131daf7a36f2ede51cf9d21cc0ed6300ec5d6b64e6fb9f2a9b909deb4069738d60d6f9f6cc50d749aa7ef264e2bbd6dc680823c45aa8d3a349255823efbe4cac62c0d38a4388b1fed31efdc5bd3d6227106fe03b4a40f21f3f0411405a4a80e92f3cc045c7967cb7af2f33879dcf9da5e7adf813091eb357ec9c0dd097b868fe2d715c124ad0a44e2b6dadf5b360faf6a727448d5d7b76ab2c716543a09e2f75d570103a8e9589ae58d01904acfa0df54e6fff01ed725266f7e52b992fb34144568173065e406a1e98d8dde1889d0b7274011ca00357bcd07d4cf8323f103d682b272a98395a60a95237482f00ddd52204332947d4708d9b8697f9ce529adf3599c440e2b435f4f6d039b351fbb198bf360d3a184616b86573e7e32113b1a5e1eb52a1d15bebb3c49407ad6282ee2551859f9cf87d0d8f0ab362a439ec53540b4b024eb49b525ed29626db292d1333f579b1896a6357f9d0b51bd283718d2a7abd8f3786a7df2b512070a2c9a1b53457f27c6b859a2c6956bff50aa7906d546c67786b68ec1df3e93cc60c6968 +d8faba1f5194c4db5f176fabfff856924ef627a37cd08cf55608bba8f1e324d7c7f157298eabc4dce7d89ce5162499f9,f59933f9e9fc474342b7bcb8b4dd6ba7b02af5edd2c1824b227bbd2a56287267804534e943ea69b571990ead3ad5dad06ca9c0bf97fea1f3878824782e244d77407e3e83d5f527a1f5bfd8c747fc08c5170e4f6cb114a9cc34e96ac2758782344451bfdcb0902ec52a9fc82087195cd1019a8e5b03e496a42762fdccba6ec573d5c0740391697d95934f983231ed9642a0c6a2f92198b49670aa7f76c1715f3c80648e606b97cf708596ab9d8ddc7d039dea1f4de4d22e6ed297790ad73d9ebc2b1bc55315bb60e90ec7a2fa9a7922fa5a4e824be742edf41693f595571ca33eeaff4efdf58fbc0b9b1cb610ab2e658caf31fe6e0ae74064db62ce339c1f439a55fda0f594635573c511d040cb59f2bef552f38d87f31af2e98b59e9f0e67bc57d59f51204663511865bffe1cfc42b00ac0d69487aabcc648bdd8201362a43ae19a9570def75bcffa6d000962e931ad32e36a9118d74c777f9a6d853496e9638332c3e6d7b0a5f030b2b4198c9b31a82ce117412c144914e784d9b0dbcb8a3320ff22c4f4f4810d5885c7df3d0fef30b4f2272230278c600834133c4e11ae65bcae2069fdc1c863cdd701db750dae4cdf37a2314e39dba691ed7d4a0087b8057ee27b3f6af14ac0a742826feada8c5b5d52557952da2ffe45e7c328e04c3cd61a5d8f5e11b3acb6667a08498ae0582fe0e06105101ccec61c63ff3cde8bd1798 +be9684be70340860373c9c482ba517e899fc81baaa12e5c6d7727975d1d41ba8bef788cdb5cf4606c9c1c7f61aed59f97d,5db567b895164625131b8049728a0a66bcdd2b27d37828af41353df5afa10df9fccccc110dda3071a35319ef50821cf1796b5c319d4fae433e8a2599325c511c3c03e6ebb7c10e3be3545175675f7ab719e906640dfeccdadf77c345dd798ac7e2b7ee83c98dd194ca19bc1131200494a4b67428c23061cdc4000762c12565fa1c731a574530d282c2502356a75f03685a4fd08d1e938bcc2d6e7eee748dd1391950a44afd63b73ed549895f0cb38f7d292697994520de110f782b0cf47bfb07cffbcca6d476d468b227b3406f44cbf3c6ef6920b293fac69927dcb2d153350c7c8ba2d84d411e3ca70edd9321cc0387a6dfb84221915094eee0a272f267dc111f18e46c6d82cd6b98933261b5a880fedfd23ab2f7b6ce349789ede97cc034d0e0408e3e3b75d951d7df039700629ce147bfb2e2772ea80c8681d6db87667a63e3ff358e74ab45712f0bc1c747551dd96f72a6290c5e9679a45f37934e7e22378a2bb4a03152dfd450b98d76c233e107c57142b72389350072027bcdf9bd182a304e8b255f28459d96687083765e46f9b4bb14dbc374bb401ea0da7557acb2684a96f2791e1b8db0919365820cd315b730ef8bb83124577e55a139de4c9236182b885adff4ca2298f157fc460972d6bd67d538cba7e32f9051afcc00fcdf797fc8231360ba6b7ecd5c4d647338f23e1f578469e1558f49f87fefe28cd761bde6 +7e15d2b9ea74ca60f66c8dfab377d9198b7b16deb6a1ba0ea3c7ee2042f89d3786e779cf053c77785aa9e692f821f14a7f51,b3d7178bc88bd577c5d95a67b110545c8acf8f6fb56b5da15f5738785e6c950347905b928dca2e70cd2a5e574811ddbc894ef7fa8ec3446c7897b2bb2d68a61763a892632a3c5c6a3764aa0f576717ada5ccda30baccdaf71740316910cc08e8272b67521292fe1749026faddea743358421eab011087d10d4208fae8d5d607ee0d89976bcd79a12f4ed8b1c5d0189b0e2ed5b0b396c85b27763bdbf52d56b92e015cf080df4f2ec80398dfbd733519f3915d3f102d0066d425ef9fe1aa3afc8584c8f4d594aba86ad52e71fa77893266c4c606a63891c41a679964a5e3aef1c277d6d35d410eca6156f8cfed13dadf8022ac9159f913c4838ae1af73ec268f9d3bf085639d69f2cc51c39ea594948fcd238d093a799f266fbd90b07f4619e342e38afd178864760ab109cb4949e518305b82adcd68fe6e922d1abab2d132d10e0aabdaf78f0cfb74deef78cbcb422bbde5083e57f016f4c5679e9d5010d4091b3fe61545886a65afa49716ef8cb5a6c0ebba4a2386a6591bcedb3563bda7f0e792cf28d257bd066d44e3aeae8478d093fa9482fc26c77d73dd3150d53d9f1a030063122916fda66bac51c69ceae533f7a1569a3b9536cd35067eb190d2812eb2cd089d3e1db98f2dfe5a6839f5b04b6edca6732837d23f985e1cc9444ac04df0b2bbdbb44e24d39df2f447d72ffb90b7e9c68a46329ed630cdae94707704428 +9a219be43713bd578015e9fda66c0f2d83cac563b776ab9f38f3e4f7ef229cb443304fba401efb2bdbd7ece939102298651c86,341aa5c875eb43f10e8de28505858865870e62a9a4ff45bf977b947d0be17b2dcb74d5880fb5316c5c0b5e1c7da24d8c8c72e5cda4a9405912d12ec5316611eb40ae84a903703f67d3817bb73ac7c2c449d4d6d737cbe06c144a20f99dffc12a8f104df9e448a96de38dc6d7f83324fb3a2626bc91405ee5917f3765d9f22887777226be829584d6e0f6544b5e1c25f939fc9136ba2e0c0d6f6ee5f4ea97de937352d9428222667d974f4840fee0770657dae58bbadb5f47eb9c88232fb7bcc6f1feda76600fa2659f7e831129b3e3856aca6d78e0d7c582852503a67876877dc6599c10d42dbb81e6afd2919a18e4ec01ec7a032acf2a8320c5ae348d28cab36c85cd256db5c30ba1f8891005e68f91d7b0cb0ac4476937d1748f2ace0a1c512ad07514e31cb0cfd743e5c29633c2646ad1882176ba15e7cc8427fa20b2295100621a6e01f7ff4f27a6ac0766f9c25934e64546f16f61b5cec865028bd0d7dcafdb3d6912c5786372e1e4adc6cc8dd3e0a0f299b65beac5fae69e8219787a8effefcb50e40c8bc1c3d033742d98ff30d64d72d089aeee28489791f6099ce354385db83256150a1f9b6cc7444665bb95614ae6e6f511cee0c49288b3eb31f9c7d04b3d126a1535531505f0c2710cf6ce7a6db31f043c7c535f89467ce1f6e85a10aaf5486a3a6953cd351d865f818fe959e6e74f2de42c1fd6e219deb6066c86 +c8f2b693bd0d75ef99caebdc22adf4088a95a3542f637203e283bbc3268780e787d68d28cc3897452f6a22aa8573ccebf245972a,ba270d4dad10865df673f0dbb9d72ef788689673116cdc469a8cb9c89e6d8d511dbfff6fa38e29257c9a5820781094300c088cdda2a17afbf164d13e360ec04fa44ae98cbfb972a68d35e6feee3ae61cc217487d7461f7315449e201d707f8cd0e9fbc64d92012b22175e677a304d903e556a5d1fefaf8177a8ec3e506354496cd693531adb22be09ba71b4710549bcdd6d5ee1ed3975258c77760725d1c4416ef3f3b45dd8210433bb44882667a2154d41792a37f2b7c5c85dff707bc2a89afd652d83904ec084d1e03496a7f402feba9f77254772904580cffb1e7a0a8d489b6cad6d97c9a5824545fda36fcfa2e0a6f7e11710a8bec33767303fe8843195e9f17b1b75a4625c67e39fdadecada6a7e7755da7742548b797662b6a24194e07ce2e0302feff4671e6cd972324173f14f5a60d443f6162cf2d6a3e2e0a7f2a6bbadacec5f4b43d4aad809003722982fc7af821ae4143d123aea6b7d8550541da9d704d81d9e12820ec03e8443866eaa80a534a5983581f1dafc7f124915d42f9a24887207c2232b5ef9d8ded3a3adcb4d493fa2fdd6061f39f28ca3b489676cce7e0600dfae247a62e96be8a63abb977a4f35f8361b71c8578bdd63f35d17cea1463ae0709353f4667367f0fa0b6b6b6eebfa049be6133350f71e9cc1b157ed18c9d90a1a4d134e553165549c18004279aba0c4ead5f342cc05039dae1c9cfaf +ec0f99711016c6a2a07ad80d16427506ce6f441059fd269442baaa28c6ca037b22eeac49d5d894c0bf66219f2c08e9d0e8ab21de52,c2911768c4579e3876b6abf0a4a30646d8271fcbf3dc682c48c10e41a878609301f10073f3ea87bfd934854147d129deba9124fc69b6e29c271062cc8b3a5785367fdec382d365d4d60e7e63e946154f948b55e7e31a0cab5d25bea7cdcc82d8b6e200c28c7b4946b4ca30b46970ebb415fc18d9bb60c4f81a308becfb2e40f796b8d6f914fa7f134664b8eef9ffca684b296d26bba051bf45f3edb68acc5d0c79c08724bc7eacf702633c99c47dbf4e08af43a48a51a25620c1f16bbfe4ce1a52a60b4dd603524de38acc2be65240f51e36c6533d85a7b0fb06fdae420a7e84c4644b943e5cc4ac48505cf042ece8fbb4ab90b16b7af3ade3e24f871da2d86813a100c82e62f949c3570fb117407ab71a660bb4284a114b1f6817621eefe246cc0169ca7c09fe6684a9709bb5e7c5c09a35b4d5e109e133d23cefff9e438be621577a98d9b49b0f30740e7e3038c8bcf07e88acb767f9a43b60da387b617d6fff8a8d8784513d649ef3a142abac0bcd8159f4fb65db24616225fb4fc636d6c1d94db757e647934ba77c946bb7d010ae5c78e05157466590cbda903630809649bef7f0d27000a9156b2d05db89ac90a91f4d1f295d296d7783e6872faccb70cbccd244bf620d5499382421c8cb3829e756e6b415af3c26f952539d14bbbe56c034b58124ad973a726676b7f278e7d4111701d69681412bdf08731c4cb14eabfb +0dc45181337ca32a8222fe7a3bf42fc9f89744259cff653504d6051fe84b1a7ffd20cb47d4696ce212a686bb9be9a8ab1c697b6d6a33,c2afc53cc5dbe46697f64d5b6b37bf1db7ddd06d54ee9da7873c77d91de47377dbc5d525ba8c14d5f24a2bdd473de53fb1bcbae0adf93b4525c0a77d1952a21ba5e575ab9aa889a19d85a02a1ae4d420613bbeb7bd2a7032137f196e0566c284cd11822ef938c191763beb392eae3fd6fad77ea7252ee72798e5b4318961ef67e595bfe0be036c478c88b80c50c3f7bd047066f4cbe031a867644529afbbe607c6fa77602acef9a635de3b1fbd6c967b6133040d1a6649f1ff5598ce0e76af8ace89406fc02f2818ef8c29faff1f46a551b534bce2c30e6fca6f62df3bddde56ffd8550466f48c0d14bebb386f5badca240d848efb66ac2d339a54aa1accb5c753b081f0b6f782388e7b82c77304f30e03b5d3bfce0f1b5158aedecab4749c17305dcf231a04ea2436f423f5a818c461e90d65eda69ddc5d977b19f26e4c9db874f2602a3f5be5ab8c5c70cdbc57e5bf757037768e1962d0ac697645b598c46d639c7a0dd31b7ccfb88e4745bf2776505308c28fddb084f67618b84d0451ab2aa45437202474abaa0780935ee78d47ebb4e07c6466d3f8e83c1b27effc1064fe01880d2a7d571a955dcd4f55d631dfbb3cb550e3541254c0d4041479fbb331ec591f8afe5b644f6df9f4300375805bed126eb96893bcab7fc5ac5ccad3596d8c011258f3ed269a6b0a6c4736d467bee9d495d414b475d9354174b36e975655c8 +de286ba4206e8b005714f80fb1cdfaebde91d29f84603e4a3ebc04686f99a46c9e880b96c574825582e8812a26e5a857ffc6579f63742f,b9e75f5d4b74ffbd244cd9566df861526b5de9584d3280ba5a684eac9d44c91c0dcec5827da4ec0fa7f60d29286d348f576f4e2fa03ac5be8f27e9f9912bf500d0cd549f5e5799697c61f0403c264c4b2d986ddbffe72fd8ca6439fc01d1f7138a92947364d586d67c300f27ec2e3e75f9088a5b787490494ebe0c42d00401a2aba6374cb3e33bbd737ecfbf80ee24d4985f6d11fe24fedbefb387d4edbf4ae1f409e67f10719f47397968e406a51b0dabb4e9391fef03f9f7bc47193215205386914fade37017edfb0dfe8c51b4c35c0aeb6f8a8e6d4d69fb538ecdbf65cf92325a7f280e8069cf9fcfcde610bd024cba87827e92caf22482413c694f9f1ade65b67f8e1d32e4b5d51f038c2fa9d89fdb2bc1848e3e7b54c4cd4d021f4c8baff61875899b79ef4a1468b0443691981fabc95d076070bbd5890efaee194a6484e584364bac001fcb37c22858f74e1a01ea8eebd49d9a55a19f5967b898c5b71d5f2ce93f4e52ce4b4d00d7c42e58d71c174e9326c5ae1e40bfbd8bd37dbce9369062124cb47d683db245a4f289f052f89812440be2ed28b40049a9dbc75b3fb1003be8a1b996be44270a83dc20a38d62c5971d09d06ffdc3f89379a99923f2be2fb6651407ee37f4bc8073e396887166ad4f0a4e156c72463a524edbf462f62aab251e32159cb3d79a2cb3a8fcbc196721642682646a83ee60425dd7207f7360 +eebcc18057252cbf3f9c070f1a73213356d5d4bc19ac2a411ec8cdeee7a571e2e20eaf61fd0c33a0ffeb297ddb77a97f0a415347db66bcaf,eb24ecb6c9cccda1e8ab1ca26683b63a43ca864e23aa7681a4927affbd8adee82704b24b321d6c909a1cbfcb453ac084557fe84ab25e044885ed8051a0ebbb457d9821e9c132230ff27c4f27951432da415d90d59cf7148569cba02af32a8f4b774d5e4667ae594c2cc4776aeba2ca7d5f678c522a03b426ab2325127e56a4057837cfee2607207dea5f913cd64bed09e7fa723148aca13f522b584af9a36e74e86415f7c064c7575176488895f0ee6a6795b51729ac947bf09668a9adeec199592b77227d62205857b75e01e62e3d2757f02c4892a9e9c2a9187f7f3ddb16b7adc28c33f5889f87f949eb0a61e5fe431a3c11191da6d127bfc899cda0787eb269d0296f31f3580d9f630e0693f292d2b9954444e56a82d6c81319cd99d5ddb2f042e9242244455d5d9f59ce9dadf0be780494fdcabc72aee397f13cbd656d246b6240a1c21bad6e0126caea1c93096a41cf648bc0ed7a051e03dcb51e2c48ae32c88188634021a4b64adc4b2ca9a5118d4b6698e87c1e3d4c2666996f8754242214f3b07806c8eac8cb63afce0a03b64d63d46ad53f0345dc3a9fe550d43e9e569f8c2babb2c025d843f7d568dee6bc762d3b4db80b8a3119dcb19a17cf5fe1639ca313fc74eaceab5f9bac2e546c36dd7c292b959a2c9ca98cd143c5822bc94179def33d146a16091688ce192bf03a7e334bd033db66a3d544a8fe17d2f5cb +416b5cdc9fe951bd361bd7abfc120a5054758eba88fdd68fd84e39d3b09ac25497d36b43cbe7b85a6a3cebda8db4e5549c3ee51bb6fcb6ac1e,75102a95654d885655b910e6778f8a72b263b0854442230f8d8923afcc92c5bc98ee5f2e8d53ee1eb7f7a85a7562fb96535af6c78f0491eb11b4be2cc71ccad0442dba422b84fb16ed529278c57a543a3b8910d17232b2b7fc4b81bea56a6e99f64a50dd73acd26e506edd60a788548dba27aa66bf6d41c8ca0cc603d8ca515f3bc948afee2e7ec3f8cebc56a01682e66a082846e8edd0ced85a6d5ada77a9567424c73f049dbb2cdc180e6dd85ad73d624bfe10ba0ce3609771e50b51004bd62029259300e333d18697a3dd0408d37c5e275cc8a4c6c5ad85040365b3a427f21bff9f1660dad79d439c5dad6855e75840577b6aa822f614b42cf57561a70ee8216f9ccdd8b10f36455a2677cf93756a3e30e2e177029c4e0a3860cc01619549aab73b52e7e5340b42ebae37478cd899b71f9fbaf7dde36c57450cb5793e371c903ede8143f9ca3c8ea2231bf5f3191a49681ee8f45374d81a774e9f8c6ee5465b567bcce1c77e8289c72411a1c8f5402906046f42cafe88b54a5e8c7fbc5311b1a7c43a1094047935a27b2d89e9470ea28569211f1e6d99e9fcd1aea301a6271f90f51ddab660e90a50d10003bf425858cfb0d67ed630f74d6ff46e57ffb7236d55703a55531f89d92eeac17c6a050f56b46bd0466a0a918ec972e0947a991b024af21d9f92b6147155a1ef08ebf620fbb65c309863a25f3bd1d9ecd818e354 +5c5faf66f32e0f8311c32e8da8284a4ed60891a5a7e50fb2956b3cbaa79fc66ca376460e100415401fc2b8518c64502f187ea14bfc9503759705,603cfb5e53d83ccdecb22c5c75e67f5dfa0db7d874e6d280de014555b1300192d9b769482878950acdb484e87c26f366d2db049ffe8c92799954fe31dde56a061e2f80a5da15b65a0c9382c7790ebee8e676373405bc1bcfbe974797cbaa998a0315cd9051bf669e00611880aedd88dc690192d8d485726b47879861a85349c2017d9892692de8df315ec3eb4e6c508b85002fc7e6d7812fc7e025fca92f14ee57ec9f507ec05fb8d143db2ef6b83b8785289c2faba51e962b77754c0081cc1253de4cf8c36d2150b263fa01e19e5157eac5521e29414407fbcb604a442fdce7de9c99d46d71f78d1b9931033af38940d70651884b766762605eae11457a60f44bf5ceed9c0e9a9c600da70b87b57e4b5c280e3aa568bc6e3988b5481006298bcf9239583f39c5ef439e551b6166daf31970ddf7bb6b7e068dae50c15d7a1b3d4f3587a91bdeaa59dc666220c2dfd238bef11f99dd47b87dba8c60598b531013468ea5f15edb0e2f43d4f4efa673e88aadf4572a50c25b3b7953c4ff0ca8f32d374fdc3c130ccf67e95abdd315fe7390d5160f6b307f3a20497c76f69ccf18151e5995452f01adf1d55bf3a678d0acff44c50852f940da91aa3fa8a5bc8cc72df7af11af0e19c167f6031dc780df8583f290059f5abec6917f7ef54339538424234454004be4398cd0ca6cd1e71d0372f2229591f7647142c13c5b0897806f30 +7167e1e02be1a7ca69d788666f823ae4eef39271f3c26a5cf7cee05bca83161066dc2e217b330df821103799df6d74810eed363adc4ab99f36046a,724e26ad36068e3825e1f997cfed8ad10194b96e76ef425bd347254bf19bb862dd449e0182e9b8e20c8cb5440e34cb7391935b6f5d49f3319a984e313a9f4ed7107c43d737f016bd20d7f454a670199566cab98c4d05f0d31b2811a48eba4df019936b0c6e983c3557dcffd42238885a7cba1376cdad15bc2fef1e75013cd3aca86fde4b616f2bfe310131aa5ee826f5b0451d4dfc0f0ebdeacb36a8b6ab96d7d81b2a21f7e09c5e908fcacfa763ded4361e2d9ec86559df71a827662ef692d503c72987cc9f5a9fd69f9aac4231bf27e8c64ade3f9b51ff7df4775b966a6c2fa6f913fd191f9b79dddfc077363e1e62810f9d82c82a0ca9fd45b9267b17998c2fb7e812195cafb0a08831ca47857e00e329072037b3a96dc9780fdb52379e7180ed0e84866d42779d89f56f94a8d86c0600302a09255f838efabbd08fa7b342ebce887cbde92743a36c14f61386bc9fa5662f7a2e39e0cd165e0e0f635478eb28217c1e97ee7df96d6e6143918c7cfe29236e9911d10c756871e749e2ca721dc4f1d0dafb1715591f3708971409a54712588af7cea3fd2d0d06c036cae4f76b885f50b3fe11a39f304c9702bf5f24dd5a2006e9fe6ad23aec9598e34b4b043b092caed032c3fa42306064805e73fe03560ace3bd87d974c8fb95da0c68e0ec4b245c849bbd06b94a319209514707bf5447113ee3b14afca06a6bf308dbe03a8 +2fda311dbba27321c5329510fae6948f03210b76d43e7448d1689a063877b6d14c4f6d0eaa96c150051371f7dd8a4119f7da5c483cc3e6723c01fb7d,d0f92c3953c2696fc132fa48ba36eb7576d34c5bacfa4e9d9f6dea8f7b0b6b746f6f7914ee8b9c25ebca91d601e781b29c99d0da92a1c8670918927a45b2af16e9bf00ce9a877e361e797f9511b9a116ab72209d7e8dbf0e299991b173e4c654021517a94f9f4cbfe6fc4bb3c3eb5171435219ec0d80be57e3900bce9327d10dfdce70bcd32c129fd5d5bcc54c4bc972f67562796466f9bcc7399db8444c2ee896ecda88e0f9ed729985992f0bd707ed3ece97064480aa1d10d4bb176f65db3327a0f34d3cc32140a95594da7707f565849d1258435285c1b9828723ef42c475d30040aafb3237a759141ede73070e8995d2ff72c727b1f8a215af3e5113852febc029413c2d2f21849ccff5269b8d188c147d4fe3843d1950fc09409ba0e5fd2c5567f11f0dd098810924e56463ce5b6c7437163c6201a9252dc484800303facf0d6b004cc856bc68aedec5496021b37a667b02f5f7e7234484b531f07ed78b6eb747cf595367ec3ef33df41d25424a858f50a63d5d503efeb895334466fc3b01da6246a5801b9d06071d765a65e64f2214f93b6f072115343d711697ef2e1463e021cf3ed9cfcbe5a81e54dab729d52f2f309becf754e3d420cf0ca060c7be4589d748b84028517af7923767833858a35b26b0ab5c5e3b14e68bbf50ac28a3129f6ae086bf783612749daf4cfe87e75a4c89def988064e32d616f1ccc17d46 +95d1474a5aab5d2422aca6e481187833a6212bd2d0f91451a67dd786dfc91dfed51b35f47e1deb8a8ab4b9cb67b70179cc26f553ae7b569969ce151b8d,f31de8cad77a334c3480d93e3b30844df1ec344a8d44cdd277b0099f28001239eb0da5b566fdc383f0e1577f67edd2bc0f11de67f3e7a4d97c56c9f3bb0fcb4d3e4d08f7f3d5c30fbd2d964cd45f36826f614668193554a33bf0170ac3e64c10e4e3570eef84df387944a6436a814dcc53645d01968c4ebd1bd0bdd76354580805bfadac96470fd354ba2630f7ff8f7ab29282aba946b1a9e063c316a6d337a7cec2fb4b562b899f626418bb61eb4f9e9bd7b294c7eca75ab522d642ce495640e4bb1e2b14a10775704dce5adc7d7e3c091520b48dd18a291841cece5ef56e1969915fb497960d011a8f46a5b08eb39232283ef332f7ab0d8fdbd900bc200183186be31a6eff7f5f4cd27c12bbeedb0715a0e6e1f6e35753fe7f3996c75ae34d2e8e76e43f49ebdd505dee66536e5f2332daf4ee462b7b524f3bed1293bc45df9511fc03d2734da036eb3f8c62bb0e623031939e83745744f7dbe93e57ed65eac1016e414715b54ae83a15fac6e76057d77c3811491f390c0b4ea0bce292372a8633e26c10c11e301e57983109903dbbf4d08434a6287b8df665bdbfb03957cea7ae4eef506ab1f7af1358eb48e7fffc9606c266e6cd903c75772e2e88e954585de90111a250ee62fc12d75c5c58cb7c03c9c06c2aac9edbfeb02a1207ae5f9a92d32dce6528a13725edbe757f309449a40e93286388d8c09f9bfbf49e5fb826 +c71bd7941f41df044a2927a8ff55b4b467c33d089f0988aa253d294addbdb32530c0d4208b10d9959823f0c0f0734684006df79f7099870f6bf53211a88d,a3d9ececa03a1016a8546ad75c7b35102d5abb0021fb5f2b1f53b591624ef0f6c199f64dbcf325e37f4a361368cf60f3bda9f11bcf5ff2eb1a4c0b0546b5e898204ea5e4117f519f72f2f5de1017b2bae0723d91a430b2b3c1987fdd24ff0d0f1cde2483a22fc37f296ce16998c12994603cfab4b496d3333b25ed48adb1ec926a44cd5db14c2072588f15ea752a31a8a3aa559a35ebc900fce948111af7522afbdf7c56065b196cdd00fdbaade3a80d2db10271bdf6418f0f817fe991ec055cca474b61e1af6be6ff6396ab04716809433bc8af75369049e605c1c0028a0d370e7cd0c1eb571fb379b757e8bd21aa61c2e2f2b0d0dbd2d73acb2dd0887923b840079bc74f6c69682118b2b3dfd3fe94d3a76eb8bd68cfa94034df0b5419104675b9f5e56f8c6e0eff12d9b20e27535a09e9fa103803b62c66d7ae09f8e39a5f505f3bf93d27eee1b16546f97af0616bd4923425a1f0fea1655334a528c5da469850a0257496c820a351d826eedab469a3871182b8435615e8cb1c8c81d34f8904df7f81d48ffde990b69f0608e6b05ac130709d3dfa9e8d9f343622991bc686e80b4f0877c03d9b1e0a190d4c33c11246a20cfb297e127fc359afd037b1a90c040d9e10f77a3f6d9fc45a2877711559c8b09348b203fc49a1770730d1206dd03b9e64c390a308bc27896309be2ebced1a7ade8d7187e8f6f9a76523fc820e30 +f57c64006d9ea761892e145c99df1b24640883da79d9ed5262859dcda8c3c32e05b03d984f1ab4a230242ab6b78d368dc5aaa1e6d3498d53371e84b0c1d4ba,46f35dce4ff3a34e944ac51b64ab60d314e30c2ca9c5b4675d759e1e852835977b6e247c025a8ff0248c622c492a04b87c5a2c906b2c1cc8f9cf2e03dbbe046644ed26f37b2c4eb2d16b558d82e2a3400ea2bee9b4d0a3641b7065fcbc34abd67eabdf5ab7b3f278c47d24ee127515a2c94ba955a01a098befb59261082f23383210fe82208574b95763fca6132afb3e644461b1d78f3c8e04d860fb0952f9a33a7e56c1aec1cd3ca913ca62fd35fbcff62b0032484ed07ab9c510c589f62965d676382ec7e55e359f5bfa7124a54b83c245725ad796987ef4e9186c74e8b1b53cf027533341278b0a6b621d7fc68b556f0b3e1a95312f4fd3471ef1bf3c3c5ece8269b29a51470ade59a3f15f2600b858eaf8b6b109339cf1b15b0edf36e0004992bed6e1b187ba60ed3e92a542a83753e14e0ca85a0df441e5b03a9709eb1ae714615c7c5f2f54c373bc5abe342124bca909bd4f6696950e0483bc798059a94cd8d852d6c5e596a6ce12ff053874f459e68062c5650ecc934eede1e7206bde104cf33c95fe103d279108b60b4078db9522f2ceb28b77def8e4e59c93552b8c09c0d74e8aecb3b6c50be0c123e2eb39470908bb7288e451c51f6f7154143dc78d5f5c4ed402217a3b61466ce80cca2257d77dbb99b6069fdc6cdca949bcf279b3e4de57968dd0ef83c19c5e1a07b19b85fc60e593600470c3f4603178ba08ca +e926ae8b0af6e53176dbffcc2a6b88c6bd765f939d3d178a9bde9ef3aa131c61e31c1e42cdfaf4b4dcde579a37e150efbef5555b4c1cb40439d835a724e2fae7,77b7496ed08c3933bd75983c0c0494bdd8262493a4b55ddccc64167e67eac0f6e6307acc15c33f3963744e26ca6c504d393b3ee8165e4d49eb3b6e649207653048f8b822ff884dc74937443b1c4a888c7a768c63d5b5d29e7446873923b9d7a56fa5d9e90760ab86d5718e3464821b79eb46d169141ff16120bfb650c76d4b3e5b3f6ce61febdbe09aed7f4c91066d903af6e56531e8ff71549508b6e420cac6bedfe0cbeae6bc228476bc8c00eae43d40c82cbdf6b460c376d7c11648eb2815b6506abd4339b25d58d45cdd0a0b9e35a88e251fdc34d4810d659d179f59ebd03717fd31a6394ce12cd5569066e138885cb2bdebba06367557ce849eb869f3cac38800d51c22b666ae2701e580796394dfa02f4910bf5f86aab53951233364ea20cda35afbab445be7f686643856f825394be7b4b6d2c918d0151f46fb9aee8a7ba2d706e48cb0bc429b064262c1a0eb3524ff14632f5184575c15f6f4a3446e93cb4e86b6a931ba268409ce30b4595fd2059a27183b3ba8d0ace8e482866d5c7d5b03db8dbd24b99d59eb6eeffd209e124535d154b98f9991d84fe1aa763c5133d41ecc233930957dceb7896af70f735a2f5c1e79480afd50943bc5014bcf0a7354aa7f713163b55a1e41bdd05fbba9c1db2c69043ed9eea4fa45c990ccb4a8dc41afab18164018e54c47ac5bd6980fd796acf0ddb42c7042a4877e8be3de29 +16e8b3d8f988e9bb04de9c96f2627811c973ce4a5296b4772ca3eefeb80a652bdf21f50df79f32db23f9f73d393b2d57d9a0297f7a2f2e79cfda39fa393df1ac00,8229bfc635a769d86656396b7723fb46bba9868712f27c377925ca6b358b8391e0ad8c30da71fc8f0716bb95acb0da00c61f3a7bc8df1315715e925f1ebfbfb5d72cb3e098f0c014a80e88a44231dda194dfa8e35e359f60ea5d7a5e0d1e64a8fde294f4ed2e3e98294dab838b2c6b3fafcb2995ac17af67669a24fb71318233a82dc8b934c8693b3df784a5bb34ce9cb3fde79afcbfa66c07d1202c954e849dadc0c1d5ba79bfa74919c1c6fffdbb834287c852522a65ae3d32e337c2bf16c3b5e22d4577f5b05f1b87218532041b9692b0ec561881479c924ba92e154b57a1afba6214f68fd067d109a92a9b0e127a0a6b78e85808268567cbd1a2653201233b4e80be103eb951748a1d1f8a205856a650c58df15e8e1c76644e52614ab4dabf51a2320a98d259f8295412291464e1d918c9bb8f5282301be5f91dcc507f140d8642b7a6fd37327cf38f510679845853cfa039ff4cbf749d48032d6650bc7ac2becaefc5672ca7c61a8f6a1bd69d321d2ac1e6095b3af7111f509be0062707617c62da3336c3086c39b2dcb9da7f23be732ef32f906243250ce4d38668acc8ceebee87c43f077df2df1ea4f6345477490fe37725eccb8d4f47b14a85b0d36feeadd4a020da3dda4a48895ddaa45b5ef8499e937d06bfe6df88897a828dc19d9ad93c622e0263e74f818f921c4200856c9ec9d36cc99a6b0bd59fccce72ce3d +fc424eeb27c18a11c01f39c555d8b78a805b88dba1dc2a42ed5e2c0ec737ff68b2456d80eb85e11714fa3f8eabfb906d3c17964cb4f5e76b29c1765db03d91be37fc,66126e27da8c1600b68d0ed65e9f47c4165faa43dc4eb1b99ffeddc33e61e20b01b160c84740b0f9fe29fda1fb5eff2819d98c047cdd0cf8a0d396864e54a34657bd0c0355c75c77e5c3d9ad203e71fc2785a83d254b953277b262ee0a5bb7d0c24ed57faed4fdb96d5fd7820e6efeeb5a9e9df48c619c4872cf3b2516dbb28073273e2693544e271d6f0f64be8dc236ecd021c00039fd362a843dc3681b166cbc2407495e18903e469403807fe623f3648f799f18fbd60fff7705d07464e801e0aed4f2f0642b9a2c5cdd0c902b59b1da19a09375c1c13175b618091b8882a0e7205ee63a9219ecbcfa943a10d2d9a50c8c0b5d43b003f67ef0d52adbf9f659bb62fa6e00678bb8d4449648872a99eecdbb3dc381b5199fd500912afa93c63a6b23d00d0a416468fdab93aedd9115265be3a4440dd4029ff7f88d9755623e77f9430b934dae529be9a6b307b1b292ab5918eb24b14598554b4cc6269419c701494b7cba5b3d69f6cdcd5181fd03e0748d08e1e0aa5c4ec62c47877c1085873c016ef24e7e45da71d3db9db23b153cceda9a9ab5ccd8c5466cef29810098e976e4867075601f83a2d2cda1a476a1e990ce04c4567ffb99aac428922d9d8b25af68c36463d3aa4f689cd778f79e743e0bb5f935e6d45f978dcb2aed12dfcdca469556556e19f25d4c959c98785fb471d4bd1675d3b84742766d5ba4bff2a3f912 +abe3472b54e72734bdba7d9158736464251c4f21b33fbbc92d7fac9a35c4e3322ff01d2380cbaa4ef8fb07d21a2128b7b9f5b6d9f34e13f39c7ffc2e72e47888599ba5,efaee039c0412fce8f55f6e7772889ec18d0604fb18040dc1e5783596cd820b421a0dcaa528c8a62b17a22164430672da6d818e2e555aa8e79665a6f8f5721a4e17fe8feda551acc9116f1f50e95839fff2427dc1d988b0269838102547d4d46c11d2548be3f885111d53f3061a74972c56579c681c20bd5d47a4c2a9523bce154068fdf3813f5d45a8d446758c212614e3a6e80ebcfef81e44034e0f2d02fcd0ae5e6b10dc24ea09b94dbc47873768c0dc6cf2991b9477448540924cb57d3582d7b8e453e946c57129285b548fcc831b3e311cfffa3161941689e3cd649c3f47d96037804d0c6a4fa8c09b11a7d5a35f6c4ab89b64c735153422a3e529e19b9ad7f7cc346f904912e1a6c098cced3be9755137a26907cfd7f7aeb1a573a971c4a5760ca5399cbe642f0106497aa1d364ddcdabf375c547bddb6011f26b564d0ccf4e055dc0869bc280391e5c0203005d92246e377dc560d16f3a9588068473b14fe7e39f9c25108ea279d98df21902e60dd4eb03266e873d3b0c24dd33066991386c4311e58197f24af80fa150068407821c2327e900340550e7826b2f510ac65d4b21e9336610945a0e5a0ec8d132d694316f2b8a21cc24520c6204ef036116b2fe66a79cbb202f65e1d1782ae10cc71be51dd44718e2fe9d229c705b94b9ba6b27a3925e55da290875588c8edb8a1866fac9efb7fb292f69a89ed772cc68d +36f9f0a65f2ca498d739b944d6eff3da5ebba57e7d9c41598a2b0e4380f3cf4b479ec2348d015ffe6256273511154afcf3b4b4bf09d6c4744fdd0f62d75079d440706b05,f64cb396701785b64767d4f17a768ee198297a74e5d1617ff74a3323c096579c0279e351c2407bb889cd4ae718b09aba711fe3ac14ae7d7de0072e8bb0b6a1f92a1c93ddb46de891cfb1f36814e585f672ba871601e817bcd6327f3a7fa7de35af6a0948dcf3dedbc8a7154ce8529033f67fc656f95fd47b60e49681895ebe0824df50f8ea0480b50eb3264243a88bef29f5f4fba012b86a5dfc98054af4d15248cdadcb160193de7068ce71eb76e32acdd0dd94f6b27b5158d9e63eb25831219768454c8a951e9678f41ef6f654caacb0f2ab5dd614bf0bbd932de06fc31d7259309b23df8b5864322eb2d8f39a07e5a3f324b64876612be4a1c47b06f7c5bb814169d94b78ce22aeb7249c96a29c52bdb5550c7b292c96ea9ed6700f5d3032d2a81cd68ed3a6de8fcaf9379ed0d95c94bcb0082915ff7db5ea1bc25645ef3b546a728aff4ca20c6f8288ff0ff4b7dbf838e1a3ec5463ab88cc827d03a748fbb924797a98d309bac09e73215bf8be798c151d322d6110c280d85b45785d854da39a80f64897918c169bd7e1fc52d003999c084bf69b696e6d747e859dd2d6ec6fa1339a395858477bc49241b302fc74e0188a2a8138507331923c357ab4eed3f64ffa908cdad9116039a469229f9a62070799026097ec7f5a71a7fb01b5473e8035d383b9f236f2faa0e06dbb135a939ef9cb31af1e312f47c6c9be1f50da36 +abc87763cae1ca98bd8c5b82caba54ac83286f87e9610128ae4de68ac95df5e329c360717bd349f26b872528492ca7c94c2c1e1ef56b74dbb65c2ac351981fdb31d06c77a4,cd85deb9da581af66c0b3125b697371f16ee34606a577ad6d8ac7e4e4a948b36c844ec9ea85eb168d7a5a1eb4b72a685aeb80a75075b420c9b53b963d960f7bc88dced631c734114c28b2e20f0657d9256ab01b1afedda9b9f85fd30d0de3b98db38ab90de60045836cfb12c41e5bdae57b937b637c11ed47f7de242eb9f72d3253c5d883b22333f181ffad60a541da08601791fc0f8d9f44a94b551b1a879b76fc2b7931a2f4301d121a4e6861f5c84ffcb0139fc37268b5f8a4c3fd490809cf44f68bc1e665b369d4d74dd0bdea71ed0514c37a47124ce146927274d95067c80036ed9f1a5b0a10ae71e837a09dbe4dc358df4687392d99b2ace8beada9656677518b1607c8e13b7f45100bfcefa1d4e38b9bb29eb23d17b9cc66f70635a6c531be9cb890ae833cd7ce35498cc9f81c576493913bad87532b711f3f88873e9ed48a83b6b2c503e096a33f824feb4ccc702e82cef00fbd938ff9bef6e3f80e149eb3433816a1d3fe7f005734192ccb5a8b0d7d43327b535547a9cc7f5fa286f9eac26e9e6a1cfb86db35831f75a9902a3e78f6bf9b4728836c81b3c614923c3ea88d6c5f55449a83eba0f5ff7b4f07084206d4590bf817c1feb43595462037afb6969a91eeb963bd244adb1b654fc98a0b0be99029b3d5bdd69d2158939d677b054ce55decf0f332851e0a74eaf2bf3eb672d4cb1f467d0e5391f98501fec2e +94f7ca8e1a54234c6d53cc734bb3d3150c8ba8c5f880eab8d25fed13793a9701ebe320509286fd8e422e931d99c98da4df7e70ae447bab8cffd92382d8a77760a259fc4fbd72,a90053a8f738a68c18cb87fbaa8370bd14270412d0014c5de8008fbb74e619182a0442c121f7e2449a5b019dc0ce597bf1d7d3e64d1184946d45208a864723a73cc1e242f7187811c522f880acf53056d835bd150fcb7db61363d22074349ff54a3e5ff2571272910a7333959d8cc29f69b540e5ecca50df7799236338e29255656930e22679a3a585e32b88c27452be75bde73789b45623e695fb7408dc51891d50a3bf84c5088c5f6fbb1b740deb7fe38bca05f1a3bbb516e9afed0a41f8fce94411cb84d8bfd51ef917184a66c56b31a190ae02b86f62cda2fd7471ec030e94edb56c144025a1ba9b792a515dbbf402d33bb6451825e52a87b7b82c44cee32669f96f3d8daac5923127b51ab5c5ed43e5a9344b32c5a3705345ee98ccc5259c9d3342cc10d660274dd628f1c2c031fe9ed282500d5c3982c7976620fb46190c57856e519c6fc1760a306c3497f2e001c7113248f53ea1a4bf9db370285ee441e4b43459b6f8690cf10bc1785138f8855df859bcf1aa581db4a6efb576d938fc273e7d126caab7fbcbad62dbed1fe2c33f24640afa899def2825ac2c0fe928df223b1043117c061f1c7eec723c5cbfa8314e1b18ea6cb63c02b9d6fa3b27929b4d42f1d785813fefe1249f65b725d4de59ae071a4f6a40aaa26935f4defdfa3760c98cbe805a50debb3011e006015fbe8400cfb1b6b3d2162014d675df4246 +13bd2811f6ed2b6f04ff3895aceed7bef8dcd45eb121791bc194a0f806206bffc3b9281c2b308b1a729ce008119dd3066e9378acdcc50a98a82e20738800b6cddbe5fe9694ad6d,27bf218a01125514bb1b78e582aad16720267373bb27ff96a594b7f10cc1d0a393fa753f50437c89301542d27c12c03f53ff771cd0df4b38f40b607b67cf419020d34c18f5bd3bd424d39f47d118c84a53a635e17365f84fa0340be3212056c155fd227d3b52f9be75538fc23287b5deec0e5737c8484abba0be6cc43d956f17a41cf81dce5e78326633cf09326e0004b172763089a593dfbbc1a0960a16f207f464f9ea2affe732208e970e00aa0bf1228634e98031155b61f6ee509648d4b0bf58fc9cddd0b470b95a0aed8a3a96deb2f7fcf65ce08a826300d4e48a681019c5a8eed66e7fd5ff098308138b4e11886528aa9ed32617392b0f6e133a99683daddac328838008befe9dc680720bf4231e88848660c8ef4a2973046d8e70d8ee8d8497aed8a748b3185a77b238b5650c99095d8702209c0c31fe1770042fe3bdc2582f5fb841eb5a234cb4c9b637fb4c5dd9f90225db4c62da420f3d1895fb2eb05e3a3d6767f73fdbc8b94d48a555ce4cde5045bf5325b782e0c242fb3cd27d963a9ef014ddba4b0608f2627fcabb2edf570a49ad5377b1bc7193d9cccc23f5d35c2db59d05df8d4a8e5146298b6ebe1de25ba1089dc746efef6bce22b43fb99eeabddaa76566452f544eaa85ce4559ba683a122ce76927242050fb236bda091480ab1b9adca148b639f986a3e936bba565b54f727a0d45f369df25b9ae8528 +1eed9cba179a009ec2ec5508773dd305477ca117e6d569e66b5f64c6bc64801ce25a8424ce4a26d575b8a6fb10ead3fd1992edddeec2ebe7150dc98f63adc3237ef57b91397aa8a7,2fce215362a523d7b76fb836eb458667099c58bc51d7ee6f6deb9894b6a337576b0daf9a806488c3d238762b7a2e7b12aacd1d696517eed142aa5dc5a0747f08e5e39a2486d75f497cbd6c4899d6f5bf2aaac9189a6abc6e787b0d9c5283c840e518c6ab0393cf60337369251df935a02de0463dbfa4dcdc1de9034fc9c21ffb9dbd7c48384dff31012bd5f5a9cdfdb7139c3c35f560913d643ddb728910413f1267bf1bf1586c5ee69dad26b53154934762d4c80c34d511bdd8a391f83d224f9f8f83b61daa046c542bc78f153a3aed27e1268058f6952258d274f11c8d9634a5bdd4e69c60dcf1f89df2238eadfe783cba652a554186d9e8307c7773722d1049c3815526f583612bbd8f6c587d058b80fbd38113957e60212777a9f67b612312583fefb67533c065286cf371001440b1a7a43de2405e5e92d633f12a63ee2ebc408164545df22803ff239dee66eaa20780d103d940880e8bf68b9d815efcf16f59e0d858af33fe4d287a2b8e61c6ebf26e16e354b3ef63774ee01a14691b149d81f010a655f308e966c990e1befcb6e4253ff43bf473afa78aa88c36ebbe735b6b2f92ba9d07a738e000c9b42bf8a3a4d8fb6c38aa36b3329f909676183fbb520196d0dedc80dc6ba0db4d72ac6544551cc38b23afe000a91f10a89956d2120494543e3ff5d7d1b2791207860a0b921debbae769e55713a1d611f6b1175bd0 +ba5b67b5ec3a3ffae2c19dd8176a2ef75c0cd903725d45c9cb7009a900c0b0ca7a2967a95ae68269a6dbf8466c7b6844a1d608ac661f7eff00538e323db5f2c644b78b2d48de1a08aa,992e831e9bf5fd994a73f17699ca0acaef65e8212e5c4a495569654b5db523bb04431b7910a343ff254f4432485b4a6a88701afa889b11c45c53b4a1c4a1872fc685d644deb5de2340511f29d062f6cf0f39803bc333044cde83103155a49f77ff8946a77fb092d1cf1715f02297ed4f6b0a43254863641c4c244db87fe486a3eb78dd3b57cce06722ccbbf53eccc862a8256625ab03563fe4730f74c8f78037bde37d538da822ae9141b8098a8b57d74fceaa072746dbed8c4b23f91b3de8b9b733d06ccfa2fc18747590c9ac01a9fa675d8cb51505098f8993c494592c2561f8f2fee3b267d8fb77a1ab853432850f90b8c52d08e23a19226a61e0589842eceb48059f8f1b749d563e2c652b70c426b91b8b0e19ef2b319f2d7dfc25f0d712a76ca9332f92bb38cf89ded9802bb7ad5654b2357325cb1cf6f1c9fb364ef41ee8b0a8baf5ff9e8878e56ba4beeae384bdf029e4911df8e84f5b570704d53b67d6bb1aef37976b38f405d9aea67c6a6d77370e37bd78034645a9b6405672366dc061bf384eb0e9e73466ff5d018c9ba52dd262dc97970cb4b8ab467847c23da0fb101f5a7b9eba51ace6c0119ed03c7a14afca676bed44922edcbacbc79b6db231c60dcd4abbbfa0c13c0ab3d680aeca78eb9bf0f71ce6886aff6c309594a9df2d01692c56265a6e9256c366c4c53b6c0fc38b6ef18ed8c571d94ee27e850d4c +0efa26ac5673167dcacab860932ed612f65ff49b80fa9ae65465e5542cb62075df1c5ae54fba4db807be25b070033efa223bdd5b1d3c94c6e1909c02b620d4b1b3a6c9fed24d70749604,47cb72fc64aeb3f76085626534ea346a2b4797b5d61839bd7a15df05d5e3552c2751c697bc2c532e2b3a8934b9acd8985671450db65d6f44d9b6e27972fbe050e6a76537eed3e9fb15849ed61c3b2f6e30a8523df8e95bfae3a93bb306343212f1c28811359442759c85c3e6829a179c03f86a442dbabf49940297de3f29ca9f6ee25eef49b9c7b37dc4499a9d16d3b32da2ab391ac1e6ba6f3967532fa18e50b1e52d6d3eb2447ee20ce459ed970d71e33d80a20e933f09e494a753d15590a29b15733fbc93217b47b3685100aa31d5029db16fd7e293c51c55e54e15457f99009590ef8c7b7be110453b73b4652b2f9c048bd7f2ea2590d33ecc5508bd62be3a0918c174d99c5939fee9c48592cfc220f59f28f57777ddd43aaacbd23a61a8473d4ccf01389e982877282e8694f03683ebb44406c798104b9f3223b0df50ec964665492eee586cbded57a75f17762a2903604f8120fd1d981afed7d6aea59fe70ddce738a41f53f611b927ec3dd3ab7e89a0b0b3943eaa2a74fa2c020984dceb577f6b3e7ae98cbb81f3cd9780e52d44bdeffaf466fdac7a4429bc89295204b0fbb9c8a22a5f202e8536542c244cbf3000c0cc1cbb0c4e18a29cc92697b0e58ab1ae77ae10b1d3ec92eb697364ca69279c4eeef39d27c06e63dac76028df7a5a974f8c97af5c7aa31b5bb5f1f4db2e63b3d4c9f6849129084c77ade97562b6 +bbfd933d1fd7bf594ac7f435277dc17d8d5a5b8e4d13d96d2f64e771abbd51a5a8aea741beccbddb177bcea05243ebd003cfdeae877cca4da94605b67691919d8b033f77d384ca01593c1b,458ff16e716ee4c47f3b60b3e473d91157767621e9e3a200ea0ba18b511b00c9ba311c7d542289d03f07adfa6110675dcb43d5d8ec69c0eef6aaf4664f917e01ff8dc5f203e89540eb96640ff807ed60d761c4d3d92f55604efa648c5caba130731fc2bb535146ef6ea4ff3a7cf388647ec25c3879671874ba259c6abb31b4a8090bea5aa7d6b05f5647caeada7ba35b45feeee744bc0e76d8ea6b84cc4103d358192bacb126800cb5a6e114709e7da7766b761b6fd0a83203b82b74e87d426e71ac1afae590f4f06008537e79e2025007cf2f5ecd0bc1a0e14c5cb8384b9daec501cd985c9858212ce2b9ab2422f6f7ee0e081fda987aa90a6d51ddc1173ccbee0592e970cd3dda52431c57fa323758ac0a4e47d049ef3c51211a4f9312614312b6dc119336d7bebbf325c2c4d24727e2909058543be4065c58f4e9e3f3f0ed88b8c392cbf610680123210d5214650ef8de411b7f6ebbcf2dd95f7feacd074a29516e42efbe37c239e9aaae6e0e1e1c61b418bff50f0d7d56347579a75aca891d51cb5299987734ee208f0d85512c846aed6db2a2f453b110fe2475852c92ff1bb3439d9d6f3eb76b49e239f72883d067bf9d1bffbb1b668d677f940940b9d042c06edfa9256b6afaa37f918a99309e4e40cd3d374db5a37bb43da60682ffd1d01cd1ebf9e90971fe16176dffda5867150fb83f271e4402ed52c1df78f2bf52 +90078999fd3c35b8afbf4066cbde335891365f0fc75c1286cdd88fa51fab94f9b8def7c9ac582a5dbcd95817afb7d1b48f63704e19c2baa4df347f48d4a6d603013c23f1e9611d595ebac37c,021f06c7138f663522bcd444e597c2b78f4c8369c88747a155080005e09a68c6a73c4f8d1c7c088d3cda2b48f310d5371f336bc261697542028d48ff92523dd78c100cd858fc5fd1f4918142447e11281881d9c22680800dac76d690444458d53e35d263b2e081f470c9e8577565ef7f8c530f78aef2039a0b253a28e29e6c30fd26fff9677e65121b5175822d0942d0dbba9f764514fb936369f74324e8f950bfcc192a30921f04552245ee79cbfa319063e4dec133e10ec6b02002fa61ebc288b8404de81d9a513fa7fe6db2c61bc4ada6dfddb4b49b5caee1d7ccf5ba6f40a39af92ea26222850d4f4fa9079f79365806440b89663c705a247629c8e28e77fd17d39acb37bda2def7847c12d7f180a67bc788795d6ae9187e6aedf164e282c1e76322a8f38856c6d95460977fe8f6a760f49111400467e7e0eaa5ad7e9c5f9a17b462cc8b45f308cba6771cab434f407ca6cca371a6c7313cac055a13d5c79195dbd949a4fc9c176c26e6d5ecf343b199e478a25dda55fec4fd416e2708af001bb8ac3773e7824bbac1c0656953984b1109f1f95db0aade0cb53be77e88ca83a86563e1e87011e718fb3616ba3e54a2bf9dff761a42ee1e809dd1a431c7a832442461da90e7ad5fcd581827bfb2c8fdb0a046f09d30773fbc1481da0fbb92a6afd073ba96811acdeeedaadafce7c70e4ce75421c85e9c1afb270d120e186a +64105eca863515c20e7cfbaa0a0b8809046164f374d691cdbd6508aaabc1819f9ac84b52bafc1b0fe7cddbc554b608c01c8904c669d8db316a0953a4c68ece324ec5a49ffdb59a1bd6a292aa0e,dbc0350ccaaee7f6e18576e435cafc7cc65ebc81b27da2f18a888adee19418bf6f4d1b3088e5824bf663028a690354f4a953ae73cdce6b095a835cd45ed5752d72e699acf031529d73348218eab5dd6f98d675e33880f6e79d0fb3a78e843f26e018f543872a313560f8024a6756013db3ab13fb23661d33ef9520ea60a04675454b5f3069230447000ed2a879a1b342f560a8ad2f37afaa80668e90001d315ba266d03152e714434fb0f52e287a235ef5dc4252aabc8722b6920a069c98f69c64bfc31b1e13d01dd00524401d4f8494111137ee283efe82c2215fea54304c3297e6a1a88e46f000084ad090551a994308165aa2d0d96585dd4c826554ce80d3c00344140d4387322650f857350812c6c4e660d2e3ee5dec73d27a6455d6170569fb0f56313a561bc6fd1bb6fc11bc6a830f32847050eac3451e153c00bdab83d8cef319894db18dd80f1112e560e2353de9c2db6bfd428327aaba644c218fabf3d75cc42b3773db2113d037588af31f1b1f21d076f285f1f5cafe5312e7c2fca07af2e6fe3651aefa91bea2740afd1c2ac77ef03bbccea36940aa9a7d733289f9575e9e14617aae7402dd7847114c75eb4432ffc2d3d0bd56117f9286609dc91e9ca63e1e064f09f2653ba905cb12c8ab6d7772203b0afe6332c4e9f73ba4b652ff16e9759fb70ad5f548540c7ecf6c6dd7d17c5d2a9b45c548b7ec8819e8a5 +d4654be288b9f3b711c2d02015978a8cc57471d5680a092aa534f7372c71ceaab725a383c4fcf4d8deaa57fca3ce056f312961eccf9b86f14981ba5bed6ab5b4498e1f6c82c6cae6fc14845b3c8a,7ac057c0dda89d3a001ab997f2e405b4c1d1906191c3a50399a9a49b2e01cb2c3d20db6618a7aec42f8143c580505145e60d6e1d4559fe3f46f5aa1373502eb0661a608c31839bc4d7fa44ad6586fbb53fbad598c05b9443d6cad708c8664079fb276947c4ef022c1bc7267b41c1764b249c8e7b347bf006df1498e31cc9ef2558f96f7f7ae323d6a633e1bf23312c1e9e2146676730954648727b61a5db507f1959250d49a52f9804668ab3a56ecb6c49ea7819d093e85a0a1335ccd4f54360466f7c37df0f65ce52f7b396b49d39a3aaaa0fe33f053ea711351bfec78a1e05f55954d7056b7380430b45275e2cf57ac13f7fe332b760d8bd793ce4f886130c3e4581a5995f865df2c68cb2fc01b558997a54ab8a684f5bd67855972cb3bd54a9620f71cfd3c9f0ff260b80cb14cfe4fa9d61583cfabb12be42c4c64c85d1f26d3b0645ac60065f9e85c70883be7f06b9376737f83313debecaac3f1146b050f8b360a614b6c72ec91a3e44b196713f5754f1249f6dceebaea8049ff32f308513f9c0c2353c9814c0e67cad64a1f332624490a39df8f9bcfa61c315cf2563031429567334038f1d086be0b9a4badcd9c4a0840348bd476c00a7cdfd8862e80eb9a833bd2bb56d88cb55d3d064326b8fa084f92f3dc2d8cdfba3e3a0e3eb9e44b1efe0563bc7a75f9a736a87a89a15a6812110fe92abf5b8f77ea88c2207517f +12d9394888305ac96e65f2bf0e1b18c29c90fe9d714dd59f651f52b88b3008c588435548066ea2fc4c101118c91f32556224a540de6efddbca296ef1fb00341f5b01fecfc146bdb251b3bdad556cd2,f0c453711d0ce1b3a120bfaf25570e3e949207f575782ffbeb8a6600d7caa9938d28ec6872d1fc914bf8bb02331c40728d3be531197694ce644ddd148d0ef54c077d56b6506a4a941b087a61d3d57b8ae53824da8d8cf069d1cf5df46e309108d74f318d38fe1968f1550ad7921d976ed5abc60953e4fd073a3ae7fa378a105e0fc3bccb3ce3469a536efa3f9e5c8590f19ec7e8708af92a9ca35caec1743f2284da30e613afb371507ec61c5574771bd7436583415d8e4406ef39150e50cbe233a781e8867639dd491b1f53217fde1fc5b93671c1b6931e07966de705d162f14ef3c95e67c40ab1c0841380f9a9165c5222477feb97e9a3c88104d7cee9b3ec6876a0ecf0198d258b9e308083b826f32fee17e2a59fc20046ca815fe0955ca88a81fb56a7c90bc922136ab0b3f3e034b62634fc830837f2dfd86798a11b335d5fba27398e5023cde6f1340241509e92c6a4b298b3bd330ecb2012b8f95dedf67b68d5309fa1ac9db856561d6e81666a49aade4de719e1a4b519aece0bd4941a36492e0b79cb7efefadf4edc6a344c4b0640a17f0e7f70e90e77dde40a82457dcd58658316b4b9378bf058b05ae39d0c750692b92bb2d16b5f43200def81ccc61b2a26cce991bf939534d61592328bfba68aa8c9f51f3a04466759d7d1b966789fcba85ee120c66a8f3c308e6a1533220e4a38c21ddaa4b2fc51fb49f59c84b3 +871a0d7a5f36c3da1dfce57acd8ab8487c274fad336bc137ebd6ff4658b547c1dcfab65f037aa58f35ef16aff4abe77ba61f65826f7be681b5b6d5a1ea8085e2ae9cd5cf0991878a311b549a6d6af230,23f75edbcd5d5f329f01e45502b66995cfb9a5f0748e9e1bcb344b639873bba79d21ef36b8cc1bd8a2357d8dfbf3c32ba6c0c2e8936fb968389d8d1388c20b9f572bf9cef93891c643d672c8655bd67ecc3d0ec9452c6d1a0789ad3c734b926188e4a1b3d684f14c0a5d9e72cd2a10c5cfa8bedc0ba5f3ac6b5150a256f2b945586981f8092e0827294fb846986d3885f38bc6f945b900ebb546094e29facdeab1bdc1d7fe1c6c83e562d09e08319e2bca1f3ebd4a82b9ecbd8e6b38906d861e2e0704ee4f55ded4e7a74f188210ee439183e80dfa8795a1f75f0efd49a4fcefeb97f18736069bca02273ff542adbb6eec13128f1d74c87d6c6b45726f62ea57ed49321be6fa516b1aa2349b3c85a5f971c4e15715badeafd2e8a217d1188129cf49a54fd85803ebb361d73f0d8d0a7d557d0e17c8d83c27ddce473908a1cf9ecf0f8085e77fda3dc89c82609a647e25ffa8d2fc86194b2a793c7b32b4c893115eab9a704085047f9225a29236c6188f017ad4972661c796a3258ed49493533bef9a59a27dcbcf614aeaaf20bef156ad261bfa23fbee2d84d76af0e721739af02df710d020cb80e895bf20685d3ae61deca82d34206351870aabbce23cda3567dc1affef9319bb1a212d52baad92d069a332bd020420fd34e6fb6f97102c9af3c877abd9a790bdab7e7940b1cc01702d2e4ceea1a3a2f20e3b4027bddc6e2fe0 +e90b4ffef4d457bc7711ff4aa72231ca25af6b2e206f8bf859d8758b89a7cd36105db2538d06da83bad5f663ba11a5f6f61f236fd5f8d53c5e89f183a3cec615b50c7c681e773d109ff7491b5cc22296c5,0af273f2384078bf8becf3731049a763753edb89ca1ae2ba03b82ef5dde8c5e23e692982c524035d406dbad8fb897af5d7db961652a0d6f5c18d71ef1f1a541d0a29085aaa1d26d2c4366da7e41781c34fa40a3fc7e9132c3f0cffff267e2bc771dd29266e2c649a94f3f15fbc71a561968e0a755d4d0ac7540b9e674539aa4d15d2fe81ae969ee492ce89104f994c6201eab2f6a726d9ab88479e324789bfd003eabc2944c43bc061c1e24b7ddfe1c980f65dd598c33942482475f4d717deae78ba3d8a7a887120d9a814d581be9d593422ab033a1776c3c7a6da30d4d83e8e120ac733303c401b68d1ca76b2a20af4ff0fe49780e25b43850d495ba91aa727dbe6e28b677c8c7ddabfebcfaaf67b8ecd8be1b459bdd68b429e7b25b6b0a02dd2bf0acefc5cbcfe5cd07c814e3266027eae612c39077c810e766a872a79d68bc8fe8edfa04ce2c80325c2feb03b5c838425860b24a6bb2d91bfa5f67102a3f6acd3dd6c9337bde3e94699f3b3431d8293f793886238228bddf4b38f229fe244abe471b16a1bcc73bb7bae6a93788de0d349cb75729d422afb32caecceffc42b7bd0694b154286f4cda4517534d0c2fa7b98e72aef0e2b8d8e0bb6a5fa82eb802c27511256c1352b20d2e59d0d3d63ff5ec33670fa27ca69d2f586826d3a1ea098cd9cca9231e74b91e999efda12f63fa8076a44894b40840fdbc4d25dfe1cf7 +e728de62d75856500c4c77a428612cd804f30c3f10d36fb219c5ca0aa30726ab190e5f3f279e0733d77e7267c17be27d21650a9a4d1e32f649627638dbada9702c7ca303269ed14014b2f3cf8b894eac8554,7fc1f7fc27223766c8f4310087a3c54a5a8aa061eb20d367194243bb62c7d90099684bbf368cb6bb71802c62c9f3258992c0c979557622a5fb15ca0e50a26891e73790ea3df4859829b4f683c7f5c2db0fe08ecf76b9d4e897ab80530d9f1d1242b42170c198c7852566dfadac5740d61a52c4882f46e29afe2c7335c5a1157e5b93610d0a8e4529d8473330547efe22dd9757503c7a67ada4e9b2ceab8ac5b383f2d6170d6d6a17c03ea9f9b9399fd6c1cba624e7911dee9892b31d463b3a44946fbf246d773629ea484cd20b03d8ac428bc8ae87cc8182d96f8d220a7312ddbf191f458493769691e7585ccd740c30fe7d63101023867c9a3f02d999bc0ad653b71dc9a611be56a44d4df2dbde402a0b7b6d7644b5754d50dc81f59fb17f7c38e62427a844db406846bc74dae737e24ff806505c5c4351a54aa920cad01ddd8a5960ae143f476608a6db6168fd5d72453ea010b1139417277e6c5116d1d32008a40cb3006fb65ee9d4f5f9aab1648b3990f5b9dd338836460075b8bc504b4dd2fc04ec57dbc63d32ca39c07ec7c2348a459fde1533b30f496f84502367be809d0ab0c6e86474eb2d7a3a4ce29cc8d0ecfb87b4662fdd789a99034a64c5b40f763d098888fb32346eb644c28fd6bd6bb62e0d5aadaffef0bf0bdb801a809f76d79b84606183067b5056528cfff3aba4f0ec0dc926ffcfc2377035c8b5f10d57 +6348f229e7b1df3b770c77544e5166e081850fa1c6c88169db74c76e42eb983facb276ad6a0d1fa7b50d3e3b6fcd799ec97470920a7abed47d288ff883e24ca21c7f8016b93bb9b9e078bdb9703d2b781b616e,1bdc443b8f1e6a47c575a1158c00ec9e69048be22ac067cdc1233171a69e773b6319b0bfe0281f0cabb4da1f75c583320a96a62fe8ddf10d0c3f7871023562177e827fe0b58a02d38c5a4903b7cd8b0ca80012238372dc5dda701a4287d071fa2b29771f70548ce43acb0f2e5a49313fc76ebafe8b75e121f0294e417323ec9bca9faffa81fed2aa775aa2d2c641d7be624ea861bd5c24ccfdac1ffdfac4627c3985a41ee5eb57e229e1a1b9312c6fda4291605d26ba4401ef106dfb5befa7deb27500f11a09617e8cffbd39ae95d9eee736eba41ae469988947a863ff6bfeea212eea29297025f96453dc3ad935e75f12c5a7f0e6c12213bd7be910d70eb978624843ca772959b5918e29aa377a7b4413946a97e546a9a05bf107c881c9499b9e907a667ccd1b3c64d674e3a5796ec33f6d6e4a2ae7d114d744bee7729773a627c063133aeeec4757f999ea7f01298a783c32934d29fee45e2048322aa3fbaf20f9d70c1d8a0183a630e3e73cb2eb1c934db4dc9101c949c46c1954d95a17b7d362b87fc51be9fe98fb76b19b7fe9d1d76104d3d49fa7f1cafc252f2e4ff32c3ca43a23947eedd4b88ea640e58de625cb0a9e11212ec1fbb24bccb39b06ac90973bbdd279578666e4d169290b0321c5b2197b6a5759fccfd8cfa820aba055f81f1030840f3bef889e8ecff87d0ee1c53db99f67827710dd0cf59346f2cd53db +4b127fde5de733a1680c2790363627e63ac8a3f1b4707d982caea258655d9bf18f89afe54127482ba01e08845594b671306a025c9a5c5b6f93b0a39522dc877437be5c2436cbf300ce7ab6747934fcfc30aeaaf6,78fa82e4172cd8cf41cad3d431e39ea0c6a88544402b5cad9ff3d8cd6dc8890260d989aee087dab49c092a94975ee3d5b8706d0f1f522e5ac350306b01b4b19a81377667b20c201241315c3c05a9f7484ebb70e79588eead5d9bebe5acc3e226b807b46192d64a2cb886e4b811817cf7f219934c57d5dc2d00e3ee234b579b6b6e2d5346d3876cdb3752624e65434e88d55e1284297cae624995b1b37671b89c57e876fb361ed8ac6345693d82bdebe00ac37de6617239205aef566c1619f406f4cb1c9777af2c07f693e35e4289acbd91c59f067c502446f21ca1602d10cb1d78d18dcb043c4b4e06972178bab4c90062342ff3646cec8120a5cd14e19715f66ec6f619da0edbf1c9d9bada80f0bb210f09476085cdf383206fcdeb987623cd69d591f301d8db94018ea3f90b8f067c3e147771f148a60b440ca6be7a1943f544375d50d45db2baf33944190f19446f7a1f04f7e45d59b9548e01eaf6e4d6d525b37a65769d280db6db391f27a9d84e4d97c7ce0afca3bcca7a97636ff3756c6cba855dd5c625574277eca6a2195027705827c0e4ff945aa57e25efbb65f5128d312145c5a8da0a4d46d805c3f6acffb151b0484ef811770bdd87935cdde0444276cc8b64e84b877a31d817e95963f3621afe6fce57d94d50771f91cd0ab1bc61dd97bcf03ebcbc2c2ec687b705a2bcc5d0deb20cbe6459644d14633c65b256 +08461f006cff4cc64b752c957287e5a0faabc05c9bff89d23fd902d324c79903b48fcb8f8f4b01f3e4ddb483593d25f000386698f5ade7faade9615fdc50d32785ea51d49894e45baa3dc707e224688c6408b68b11,414eadc6832f91a04b7700e668aa487e63db05151e29ef1718c7d9f4c6edd1c88b05910f23d8a854b94c7156c421126272edb73a6e158350ec7a39980da19316346d1f330c3fb987d7b4c46b6469b7a59eb6b1649bbb7bc0e074c00a152517624f22a4a58800447e7505d55f687f08fb939d1aa6df8e73bac6ce88467b30976150636146526031bac9f6667aa71516f9c5f70e502d7d18868f6dd359d8d026a040af3cab533ea5a95dd7cb2006552796c5e1eb2c3b46dbd9f2481f1b428cfdd1287299e7c7129b377e3954ae0ee96f955b7f0354610b84652705a0594c045c3cdbd1b564bec43fdb5928b905023b1ba41b448e39e649c0b65cabe745c1dabe9352d05f165bbed160dc2c52794c5d0f07d1e18f47cb94f2f97190944be08c4bae53755b30d062b3d697575ad56fd4c75ed40cf7c239941f7b052500ee5ca7cedaa9190988f47a21216e907a63c795d2292ce926d541f331cbffa9f16516d54999dfc9911310cf564d8f1f00b92bd9fac0aac99a951eae3175ad20558e8b934e05ff58351056466a61ec5cf4f11a01e3fe0cd6ea280e27838899bcaf7fbd8cd4308098e2ee71a4e9ec258d03118f0bc4619c66e52f35f1aad2378d82bda8adb750313705d41263cf2fdeba1ad5e025fc76dc620cdc3b684ecde0283f9a7d69a8463b58f4ac7f5b1e2f3f580ca7f4188f32706d722be4543e8e0942b316960349b3 +68c8f8849b120e6e0c9969a5866af591a829b92f33cd9a4a3196957a148c49138e1e2f5c7619a6d5edebe995acd81ec8bb9c7b9cfca678d081ea9e25a75d39db04e18d475920ce828b94e72241f24db72546b352a0e4,0cf9aa0f0478443df90bedfc2457009f3e58b06efb22d1f282da4a2320623a250d584f27e2d45f708da667a9bcc26e35c19c55b16a993ae9d98948ff2366d8a0aa06915ee5712d137d46d48c536db9a25bdf88f99a941683e342b5541ae481b1ba6a889b7acbe9a6593c53349c1b7d6fc8fc66627a2faf7811c0f0a49d904246b95e9b668e8bb25d521f0905841b7b2ac64b2e359fb48ff29d7a314b1d2e7e01b0d210986664c249dc711346449fc77baee4df54344cc18a816ad9c980bd0d9d01c4ad4ef0c702cfd87805103910e81cd3f6cf4d13d1398e755e5470e23acca6b510ca59ffa0b523a9d7ff7a5d85fbaeb3e5a9c11d947ac5fdac04b0b77e4ae7943f696849df0ff931e2300cb099f0def86d835a8af4b53fc6c3d38ba33158a1f95690e8c5560c060b0e48783af1e2001bb04cb4399cd27280715aa0eda7ae754b8a13f84916b003f87dceebab5938fc4342167efaa2a889c48cf92f6892bd9ba41b61cd1b3bf94d612c2ed603687de8644613605fe9f066e4fcd8ff75da8fbc9c63c37d1828c173bc4ac668aacd20ab1e3f449a7bc4f4ef0a6ab8d5b0a70cc2d706b6c6821771dead7cb29f2332f4292df7e397bdee393d57b06a1aad3da51cb8f1d11e43d2fdbe72f69f951d0fd9217f4462cbe5c701fff1025515829cebbaed488fc26798bee9ad6ce88f33029061a588e177bc1cbb24eb393481f3b61616 +b8d56472954e31fb54e28fca743f84d8dc34891cb564c64b08f7b71636debd64ca1edbdba7fc5c3e40049ce982bba8c7e0703034e331384695e9de76b5104f2fbc4535ecbeebc33bc27f29f18f6f27e8023b0fbb6f563c,2b8f5423a417d9b827d98ac1d21eb7c1cdf4348f28ff08b6f06389e4cc2311c5721509a5888df03f7f4b94d42cb66f3b885ea8b130934a1025220769d1c352f72d378f3a63cea1e762acea57466c3af188772872c16d889f06bf0aa321170fc1aa842b413bff9fa32fc1e060f868a370434c99fe586e8df4c6df1d167912f35e7bb983d668225dfe5a00241a1050702a5cef8cb5ec957b779d6ca1c9f6858aceb4e927e104a1dc59c5e90b31f4a6e27623b46d40d472d6d4b6ea6ce8ba4721a5a765de104c4ed808b4ebd73d60a56363727ce0273710e63fb8a2d565c49823823f7b001e44c8571b885aac4e14f8651cc95c11edb3599bd85989c931f866b7c63f80eff135db2fe1b17d5dff147959606faca0fe22e5bfc88d43f6057db91eb0ad0c5491b66b2ec9b20ea01e215f40922f41ed4ed64616960272617f32d62f28897ba03c5a8657b1dd4adbf0f8e53492998922a47bb2d7897502f8687c465c8a7615089062108d70164677e11e1f63917a4f230e8c577346f880b7b8ecd0640d10622131731cf447662afebbb230c902b28d8445c5f3ea031ae7af04f5b22d3ae7ce58c6cb4ec4158dca5266af0c50f609b12c5f4527f836f8804777bd6c80f5d7d9b0f317cb5a663d3b7f3225361ea81415cd5af56bf24629d511a80ecd169aaf9558af487d46a569495a70c76cfe83462733bf58b2a7c78a7ea1fd05611ddf +0d58ac665fa84342e60cefee31b1a4eacdb092f122dfc68309077aed1f3e528f578859ee9e4cefb4a728e946324927b675cd4f4ac84f64db3dacfe850c1dd18744c74ceccd9fe4dc214085108f404eab6d8f452b5442a47d,c52001ee31f26adb120ead7699ee35ac178d71fb5b0731299552b57df2a4f521a021cc56d54f2b43d18d7726fa977fec221f6819b5b7f933bee2ec643b67e16bcc26a7dc1bb1da3b40f2fe02645cf5bdf3140e89abace926e710abf0f07205291a336187aaecad9371da35867ee8d8845e09fb47269ed94d04b47a3b6c460bf419f13ad2f65d63824805ed264affca9e7ec9774c4e3669580686c0a02eccd98277365940f4cbea5dd5b0bc84f981c16fa6cf2d6f1a292ec956c7d0714c6895e96a7c884173e662ce5db1018fb512ce773ed4752cfabf9045269922d11718c572a94acca1edc04ce16d533b064b416684d921d46a8f2859e7d09660f620dafcc232029a20886a552d29ccc30509a3941847244609911ca6c596e2fd915fa8be37d7eb41d403043683ae9c74dc7d6f4770086cf8c6e101e989fd6a5c60e34183c4ef08ea869fe2af0fe5ef701a6a64ee0d0f813a14e574d504e219292c103469f9a11de750832c2bde0261475856d5c9fb4727ca49ea81908a1f7faa20248c739179cc09d93e4901ed63f14a57b20ef9190176a27bc07f912cc62dd1328b032b893642118ef3426b1a8b95a0e36fcb8a7757025606e9e485b56e84d0e691234e072ad64fb8e836118634074fd8362405dbec4d8aa12e9e84068ee3b29b7f573ce1b52649ca0dc1f758c1d4f5e2b72a861d6326f01084b6b49e478fb4cd8ee92750 +1755e2d2e5d1c1b0156456b539753ff416651d44698e87002dcf61dcfa2b4e72f264d9ad591df1fdee7b41b2eb00283c5aebb3411323b672eaa145c5125185104f20f335804b02325b6dea65603f349f4d5d8b782dd3469ccd,386c3b1a524f2ec39c33fb31cdd3981fdd57f1e33d04fac54828c54f42ef763856b72202799d4cdf4aecf073b8b9eac39f0f6954545bf60dd55ce2fab4558decd7e1a5a40b87a293d35394da64a4f606956213326ff4d8849a3f19781afa9dbc0ad0e0bed551164275d4fc11638af3acf95c86994c27ab72f0e5ee366ca8ef39c000661bddf23551aa368f347b4526474496ce14c30503c2513501404987446a193dae20c4b384d0d9926814baaa863320946b9759c7bf1bc890f88826da59e028f641cfdf7223db20b34b6389b048cbb85c4a0e4e84dc5c5241d2daeaa82e9092ed266971fd185d3b661971160c05c4b42ba8e1e8e31fe588c0baa81a2bf2017b1e0b99bc360faf13315ce88ce653c20bbcfaaa8ed013eb89fa5da39fc49d99e3c050e622122b7e393bd933b72c5392b165e60538bb6e29de30a5947053d4a23038aaefb13db8ba4fb3b1a65b474d94e4cf985b2402bf22ca7fb723dcdd83ba875df3c60350886cab6a1bd02fab32f1dca0ccd879b351196e1f8bcc3531ac653604932b69e7365b8b61e557585b7a836379d0229844f6b5d2c4f31a6ba2cf4a2585b7153c6005d10526dbc144189b0747cbe58edf2f4ffca80ff99a4bd7c8cce3bcac36aa5d0d7dc2b231a5b888198ad71042cda93c5aef246cf3fbe7a663fe60bc04cec70480cc2d83c847371ff5347a93d54059926b6b8f52ce6afd2e5630 +b180de1a611111ee7584ba2c4b020598cd574ac77e404e853d15a101c6f5a2e5c801d7d85dc95286a1804c870bb9f00fd4dcb03aa8328275158819dcad7253f3e3d237aeaa7979268a5db1c6ce08a9ec7c2579783c8afc1f91a7,6bb18c45be71508441ee815061ed782f4bb5acf5393bc9bb825fc79cad025c6d970d615f4285185696ce226969d5e06e1643f8ba93f5617afb096abf46de2ee7d32bbaa335628c41f1ff308418556c51e6da30639ba5da36a14976dfdc013551f632133723aa9555b8b11bf0594457a6b288b01185927a48412019e58621806faa968ca26366b884c428607d2d6fe9e8924e6d8d769a7d2de90195ab6dee4896abac3119fd15ee61251fcab1d3858527e2e6e1b8ec05bf8659ea345e519cadedd779e40d2508bc6eac6fb531de15cf7f3478a4288df556d4b6c9ddc5f1b6071fedf3c4f9a960b18f8301064b4f83620f2402614c600ea80fb2b24bb9b8b777bba3010ac1fbe61ae18bfff9502f66111b8ca1e0df671c311a6f11697dd8c245c4b946b8db03d6c07ef14c45cffc328e6c12948d4137d6803469e996c1d84c3c1dbb8cfce592217155dc8f9e1e558cb58693620f57f5f81578f060b23a1a75abe8010fc538524dc1b5543d84f5f28cde4aa509b8a034522f2f61f8e3a683ead34ece04ee84663475d65d6db75cd6fbe011d6f1994d76be356604d93311cd0410d3b022fc328cc850d7bcc1bb96ae45e8b4c9e53904fd8bb8b0fa1d8aab9bbebba0724dba6a2c71f28ad705fbe6bfd958fe493ac47d70a1c4b3bd738c519558df9f66130c68831a7d748b7b382023810865cd9989735e25186690fa187e8e24b77b +cf3583cbdfd4cbc17063b1e7d90b02f0e6e2ee05f99d77e24e560392535e47e05077157f96813544a17046914f9efb64762a23cf7a49fe52a0a4c01c630cfe8727b81fb99a89ff7cc11dca5173057e0417b8fe7a9efba6d95c555f,51f3de30531335b02c0a8cda5285fbef9af618e433142e9e9713388602b0486a99707be420aeab53dcfaca68cc6cc6a3133075a518d2eb1c500f0ac2e0b8a91d3303594bb38ffc45b80afb8e25c4304a85280e6124891e739fc9df8e34abd9262dcb4330c2c0f22e78447b3fa67677acc1f3d8e836eea94aea4d616132650c9288804c3cca5f1c0139624e198643d52c42960052fbbcf89af00d58600a9597bd12a39a33aeceeb161ee527398bd915abf642746e4c965a77e916e700ca905cb70222a3a8b8c5de3acf75a9a0065681497f27aee6b1f4402ea711ce6b24592bc637f83baf912d3e10e0a7e03ce9314fb264e5ffdc3564307362837c28afbe2c94bd89ad3cd4a48c1a2ec38090c38e6cb4174149cf0d5841049c1d7dda1e51df8f3216caa119a9e3229caa062039eb165f4d5de68fcb76ed32f1e191166be83cb6384fec4528588d8a3188a9da7bc1f5de68c42d9e2934cc1010dc535ec87804810c009982be6646b3c50dcab7eaf4dc7786503f29eb3f1558a7341e49348f73479a2d3ee6b8ac076bf5ad17375d81f9e4dbb365b2489f17c40b9a4cc10f6de034b4b81a3d4f81475babb9581c4bfee62c5626fc436983570d5c6144fdd5a55e1898919a8be4ce3780fb254832cca90f988004d12039a947502216651775160d987df82f43275fc7b8a308c63db7c28959ad9d8e6d27a5a551e685b663974465d9 +072fc02340ef99115bad72f92c01e4c093b9599f6cfc45cb380ee686cb5eb019e806ab9bd55e634ab10aa62a9510cc0672cd3eddb589c7df2b67fcd3329f61b1a4441eca87a33c8f55da4fbbad5cf2b2527b8e983bb31a2fadec7523,41143ce195b170fc23ed53d7ae8ca61f397cdbb72f261750a7bd26cff56212ac7bb1b18d002493f418185acc703df4417f44b93f4a7684d3d68f8f042a73c3841b6b5fa0079163d4881c39bcecaa548a50237e3f8df20f986552978ada9c4eb2e57062db8d91564ba4eb96503b932b5fbe3d88efabf452a03eece5b3e78492dc555ecc95714a1c5c1b201cb42e10852c9a5fe101ecd53fc6acd7e1d0d6efecf81ba76582e6e9cf80e70e52c0384ee05978a31234ddd1c2d501dec0bf1f26706f1c6af4a6dcfe1e7245d7bfbb96da619ef27b4cd67527bd6b5117e4e55297b9474a5bcd251f0f17b10f196cfa95ed3ce61458acc55cc2ba83904796aadd71e978d4615e6588954f7d48b1bc705b497e073dfe2abd5224792eca6c09d611c311c544bb332b2c9d144d24950f3a27857b9f9ad1db4dfb9aef65bce2c224ee9fe9785593cc9cc74d076bb5dc575b4ea65fa59a6dfce634ef83072cbbabc5aaa53aef5cb4d2c19a613d0054eda3954be7e649c2c38cfa9f7746941e2b77deb63e62a9ffec59d15329cd7d02fce7006406f3119cf579e1f6f0a1f4fc74c7031894d240b5bcc9a7306754af9b43df80005c7b62f885574ae9c44b90d5cfb93990cab41fc3e9962cd0f8047ca1aeb1399faafc6d6fccf66b2f02cfb9532899cce1aa8e822ee9498a67c3972407dfe98969f9df9ce328a4b9a1dae1651bafb32ae29bf666 +76eecf956a52649f877528146de33df249cd800e21830f65e90f0f25ca9d6540fde40603230eca6760f1139c7f268deba2060631eea92b1fff05f93fd5572fbe29579ecd48bc3a8d6c2eb4a6b26e38d6c5fbf2c08044aeea470a8f2f26,1b0d344de5a414960e67d684d301901d8e89c25ebdf7494db9a1ffed44e5d688207f4533cadd09fc8bd428fdc3592959e9095613bd808797bfef5130fbfcc1fc72b58d93bc4a291284115d5eb47911fbc0a4aa5875aa2b6ee1e1bcb296507183aa5399ae8192ec6ae579d9ad172f72f5a1957ba10b0fa4e9666fee9611b048730275a0f4d6d48f98d860939936c9b41d1af5d729b11c93085346d8769c141b81fed9f17fd85c0197380482483c5f45b3d8bea2c2e90eef2eb489b6986a891bc0f29ee7e2943355e4223c241427c49d7a897c956323ed10b074132449fb6371a9bffdab8d113282016af1f7e8e26807a0b0b4809bc035bae86f476f7ffe002bbe7e30b4c06b00e712f1d54e954d59af083da123034e73b9854b45e9bc2efbbb7282743dc5942bf372d94432379ebea4a656997088004a5c2aefd6a4ce6fe94c2a06c8a0446495df224269e310f1dc184dd37ece4ee46038369c031ff90ad3787331ab6bb1cbaab7a0194fba947fc6485b371a684e7e1ccf4e9f4d272158a36b559451e48095b3c09328dbb52c7659c7e163504587962d87a5e60bb3c4868cebc204238fa08b97af71de9abe7f409ad0d29455e1ce59433685efeaaeccbe01462b1760fe25bace44cfa6e1b5c28dca00790d96d2b6fae377ce4bac7ce64a97af68ee913c33107e4a62efd4cc752dadb23877b54795a43a7af8593e085480f9b43c +7adc0b6693e61c269f278e6944a5a2d8300981e40022f839ac644387bfac9086650085c2cdc585fea47b9d2e52d65a2b29a7dc370401ef5d60dd0d21f9e2b90fae919319b14b8c5565b0423cefb827d5f1203302a9d01523498a4db10374,69271e30637ce53639a9a80582f8e9d91e0a19af1c25a4e316a4acbfc4534d7b6db55bbdea37f2526e5ca0407d0a39d06e2afb6538c125b3390a860e033378440419ff91634bca42eec9ad80e55e65d43147358146038c9baebab808c1a9b2d796bf22baaa54d92298212e7101e56d1a0a229cbcf9e08791c6bd464eb997164502445c2993b1d2a6ac4242d1f4108c2ae4dbf48fc403fb8f353c5ca3edc09c5d4993048962d1ddb474928bfee27df6af8beaeb264edd09db4950ac5e12561751bd3abc41c9a81f6c5c339aa9f7266cb4a28ee26f29571a7f4c9b350974beb0aaad642d9934e9eff77ed136bf825a845041b9c01f0559bb1987fd6fc951322e4a4b4ee50c7a7cc43324391603d689bd19ada54982e03a2bd12610a09bd076c0c3f6d6e0ca348110d8dc5daa5c842198ac5ec92a79099adea1fda0df0b35e8871373b312d61554391dbc9e1c5f9007c9d3799c24dc4a0894e175706df7d04eb2d69d90bab57117e04b681fb24945f3ba3dd7f1912171556464500d4fbb9084008a79eac50d8bf59163afba8e0f1e5f82e15255398f62890c9521a0571813210fccb582818a6d1747a31822db55c4b6bf15a19076b7d6349873c88e86bd87d08e0058a212780c86915ca559e581ec3dc7d5bfab9c5403661f09484f908dfb2d98b65f8543fb3f102c2c5d0b89b15e565e9b04e07f7141e35102bdb056801100b160 +e1fffa9826cce8b86bccefb8794e48c46cdf372013f782eced1e378269b7be2b7bf51374092261ae120e822be685f2e7a83664bcfbe38fe8633f24e633ffe1988e1bc5acf59a587079a57a910bda60060e85b5f5b6f776f0529639d9cce4bd,2730675f5f4db76d342eae88cf856b370982277e24a1f95e071eb0c28d6655d9517cba67dde32ba6a4a322d37ad4a4eef90a60e2fe3a568417be75432f57964bb1dd7a5a165c24f38f4085cc4551c35bd0e2663198df04ee86803d75ee5ecbb14d7ba616693432b0ffc83f27e82016d7e3436c2384d1a7ab87e4ce758a5a83a4fd63831d6f88e4e80d1cd257ed4b418fe1bb498004d1ce8cdacede429a53f06eb77d0a6ab47beeaee12febeb07d434e26a71957e55f4f3284ba0f8157de3f1c8e0e4874db4e65e5243982bfd57a9e70d18be390834a9c3791e6ab6341739a963a946e1da81a4d9b3722bac231191eaa013e424c2b965967ae986d50426d9830e92499e0808fd6ea92a8a1054f93a0f84c11bf417de01a7b0ba5890172bcaabb3d2cc23853822960e666558b2b4695f38a22b576757c0a1a84437e7b627989a4053b14954eca09df2221d6c6e88654eea2a741df3bbd6ef2a8c463d797222e72de8e44c8c6f2feb44e3d2310ecbb139aaf3fe2c4b2bc9d7142c0291bf9fc9771178a484417202dc721876800e010e53f1972e3630b5dce0216351e687552af2faba699a4e3e0c5385d80dc367fd0d07258dd59a6ba5d2e0ffae60a5e0c48243794913cacdfc14d20001cd9a097a9cc57d313006e0b8945ade9791812b63e98a291cb009e899dfcc7bdf9f58f3866f6c33ae77718081a517720c34daeefa527641 +69f9abba65592ee01db4dce52dbab90b08fc04193602792ee4daa263033d59081587b09bbe49d0b49c9825d22840b2ff5d9c5155f975f8f2c2e7a90c75d2e4a8040fe39f63bbafb403d9e28cc3b86e04e394a9c9e8065bd3c85fa9f0c7891600,df6fd8f4e768031b0ce25c199f02ec29053ea8200b7eb306e802c8df23cb213cfa06c37630a3b14570968948c5269a6770622527c87d432098f0cbccb733a5d28b035cada562bd0fcc032d2f45db8d2c948fb341ac2b0c5c699c62bab551553099e8a21518aff800c8ed42b44de7c30f29e691c1435ce72cb67060307d1b1c38192fe198ad3d20e9e12a8c9529f8a134a0ccac8de552af3fc05d48fe2e3ed1de5adfa0b7c324320e262232a14d3a7163a04980cfbf087bec24e356dfd8ae4de9b0620bffd1ff904e58b3908522ac13d1d541f662d95008b1f8c52da67829b7cd208bc9b8a3b6927e575bfbf7e29f1cad832d9d01ed41e5512ace419b92f71fa0cf5f79e33016d5e19eeff561c94827584623118ea367d768bc24927c92fc19999feff28e3a09d2f266b28433cdcd515895711fc081f8b1d143323b680e8b7469eb0fdd467143c292c8d822cc16111e9ab2a0c9ead40b2867303686ff4b9bb4dec4c8b552e3796cd91443af8c4542897769eadeaea39a366e91d65e92f06cd6554a1f6ca905996f5f62cfd559d1b300d912e6ff91668534880e6a8c414fad3c107a180be3e0bbf4f33cda343032d01c98c6320f6de582dab7b15fdd6e75ac3ac7fd079b191233d872ab351ae1a56f0a4cca8d0215ca1fd5f9c45ee171f4bc72d18e78ed6d9d651e40aa77522f6e3451995fbc3207fc0f30d1b39ee836f9371a36 +38a10a352ca5aedfa8e19c64787d8e9c3a75dbf3b8674bfab29b5dbfc15a63d10fae66cd1a6e6d2452d557967eaad89a4c98449787b0b3164ca5b717a93f24eb0b506ceb70cbbcb8d72b2a72993f909aad92f044e0b5a2c9ac9cb16a0ca2f81f49,3c891240ed9f62f45658b5c1d3e4d77975e45cfb10c45513927ea9d911b3e41414dc0eea38c8a6868a9e0af20f96bac833c1daf71d0bfeabf41b8c26c011495f8dec94d72acb5c5c9abb1c372f8b779be741c860e722a0f85caac3d21c6c9ebe61c6489ff5581adf5650b6416e0e88a889ca60cc641052d601d491057bef36b4dc3b5b76baf0de4e7248a40d9be6d55a7e8c26663828d08495db33f94acc7e7e49a7a61f352816d8c4c0e23f36540418ae6dc009fab33c945c6e48ed60bc466478788002220da9a5560425a6162aa03afd5700cebfae439d20a85f2cb826cc8814940f2cf25e34754d8df03de448fd1d1ab38bbc2b1577bb1bc39da7b91b7e63f78c5f43a875c427bb110e0d5ff07e004ac9d810d333300a2778a06369b7cd684ac86aebc97d7b9c09442c35e66925bb0e4c04c5b3d11267f0f3812a5bee8e18653d98b6b586d5735d4d3c92e3b76db5be509ab32060e954d97fc8b6a428509ea98e4f8210f42db3229e07e1eeda684b47911556a8c34fb0dcc0998a781fbca574fa891c24b35251c9d0d8429763468cbf0214b2d1ec94ab3fae82e57c748122531c615bdbd4cda56abf319d6eaff738bda7683ba4cdd78737941dcac4fc45e379bd6512eab6d14c4f3d5748a3cf45713792d314f81f1d1f5aced67a0a9aa026433f320530632e5f72122b63acf01f2bccda9bd4fc579e6ddc1371dfcbf7347b +6d8c6e449bc13634f115749c248c17cd148b72157a2c37bf8969ea83b4d6ba8c0ee2711c28ee11495f43049596520ce436004b026b6c1f7292b9c436b055cbb72d530d860d1276a1502a5140e3c3f54a93663e4d20edec32d284e25564f624955b52,201561b1d68f1afb93098777b7d95e56b790194f45057b3b50f08ea89436e54bac9a5e945bd1cbb51acfbb0d61e539d1b3e896a1bc1426c1fa408b5d16d706457c35e3d67377ab2817127a852da463fe06d2efdd25016521f19b8d5e54014a54e297014230c81c917a983fe4429b47f6a460fcc4aa5a4e1e322cf74a9dafd30d313d2c0f9ebd1a8468a300f12e6cdc0e971bb7bff172593c7db286f467899b9a23ed3e222bd6124cb9c4fe2afac157cf81ff098f021b95f1069d7609963621c368afd3eeaf84a17f1469aeeddaec2db5bfffbcc39a73aa2a62578775100a92ad74ddce3a0dcb27a740a6e7c0f4c3e36e4ae55b04f04cb7d9527176bcd94df3b884fd4cc2ead608caa016eda2e2232d0af888a3add12cde0d8488650ec6047199842056744b77fa806bbbb96a47ed253192d46b47d828eedb9dc0cb38d576735e870826f829d76f58ca7f3a80fcaea1cac1bc38a6339c307f23dc25e3231094211fc867b0f0bd9d1584fbff5a52ec3b5624dc814208e484b5d069b78a577eccc017fedbbd139c13b50b395ad16cc551430229b56b4d75a14588a765728774cc234d1dc46f0e64e7845cf237330c3d2422cdef5cb1d741741da30f39d99035d7f7c49d6a3149d02dd061f85323d6e0054db7395ab8fc496418b7770355b854fd36fc1de72cef330976c2fa6fc73469b71b80f5d9b5cad008c38746a54578c3d195 +6efcbcaf451c129dbe00b9cef0c3749d3ee9d41c7bd500ade40cdc65dedbbbadb885a5b14b32a0c0d087825201e303288a733842fa7e599c0c514e078f05c821c7a4498b01c40032e9f1872a1c925fa17ce253e8935e4c3c71282242cb716b2089ccc1,42a5915cc1dbac56ff74825db482afb8752991edd5b8f5d040fe45b30161c75178d5d56f8a6fe9b11a71e19d0ee241a656171ebd9501aa4b5f2cf0344fbd23ea5035d9a2c42fcfacb5f13d9212805f353932169a0628d015644ed450e8f8717a1901d5a21fd9f8360054946a29ca31debe683956fcc9f862bb5ab04f07ab11f751fc8d7cdb0fa9c616df691794c6d26cc1a18a45847fea76017d57d9bd6bfd1e5cea4c92604acc860252dd0f53886c48d0187054bdfe1939a2e6d5c570a82c300a6553bee5e107ee319435f0ad18b92552ed9b4fffd472cc482df76b6daae5432d17c2475444bb76cd79313cd14620c1d2b3487d91c25a47ade446e1defa7c6d2c2eca3163106f10eda5779ea6c21f8d778c29ca3601fe5f456b74dd08c7ecde8ff599b26540624bab26314453247a9456124f680e68cb91b8247e0e5a06cd366e46055f31712dcba81b590fba34c8e619c8f3efd39d2b69ccc6c3d184fd058a9bed65148ce65680f31715373526c509eff8ddf378a0127e1482809ca13a834fb3a1b00231f6b69a8523f72ef580150a4805981f9b1a7488ac880bc4018105545707b85f24569e4f864c30e66e750ae2065bfceaa2db440250568c6909590afac5c1df88d3e6f02d2b4d609460a6bf76ff7994eb5f64b00831c849f7851a3e743daed38668fd1548b333a01568140b1dcaa00e180429ec6bfef620b06c98ddad +433c5303131624c0021d868a30825475e8d0bd3052a022180398f4ca4423b98214b6beaac21c8807a2c33f8c93bd42b092cc1b06cedf3224d5ed1ec29784444f22e08a55aa58542b524b02cd3d5d5f6907afe71c5d7462224a3f9d9e53e7e0846dcbb4ce,bda93eafdedde22b029f4618b2135e9f7afa583c8bafc3b62cc667c4704cbcdd4ac6620361a0690ab8e857335c150c2d70fac2c2f2d60d6472ae760c082775d54c8eec450421d536b1a94a5da5d803d951709a7f5bffe63454306d7b229ccd3a89dbf9436c9c91c01a1d0964d86de868b4feae6e3b88592a85e2bdc82cd5c52968c85f429b08a2e61e1faac0945606ec462ea7b2af859609eaae3025e43b4489f7b1274922fa72619b9eade2f6c04d5863b03ef76189a81b9bed9a47bcc53501e96c2367067012036d07b95ac0604fb0e6a793881cd81d9577bf495ff769b72dc8b0d554ce70fed81fd3aed5426525241924423a4b11391d3ab16c02577ade31301960a579833c3ff5f9dc0ec068c3c92234b9de3051b58330ad87d0bb6f704b210e1c5a167684025af9791757cb0da0517e4a271c89aeeeebe529609529b69e9a53c1631ab89afa3d0fdc582e923e5f2293903b75a4c321117bbecf2e114be505de8cac608c1deac6fa33c658d72454fc5c3784989803a839d565da08436e700f3bc8df99bd3465cb4c1e8886fb20354e132a629fc964b10714f006978121e9737d70a77dc73ff77830e2dfb3adbaabc83657d8700206af318714867a1ba3bdcb8354b91f4f1a8b09bf54805ba01bc303e5f9887210584913c5130b643f15ab603adca3d918c3d5f15e97ec27fda51e4e6cb73402afad08678217e46b0e2283 +a873e0c67ca639026b6683008f7aa6324d4979550e9bce064ca1e1fb97a30b147a24f3f666c0a72d71348ede701cf2d17e2253c34d1ec3b647dbcef2f879f4eb881c4830b791378c901eb725ea5c172316c6d606e0af7df4df7f76e490cd30b2badf45685f,e4d90a392bab78dd363c8747c586035358f051ee8909762c3d9ab4b2f1b7eb50b4738423c4a5087a5b12a9deefe186d0086f4dd0f9131acce891e43d131627316ae63c4e7d1250d809e78f94d276ef45c3c8ef4a37ac5910f1dd5f95989c938c98c55771b6de1ae68f3a9015c1fbf2447f3f72c15847eb55e0296b711881e0c8518995bd7f75c3aa9c1193f3f7b47b9c133af09cf53e1f55c17cd96318c821db4a6c7e79dd718684cd83d43e3eaad165fe26fa204b797c59f33589e92c43e7e799e5a857acee310e66f1c99a2406cf4d2690daec060cc7e3019cc4a842881657e58818ba193e4c8b8113ea7b3ba930abd58a7965f4a176cd5ea1447b41747694fb36775fa90999d1898949f8cb5943013a9cbe7654fc5d7bd7c915c1d251a22d6d8f7671d77417459366581c5587065c55aaeaeac19488876ed0d5e5f2f3f0a07006500d03ef8cc151ab6b46d587dff8930ac8edc3845bd2596387a56825a0036e1fefe70e2a53a4c19b5e45af6ad1c463042eee139b244a7751daacd4ca7c5ca075d2b639fb6aee355ddd4fec35f13c74e822e5f2c23a52eb2c2e209b62106195bdb80f19ef1636ca813e2fdd96425c971b6d0ed6b468a5e8f462d521e41586d7c848fe3103559d65b388a0d0f84ff6c4a48318ba3860ce5f2c419696931cd89f41733bab732fcf8551b4ed28a3fd2f1dd14d2bd570048fabd6026c984ecbc8 +006917b64f9dcdf1d2d87c8a6173b64f6587168e80faa80f82d84f60301e561e312d9fbce62f39a6fb476e01e925f26bcc91de621449be6504c504830aae394096c8fc7694651051365d4ee9070101ec9b68086f2ea8f8ab7b811ea8ad934d5c9b62c60a4771,ab362a6667c3143e58db5d5e18294445643f1fb212faafcea656b4c9c9da509609e7b99ab0bc1c7f782cc8bdd2c2c49a0299109f842442a6433d9515badcb9e961c0eaa0cd90906c2970171ef25193cd49ffbe6609bc0f5702cc3ff1caa859b50e59ed6407d9da7ad2d44ea36bcf8b3f48aab75c1eaf0c2a8a41e33135358eaed3c5005cdf6114d35e4ea2b14e2f8ee6b995ca73fd75e281c3a145309c620b66718e058e171740649dbf4786e8b83c19a5cd0fe67b68e3fe2509662d968f4212224b466d04e4878c70b47409e5fb56ff2a5f324a96e799ccfc6613b28df7787a6d9670569687d8345ff1f187deb2a909c66f5b890cbcdfe18594dd52328f5e1d3b15f6398f9c3b880af4d314b1924cf2fc30f96b45869e40e4a147d94a4bd92e3cbf64ccca69b3476477b79b571fc5f911529e151c3dd2faea561e9fddf7de4c93e5ce3bf3b90d25642ef62740eeafa53cb4356cd598e9cf40339cd8166fe3cbefc35b5990e642d5e2578d893c0a46505af49280d544ce6865733c1ab75bbf194a4b6ab0447ee0f33fdbe80a41e860d80026a2d0c3fc2274c9a1be2c07c57482b3e3982ce5495bfa0f9b5a10d2bc46f5dc78e78168b552ce4d6fc9effc0faa5cba0cfb66ae078e6dc8db2459c127f970b379e87a267c3a0a5e1672b5a16c93e8e239c9c3e51a96ec777361d0583010d4a0773921dc48b63ba3155da483c03d5c +f13c972c52cb3cc4a4df28c97f2df11ce089b815466be88863243eb318c2adb1a417cb1041308598541720197b9b1cb5ba2318bd5574d1df2174af14884149ba9b2f446d609df240ce335599957b8ec80876d9a085ae084907bc5961b20bf5f6ca58d5dab38adb,d5d2074e7d45403d43d0fce78c3ab81e2bd601a0337b163ab2e2e11cc4f0e73bc0e41adeaecb5ce2b0422ee97ddd18869bcfdf9b4cfa9cdff5ddfde53b05d65b5ed250911b83be8b9e58655685a8d33c72826a1ebc1f244a433a9440b24dcfc691d9a78f32379bd8bbdf4f8e2f8eda7ca1cf74fc4e8c3c07349de823980d9ec8229a3c43bea5feb0bb8f25610127ed1fa1741f90cf25dfe73315d440088c3523d9d5be12431eb81e23ef5f5e9cb1571f08dd24a7eb421caa74c374f7ccdcddeb4ed57297222210fa4930888c9aaef06e36c78c43bf9196848cb07e1d941c719cbfb6af8a5014eda9df9b205dc905b28ef6f29e2c29cf457317e01bb34acd8e34c67f468cf41729bee3532833d147ce4e5618855f28936d3a4eb6e0382049614a5de0b05b317240a6e091cef8a26c7e13280e02d19a6635033633efb03fcd57ae2678c639b262f016647c61ce5ded0151951c7eb1fa1e3bbd1808210a3d22aba98835a686df3612ae6536d2180de2db5103e4be1b2d74a8482450bf1b9f4fa91861505f5739f64d7c8cb8c5a3a2f864161f9b495445a1f668eb9a86e0c25d1bd0c50fa6431c4d4beed9f53b6e918008b3dcef98b484161a8dac12c642df9278601ccd80f789b770f05e8359495ddef5d6fe54086827ffa8e7b2bdf03a33397ca2898214de5a36d18ac33ee1cc0ee0fc4416a86815c7b98ea08c63d23ceea1977d +e35780eb9799ad4c77535d4ddb683cf33ef367715327cf4c4a58ed9cbdcdd486f669f80189d549a9364fa82a51a52654ec721bb3aab95dceb4a86a6afa93826db923517e928f33e3fba850d45660ef83b9876accafa2a9987a254b137c6e140a21691e1069413848,8a80e00c325a49d17acbb96fd41e874eaf00a0d141cb59dd1363365db060f20c1015929e88e0ba0589fb35ca348b3f02cb256cd5fafc7b1d1a7445c238167f325a2611f7c5e2b7ed44395938a5ce501d6cf78c9b9560d8f84210eca3ac12ed40954ea0c8ef362de08cf11fcf47c34a3d56f271453bd62f74578f06b1c3958be6d87331d8128070c244900b6dde1423b2561504156fbc045755e1b591234960e1a44fa54cacb1795ad8eeaad38faaac0a4eb846a18b42a526018eac0a5041dd1200c4169124590acf93f2f26db5d173608fb0b6c3c83f5c0b01349c558ed0e5851c9de615ceb684a3c9c663119444008da4a12e9386c98e15cf23cfeeb2f8632ebf15381d17268a5f92fd15d464d9e1f6ef896828420c9367b14c2b7e886f42c439801e0f119d1086f2a99b5e402e786b8c5a3b7902d2274ff1b5cb706ae0b5da9ce63ea943b8ad8743c0af4cacfa6ec9a2bfb45ef680385568aacc518755b7a2c4ed40f276e25be1447f1131d064a5c54f3bdb80d4e6e1338108251b8294cbe4d3f182f3f462b3983abb7f25b4d9ac8a3e2f3cca397148ebcc154de7dba5a4820c677faddcb502b6a67af0dc0602cde5ba983c7be0235c8bedf1916f51433d80ad87b4815c6c397a9906b2d075bfc0f72431da10f04aae61545a62364f336754248606ab062799988e6b0d71c2dbf907e211c963a3823332d6abf4450d311080 +64ec021c9585e01ffe6d31bb50d44c79b6993d72678163db474947a053674619d158016adb243f5c8d50aa92f50ab36e579ff2dabb780a2b529370daa299207cfbcdd3a9a25006d19c4f1fe33e4b1eaec315d8c6ee1e730623fd1941875b924eb57d6d0c2edc4e78d6,b645903f62e2a0394b7d98a526ce6c1725a03f4b35cab927ad4fc2831f460ca6eb0959bdc5d90bb37e1d0e3ddc6cbdbb8f61d921b7cc496d903a92166bab4a436bbe6e9230dd0f91a6ed791889b67727338ea636f54affe59d52cad1b0d26aba8a29c92874b5d6276369fc45769a3323c9788a7ab268081689614622bed3dfa207a0382680219d24b2854eef3024a34de3fd4acc827d52ff2f1a4b40f1e957729609f8d3afef23a94d9e3efbfa3e66bc1ed44c426d27ed4fda0b4bbbac6050dc71d064de236dd800d0e24188ea0b1899ab6d0ac16986034bb1c8a21c7ad7f069e706730450f046d5f9b3c066c6cbf98c5151e5b45d6b0f3ecef0377aee19d83941cad4484ad07338e7da24439ee38875498207cfd01349a3cb8bcab058c70b48827c22278667026acce65a8f643bda30a3a6febb5eb7b981963cf07f6fdf20aed8769c8ec35425c4366eeea26ab28bf43e7fdc8b4f762a2cac06d10e1a8c6ee35bda64c6f71cc02675ea4cd20b112b6e12d45df6d37d83f04ce55dadb9f54c8a68e2c76ac55aafb1a3231c277ae27bf2742d08ffedf08df3f098c5c60b59d2a89d2af150b3fc73e399ef94b5002dc0ad1097767f47ba07f442d4df4a4d72e5aeca7b2a37899f50fa3cded91474da106fcc96b28d8418ea340bc983344bb58f244ed6755ac342b9e6b00cb19f9afeeb3135e0374ce803cda44e316eaa0b6e1e93 +5954bab512cf327d66b5d9f296180080402624ad7628506b555eea8382562324cf452fba4a2130de3e165d11831a270d9cb97ce8c2d32a96f50d71600bb4ca268cf98e90d6496b0a6619a5a8c63db6d8a0634dfc6c7ec8ea9c006b6c456f1b20cd19e781af20454ac880,b15d1dcc49b25b2ecd567e1d0f46732cad3f9559efcfbbd1793da46a5d9bcfad723e504b12b7c1b65eafb9647dc35a484485344b9dec5c378dde04227f7224cfe6f06a962f380ae104146dbc2425fee1d7ae7305e2d2c4e2f91d9188bc88799b730abf3647a4365562acda20cbcc7dfdc5c6dea8dddb20443b9253466e4e215360f4066d918d938fdd204ca826e4a3358d169fb34410d45f8e783e7fcbf97a9cf0168e8ee6402c8b627de5bc4dffd8ae2c8807f863d10edd57503a99a46035173a20dc10df3e6bda62b518e58e94e5624659890f1174b3b7d798206691d3ffa6924948293821616184e160f237c1241f11779cdeb4fdd858b73f3df45f05f43bc81e0ead584999da04f71ea4914f8d8ae17de086cdf69c31fccb48b528781fbf8dcfc710ac421d28e93ea95db4a6d38c1d47c800fcb3f816e36c86d6b3e5d6bb31c325c7a0dca4d395867f436f077c6711bb96dcba9a6dec6318fb9bab829ae40bf70c55146b87d9fad9a839cef462249bdc49b8022926e3c664d6659523123a6ee980b69bea87437322da1dd6235a74163968c0994ac0c21156476d83f2b8697a1b510795d936dbfc2cfe67ed401ce708c7531f1b4de75e8506db082fd9b3b24673938242fff4f30be97cad8ecd2f88bb5f497a8f154465921c9469b70fba1f45d76c9a40228a93d67836cb7cfe2f25a5f56c216084521484a7224a7a976323 +03d9f92b2c565709a568724a0aff90f8f347f43b02338f94a03ed32e6f33666ff5802da4c81bdce0d0e86c04afd4edc2fc8b4141c2975b6f07639b1994c973d9a9afce3d9d365862003498513bfa166d2629e314d97441667b007414e739d7febf0fe3c32c17aa188a8683,7af1cd3572930b440f871cc3388678a1c612d6a590cd2b8692e0b96010ab4e122cf856925dc84aa0a87c7fb1661c5c74b0811488d3d486014e81b0d29b73450a0670a6f8223df95b542590b3f6506cc18949fb6593f1a552e064b4e1576ad7a7cf202e0b8f90eaf90147d44ef16031d390940da5d74c35a269b4adf4a663584292007da777b04c15c03f7635bef56c1ca807d1cb3a8dae8218821c44c7e6275cbf64d82453f764b458aceb881816234494f717f5240cfaddb3f11c1af02b269f0f76b9dbc8ed643fb3b7c9f8a540a453c1ec85abf9e8417b1e4de9dc65181ee32802abd6170a581aa2dd01188752c73d406461892d0d0909c5d3fe0ecbca3d28f65b905a2dff142e61cb088f9086d3c492e73c0eff3afbc37216ee98533b236406d80797933e54d3c21ae6b1b81f459ffd7b8bd1eb872fd62cc0b95f5384668a1bf91a474bfb97335dbd8c4761f3bb936e2032365256b534f98e9f4b3c50b4034478efa268e9ed9eb9864044e90dcedf4a2ecb9e8617c4e4abe7cb499051143c30bf73d397836e422a2ccd222a299603a3e4eaea9bd2c3d64a0ecb3cc7c0bc3d867c79231bbbc8c2ed4212edc8b25c04c57e9a3ee8c103aee4ad6af025016c1a177288f4a17fe20a2e210b24a7aab63d3fb4e687ed3ba2bc163f17c9067d07c18204d0af96a41cdf5be9c6b89502d7cf1283e82410b11537cc931443076d60cd +f31e8b4f9e0621d531d22a380be5d9abd56faec53cbd39b1fab230ea67184440e5b1d15457bd25f56204fa917fa48e669016cb48c1ffc1e1e45274b3b47379e00a43843cf8601a5551411ec12503e5aac43d8676a1b2297ec7a0800dbfee04292e937f21c005f17411473041,6b1b8aac47f782208f50af3f977eaf8f2d69fc02390ee17bf1761ecb73d1088d236a5345380b6297ad1fdcd5117d16a3c410aeea092d9892ae95c7b977930655c75cf7834c101f69d2e33a1a17a489e040c5db3f83a5216ed5778d391630d17405ee0a96fd7b834448fe0bc61cec5014a6af9b0f85827832e7469869b0872497033822d3419d43379aeb6c31406afd1199abaecf3ac8e2546b9736f8c4e399c8698b674df5cf6be81c73e52dca979d3281200b9df8d99bb6c65a7b6f620e1e4e6538a918c99cde6cb33150f0896bb75421b8265aabc241c02d93e63476c351396e5b86dc66a05c74ae2ec87ea1d175d15a12adf18f9792970de3b9e30890d8896309815d57ae238895aa7e76dd6a46019f005f193c737b452d32649a8f39b1ed00ab8961a6eb04f699ea62357b7a38c423ba9d421529266459ef292b324a16062538e8c6550f822c2c140816340f907d5d10b563198bb1539b82e5bede700f7fab66eb8da045b23035decd3f8df11df98a297a49f5b896a3536bb5a3e17a9da1b266ee18ff6d4a6e59af619306bf30316fdccb7fbf5800916c18832f4cd21659774411f105ded35de8b0d4b0b54755440e26230e519b66319696e6abd180ff5314ee184d3b2781f338fdd3e3935855f4c8b4021154eafe67497599d0ae393a516673a970cfb9b7058826d7f0fc29f3ed34ed31f45790a63e5ac7918a4c3cb494 +758ea3fea738973db0b8be7e599bbef4519373d6e6dcd7195ea885fc991d896762992759c2a09002912fb08e0cb5b76f49162aeb8cf87b172cf3ad190253df612f77b1f0c532e3b5fc99c2d31f8f65011695a087a35ee4eee5e334c369d8ee5d29f695815d866da99df3f79403,f76b436c25e0bf2d75a0df0152d04117ed8dc0ae55b13a2cf839e41a90c6070415eb8ef70a90bf205b0bb330435abb41bb3329d015e9e56e86418bd671d0375e3af8056eb882ae4191f82e062339d5505526ab42bf6cd54f0d36251a78ef274cbc797b89672ca224cb9b94e36648b362338d4981821b0b388e08ce97253b5e8c776e9b3aea33dfc3815b5929a3800bb83543d42e0f331c264b1855ad3c002bd80d035932268dfe4cd6600f2b1f215f1670d7a4512e89c3d1509271abb42e2608d7b4a900e00593e0509f7c882ab0008aa83f5879f30d95a319a4058987804e5014212d415ba0e1c2407b9aa7b80945cf460e60609ac885bd7d639c9bcc961d6c32a96f041528b64747b5ab9557971eada1ebeac47f78b3992eef2bf2806213952489934e7f5410602ed0987d8470af3728a7f5ba326b77835694e32675e463c604c18db4e4f5e1abd05668966b8d102172e232b4eaedb3c73e7a406c36ddc641469350d593336e9e5c8ba3c246154bd3cac8e14cd60c9ea724ff059c931b778b00a3c6e1016c1c41b3002f01d937499518a969d02ad08b5ab385a60cf5d018ef405df9caa63bc49015407b04aebbe02f206dab67e72388022d99d5ba4f6d57695186873276770452d602635aebbc988b7718f6ee99f9f05a6028e074bce86fc134aba4cb82e1529acc2e50e53f466b9b38fd3fc7181163d9a3b58f143aab6297 +47c6e0c2b74948465921868804f0f7bd50dd323583dc784f998a93cd1ca4c6ef84d41dc81c2c40f34b5bee6a93867b3bdba0052c5f59e6f3657918c382e771d33109122cc8bb0e1e53c4e3d13b43ce44970f5e0c079d2ad7d7a3549cd75760c21bb15b447589e86e8d76b1e9ced2,c870ccf74f9a979827e1d0ff8e1dac93a2e0f10a0ba7a4de041853915db7d86c65010db41421201025d3465ff1267ea5dfc8e90cdb4d933fa58f5a5e830c646a74e5bf807495d973929cd2d4763a0615902b8df2d04a9d2553bca94696db2a332ec56b5612de10cbd2e117ab226769a0f5e12e380e890489c4cee3156b4cf1d4fa2fe55e20db06d84dbb0f9833a3364f64481567c74049517db8d75f6607467efed0d8976adc7c7f265371a552767bf6ddf87f88dd1bd326c46cc7c9a895d1d88d4452a1d72e7adbff6c02c5114ed5799c4e75944294bff16dc782d529341bd289da6136e0a4223f27e886d8ad057446e6bd41ab8efd676b5084084a313e0bba30c1dbc3c461afd8b5c0ee02aa0d1bfd0a1ace35369f78d5531286fb268f94d4ef50ba6a502c2eb2b744651b71b59974202a8088780cdebcaf18ab8ca8e5ae928309efdb5d5a639d7c83bef87e5aab4d403f7a9d22edd1cbcd409b822f33225f05ae21c2bbe9e7a0b116b502da93d6547e3931763f4fbe1507dc031cbafdb08f4492396d4d32fdf8936d0bd082d45e70b3cdf8b807d974a70bf17fc54a4a034bcd7f5dda8c1002b92a641da7e717d8c742b7f22fab4918b1b3929c2cf7533666121184383746fc5fbb06e2796eee83e6387dc610717fe4c7ff316d87367f6236e36524cf525691d656f77732b4989d87fbadcc67886e151f7a61fc9141af81b4 +f690a132ab46b28edfa6479283d6444e371c6459108afd9c35dbd235e0b6b6ff4c4ea58e7554bd002460433b2164ca51e868f7947d7d7a0d792e4abf0be5f450853cc40d85485b2b8857ea31b5ea6e4ccfa2f3a7ef3380066d7d8979fdac618aad3d7e886dea4f005ae4ad05e5065f,7aa373d1ad451f79a4b17bc9d3e2ec4d43457c6251e958e44f8d5ef360eb256ce5ed5082b938095df2ec30deac299eea5268946cc240ae0cfc0b8565235a77bed4b58560f111fa5630996ad51065a6a957979344c26c0fbc9843251b64c899aba1dbe5124a21a604e706a50478db8e93f239cd11d53b2f168a946e979aef98d6a3ceae032713c241b8176f1f32a7f132ecece3fc57309f6f0dc9876b9327c4c03c42a74ec216e0dbe026dd167ee94fe8b0032f9ba033ed3e6bef8dcddcb288ce5f8d1b4dbc01a5bf51fd725206283c7028d8013a170f0dc4ab107a442c95b0214a71d3bd7a27cc48cabe6bde4a5aa4698f56258e175ba1c6f7be6d7ee60cb5bc4926cec0d94a422554fecd2d7666462e125fa3c2fb84e98f2095b119ac492ef8eb3666a3bbe51a6e4ce3cfd1375a21d1570be8a1cd22009e8261b3cd6f2e2085443a6aa76c91a349a7c49cf5f477fc017ad18439c580dbafc94e96739732ddadf4829f9da5fcfb6851afa968e208d4090ad99f61f9657ee958698fdd1dd5ef21543d238d05c4c604e26d21dccc8c878344ea888f127372218a4511b803e3e6ea03cddb2574e636eb40ca242fb31698290eb9c017d326a35d884a88c98b89c33e8656b717dd734223ee76b5eb147af7521bf1f827827b37a6563e601afdc3796d8da4d1084fa462cd4af969a800f522375e2c754bf20104f13a95ff2dada5674f +58d6a99bc6458824b256916770a8417040721cccfd4b79eacd8b65a3767ce5ba7e74104c985ac56b8cc9aebd16febd4cda5adb130b0ff2329cc8d611eb14dac268a2f9e633c99de33997fea41c52a7c5e1317d5b5daed35eba7d5a60e45d1fa7eaabc35f5c2b0a0f2379231953322c4e,a1d00913cc206be2d1c38c22b6c732a05368c8aab30865be5343be3c73aa6b7e8aff69a544257db1e6b6677e6ccdb6eb358a0ed096bc9fff0dbf89b1e5345037864132fa7b820ddddd5a88b953ce834f1aa89bf56fbb02670dfc9fa29892fffe61daba4195850ca669f6e4ae00687ae4af3a15b27a4e489a4aa01ae62e23fa012cfe38bb601b343095b5da20cc2b48352cb245c5306a2fa9f6cfb324b6debda6513221197b24eb1ec2564e2527491b539289eaf593912458d835e3f8f46e058cd6b3b85d0833de691a1e08cd6742e7b2957ddcd0e04858fd64987c66b6bafa7a082f32d515852e931a382792ab4ffe17b39d8918cff002cb01c0cb1e1fd32bb8b02df964752523e64df6c74b8442719c3d7dc75ce9dce5474ad6f235280cbd1f0268f19e695549016e948a7141ff4602330a096c67699b29ddbbb8f6600770cbd0e398b013932b04526a055b51d92f0ae8535a7e91936bf21ae70368e09005b14f3fd9e3635f35960d89e134e9b1447971b0d1cacf554845ae74cd93f73fafe94189bc22d1db9815a65b414dde694fd053aecce3bbc3ce7362f353a9434a49fabcdfd7e3cbe73ece064deca30e4be01b1135ff6303e45e8065ef415befefa948adf42dcef4520c2772c8e8438b60113919975ca0dcd2798bb026d4b59d3904fbca4998533aded822b15ccc86457e8507aaadc7e3ee221543472a87b730f4e5c2 +befab574396d7f8b6705e2d5b58b2c1c820bb24e3f4bae3e8fbcd36dbf734ee14e5d6ab972aedd3540235466e825850ee4c512ea9795abfd33f330d9fd7f79e62bbb63a6ea85de15beaeea6f8d204a28956059e2632d11861dfb0e65bc07ac8a159388d5c3277e227286f65ff5e5b5aec1,e28d36bd926b9e8c105fe0099cff1957ed7accb9618027421febf9ddd3129f4e6713376b3b7ee710430ef381cb12b831c80c7b1b93765f7693506733a75ac0e8fb5d3c30c6f4dc735c4c3599161ed02f4abb5cdb174e53d93d91e1321edfd79c0f63c92c7e5a253c1b8c4842f053ced0033405fae5f16e2dc30024a6b1663a86829abff72de6f2a91c1cfe5955cfb584f8c65b9334590c9c468a9b0fac172792aa152f7dedeaa4fa22fa7ba44131a1143f79053c7e2cb5aaf8adccb6ac72300892f792590bf5a1a9745fe5934c712ced382a316c487efe0e6f146c8a562e6b40834fe20c362e495fe9e5cc871edd2d61361492ee60cef26ed38b4da0480b4dfa66f5e71d44f10159016093841e02c34001800c5cdaad0f9cd2a3144911031139cd6c54443a1d82405921b86deb03e8f0c1ecd58f63b88944182f034bd07b0d021ebb7447f660e66bbc0a821c7852d183b806f0855ae194d80073280f3d07c2dc03571d5c6d0f0675afd58ecfb211ea27733e870a6e86ae5108d8c1c3524b99648541b61935746310fc6e99935e7c9a5d144e0735f2cc32b6dc42b34679052203a777aecf26d9461946699f834940bd34f8fcac7c22e29b2b0cecc60183c44a5a63078127c10c1c14112226520cebf9d47a7fbd4002ad482cde289e7dad3aa891bba0b6b2b2fa378d26d629b4ce428f375bae3fea5e5c6b048928ec92099f3c3e +8e58144fa9179d686478622ce450c748260c95d1ba43b8f9b59abeca8d93488da73463ef40198b4d16fb0b0707201347e0506ff19d01bea0f42b8af9e71a1f1bd168781069d4d338fdef00bf419fbb003031df671f4a37979564f69282de9c65407847dd0da505ab1641c02dea4f0d834986,e3e693b2585c32926882c97bea160d46ace5abf0fa47a9084fcfdb22de3c65f43717358c2c2ce680d6d132443d478478a304711be3c5795f3eb0a7bf043cae06e84443eb599dc259b3ce1f4184abf1e6794556e9f2aba99e5363dbc7e9c2c802976c87fdd7e0e3884b971ab33da6cafb65ccabd6ce492a59d359bc17d2216381ad838989de9fe82245ce07ccb1239fa5a3d664d5b8f2e3410c023066aa47e030fc73be5eba27d83d656106401bea73e36cc09f8a78bc0f4fd7c4b2b4e7d36f4e3cc31867d1ee207a7936fb3d5fcf512669af63b9f01e4188ed39b1142caf6578f788b53c3d6303c25c545dce3f0b037456e3e7870392f43051fb2e8fde663c80350f94f7a52d511a56cc268335d1ed24c9948c6e0426aedbe1e082c0f075863e3dc0269be5c83ace9a98af1ee45c79ba263aa81902e11f880205b7bbcdba54f766150e744bd1e2c97e64b4a50a179b940c01a7aefea23e22dc3443d655e31ffafa67fc555727c8d02c3fb3de7d6c13438f6323b89b7c975fc5b90d80be8efd41bbce90f636ca01ffbe3ab39aa0f43460f33dfa492718a411711e9e7d38eab956655314f35d36120237bea48eeedc549256090ddee8ab4bf2669131cfb590c65bbce018ceea3ce349a8cb83e3518ce8f353eb07f9007600c206c7f6b6b1da24f1a263f039773ef5f99fae6d9b2b3160199f17d49ad69d51bf66915451f43ecdf4 +b55c10eae0ec684c16d13463f29291bf26c82e2fa0422a99c71db4af14dd9c7f33eda52fd73d017cc0f2dbe734d831f0d820d06d5f89dacc485739144f8cfd4799223b1aff9031a105cb6a029ba71e6e5867d85a554991c38df3c9ef8c1e1e9a7630be61caabca69280c399c1fb7a12d12aefc,a178f3b574a841c88ef21b6a20a100625334f4fee5966ab2164686151ab9fed082ca4a9115a0b5f099c5dd4be4ef1082d533212bb862f084225655d8856e29f279418de6fb723ed15c341ce310b53e695c08689f776e4474fb6dbdb7da46a9a2dfb7bc374af86984e1e10ad9d48b744a5fa98a0b161738468e06ee4e836bb718befa381cabe18e9973ff07dce1920b19dd797f84cddc52dbd49b4a462fd1a12acd364804a290beab30af0376ca098d44e5d141d1636f6073569f2ce7213f6407ee376680e8d676942211a9efb756ef9dca40574aad2084fae0b617d727d7951c1321616f26569d96de5ada8ee101bcfd2c43c338f8957dec234e23f5a1a0f663ebecb98c35102de1c101b99e8f42bd8ee7c528b1651099545f7bc9bc315c8861fd7ebf26b97a519931a63e0b06a73b14cd2365383b44a2107fe1af0998f1574d9fa8818dc51d642240dbd0c104e89393b2c381944308d828720564763d3bfee221bfa99d976701717d4214cce2fc25763c1b25ef67286bb7e497593b1a077912e3af76993a4e20d4e8add7aef4f715e5f1c8bd68e8913d9d8057447f273fc41f70a0290a5ebfdce46209090032801f2cef44c8015e865d75759c7b2117c6e8eb6b57398b992b0e073c1fac374c819b7ae16c464ab5019a45e7a6ad57b75380ff42d35339f23436a0d58497f7a12e4c3eb34816c4aab9a2d3655079c12e05ea36 +2eeea693f585f4ed6f6f8865bbae47a6908aecd7c429e4bec4f0de1d0ca0183fa201a0cb14a529b7d7ac0e6ff6607a3243ee9fb11bcf3e2304fe75ffcddd6c5c2e2a4cd45f63c962d010645058d36571404a6d2b4f44755434d76998e83409c3205aa1615db44057db991231d2cb42624574f545,11c57a7af45809863e024835f2a86bcb81763412dbceb53f31153730fdfdc32a8adbe3a8bd6d4778ea33afc063d9767bc9e3afeea3c78ffaf5fa3023093c798f39111a182516218f0bc78c0307c75eb212b0edad184500261e00823f423d84bc2dad3ffc6c2ab675a24ccfdf0de5f669d1eaf91973071d50ec7d2c0cc4b6e42552199cac4b65938f7e704248cbff272c647e953fb9719fa8aa9c319fcc45e4fad0752e7416f9df0063f1a8bf43e316533c046c4f2e7254a02feeaebdcd4df19b01c18b8dfec1d291fd670ba6d434b41eb6068a365973082107abd6dfb62fd428b9b183e1fcfcb654a6c7a55b91e0615658529fa4f6178fa4f5cef329376169af143b137b9b81b273796cd26cfd8372ac3184600ebcb2dce06aa7f22c055a7b622717db8e15571acc61d94d8da250fb8e63549528cb53050322520925fe7fcd065bdef0ec79aa38f1f105348614a57605c94bcd50df80e692d1117c13ba3563afb44e91117c9f6e4e7fa35397dfc58fe7f2daadcdfc756edaf5bda38d6e1eb819a1080cf354f2ab779f63e2bcc763c8ac73c6d811ae2b5252e6fdec79e2e97d8971d1ef39e2a144e84ee8087c673aadf3c46c4e6c1d9832e68bcaff8c1e4df1a5454d3a677040413ba32bed431b2f7d3f356cb060431a7f5b1b6cfbd5709736a408ef6cef1b455ea74191f09feef230a1a0296807e8ab33403a9e3ea1650cd2af +dab11dc0b047db0420a585f56c42d93175562852428499f66a0db811fcdddab2f7cdffed1543e5fb72110b64686bc7b6887a538ad44c050f1e42631bc4ec8a9f2a047163d822a38989ee4aab01b4c1f161b062d873b1cfa388fd301514f62224157b9bef423c7783b7aac8d30d65cd1bba8d689c2d,8e03c6b48b4e91bf5364cf9311172442253b6ed58b95d147a4674bca639d75820ffe93509ab08fbe7eba70544a9331c3ba3347b0b44e0fe36f9b799963212514ab2e673133ea5d9cf3181ffac7f79475971369f7a0188f1a3687792258617c7521cf2ec979241d8e9345b9205243a1cda692418f8855ba61b57c75ce8a7b2d019880d2c56c61dc0e3caca0cd632e8819dcaff9336498e1d573c16269d2d56509beced579c80c3f09e4165081ea7910bb8d13f0373fa802f498af190ebf8d7565a93a771afcc8c417ea460e67f4aea898c73ecce5b17ebcf6eef8a6e31d160038604499b39965212588826d1f896915500497bf4f949e2ccc4c3439315e7aacc2904a77ac0113a2aefe64f6d625a7ef547e99fdcf9374300a1cc15373494bc1210b8dd5b5ce04b190a824566a9ae4a02dfc70ff8df3191528a91e97dad97057aafb0357ae7f509ff7e464675124d0d23399ab6db37b80397bcaae48b8520860b79efd72d955f53611e8d782a28c729f51d3174850e4fd61a4328709de8170d1bb7b5a811bc3e0fd06f20f03ce1567ccdc5891673cd8e659472015ee6a557d89b104e22e70315b40701b49c76ba0196f68a9255eef2623e531d73d151a7f321409bdd8183caaffc18c6dd63c1eba47f07b5b3d404c2203373ef356cd26d89dfd8f5ba2f700646507af3cf63db907f9f70ddcb125259f28275ce8f41b63d14058c3 +42e99a2f80aee0e001279a2434f731e01d34a44b1a8101726921c0590c30f3120eb83059f325e894a5ac959dca71ce2214799916424e859d27d789437b9d27240bf8c35adbafcecc322b48aa205b293962d858652abacbd588bcf6cbc388d0993bd622f96ed54614c25b6a9aa527589eaaffcf17ddf7,845e0dd7fcea5e19e5dbc6cd03d58c2bac4b81ce809ba7d0c75cb867da6ecdc9cebca177ab9c3273c8ead7b8c9f571d6d1d14ed0caf6ffaae4f1b7ebe653443e9bf099dd54ce3a021e0944bb1f8b34cb8cf199ed9b23ffc94e2fcb6fba03d50d0c84c2c943f17c1bd9eec662420ee42acd5c5f18223b92ac269b320bc1903550c1d55b7ae5804eaeb6f67c57537161ef8460e45e34fab823ac0eefa232404c7907db88e4b1d74af7da5a2e38f82f96a86a506df1e717e636af1fa85bca3259c78fe7cde8ff56cd2461997ff8d3b31be985b73e4eb0dbf36d39923cba9982870ddeb52acc02a97cae8688e230364d5637170c328175208f8d225e2b19289a29205a9568f426fdbda7bb04224808b2f21e4e80e2f18f4e790654e0d6e486340464b6fa48c95f99a4106e95a6a378458b8636556c700d79fc45697c09a84d2ec41bcfd560f0a147ece640060713a86516ecc642396e16a63203cce11809e7dadb5bde418348e91e30dc65e66242e29b69b9cec5548d4bef3e15a6cd4937c492b2f0ff83dd3acef224ef66aa27726161a418820196738ebd9569b49d51d1583129afaee4f9128c55813151895a046e4d5b4e7d1695b0d47bc657ef7795107148b165d0484f346c9c49a8dee187e3c1f28a6d57fc3b7da49042b37250dd02bc9807fe1af57d5a31664c90d5371542b28965e805224651f96836147e0300c2a938639e +3c9b46450c0f2cae8e3823f8bdb4277f31b744ce2eb17054bddc6dff36af7f49fb8a2320cc3bdf8e0a2ea29ad3a55de1165d219adeddb5175253e2d1489e9b6fdd02e2c3d3a4b54d60e3a47334c37913c5695378a669e9b72dec32af5434f93f46176ebf044c4784467c700470d0c0b40c8a088c815816,ef1a40b1819ac20c49ee1f31e36b853619c8e960da1a5bc86674c5720c0f255e8099cd4572d09fa5b8f035abee5fca1725f988954513e2e7fdca92a55a757145b0e1a223a7cd4e0d18d3ec7c8bb33221b24aedea4a08f01b2130d58e19570272456697df883ab29f4d4f86ddbfd1d97f1018277f84ffb615451190762b9b72556677591e6eba3fe45f8769072e234602e222c77dfd8cc095b73d1b231f3f09b89c2ecdcb741fed58085cd763e2b016623bf2392631984b6e4d2fe558b7f17973a8f58be66d73afae5de5c5b46a6205e15f8a7f5b3ecce65985edbfe4c86d3830e642c99e44ef35aa55b834696dc519635240d6a693ac09cb3d567105420449664eb7b6bc367c482cb2682b1a34a9a051470ee3daf8045b0defae0ef10581830a1c21f75045d1297c9ef4b874e9004d4bf86fd770b820a9aa1fe967388215aaf00ddac57f9b3b9cf0a67fc81e27565f1f3378a620c9a99b50af301359e98d31ead034dcb0334bf45d3cecae0a95e4f0f0d60b0725f97aaf0ec1c4ea1d7d062d5b13a69b68ce5fb382ff7e25a219c7fe8cd1d78b47660319f6ea04418970eb3b5fa6778d84ebd4377c8b3db2632cb616631db82cf68cc4a03a44768b082f8a5fb606fbede8ac366b9d0813bb58017098a9b2d5baf9c5313451f7fc5144f8a89ec34da3cddacb079a963bad7e08a4d68de34612b116a0587731f4df8135599940b3 +d1e654b77cb155f5c77971a64df9e5d34c26a3cad6c7f6b300d39deb1910094691adaa095be4ba5d86690a976428635d5526f3e946f7dc3bd4dbc78999e653441187a81f9adcd5a3c5f254bc8256b0158f54673dcc1232f6e918ebfc6c51ce67eaeb042d9f57eec4bfe910e169af78b3de48d137df4f2840,b9a11246d631a7c9f33911215f36281030aa4959e598f2e36602ad66e236f4eadc9e87a662fbb5e30555f7f2048571db711d9b28389525dc1bff502c1766bf7ec7a26688cf30eaa16a23d00bd408e11756bf0e9dc3265abed5b83643260da0f7b58919078edcc9f62b2d14029657426407cfe5b514e17410f3351c401ee163d1897525441d6738eccb5976c16ebf309abe15fc5b15b362338516bb8fc50dc69ebfd5e3cfc7b79571c7dca79d57970ae0904547677b30cdd7d09a0973ae65d6e00f3f9205ba0d806cf3ddb5acbfb5ac1def3aa8766e4921b42df7b9e3ad5299747300c9d26406cf195dca47a673e232454dc80031fdaa0e3da4b66da9df72b040893378aedd6911d35d3e007828eb749bed4e16657e9d33867e0319e6d4bada0f16c466f3b1b8502bdc2584bcbd7128a976c6c8bf2d553d38ab28b982802d1e626c47b5ee08530ff22a9852ac113c560ddef6931f6e6145c3e525f5e6269e7dfcd4c0517c16884c681b1bd78d4a415039439bc5947c65cc35bd52e7e2d0fe0c88b2c92c903a0db75d5bac3d3d6a5a323caee0e55c61e8bbc1113a7d8aed0b031020cd7c50346b2c9eefe61c20c14ab947cdb7b3d153172d5f32bd267b4d77a7606cfb5080058f56e51ce9f73e7d75c94a46a4e917bf575827d37773f2f9eb5a552420aead98df822a7eed212538e2b27df5ee2188561775bd862902f3dd19a9c6 +626f68c18a69a6590159a9c46be03d5965698f2dac3de779b878b3d9c421e0f21b955a16c715c1ec1e22ce3eb645b8b4f263f60660ea3028981eebd6c8c3a367285b691c8ee56944a7cd1217997e1d9c21620b536bdbd5de8925ff71dec6fbc06624ab6b21e329813de90d1e572dfb89a18120c3f606355d25,ea756978ce1bc77f9c84a151604f37ced854b00328df4a486e9626c7da6098f1a6380efd8434fa59b037ab18c3488b404c03a4838a9e6c60b37c9348aa2cc3e09f016b1f07fed8d4a0b93bfd9121b4200a706887297a91ae12e1b385830536a88afadda80d4b14fc5cc9c49916cccbb47f970378aeb5ea6f6f583d131e53aa708196f749644dd153a3177f424921254a7fc92ca5ca241d54c6a1e565298d2baffcb173d22160241a535d34358fd0b54640cff9e04890bdf23bda5dc770240febb778d1d0b4b3c98ca7afd2512596ebdf02f8e1ee5c74ba26a35e1482784f6284d0d5fa17cbc695508026cd49f30d82fe5819378de13150805555406b8ebb6bbb8debf55a28b5f1350ef5af18dac71c9a02e76054eaf28e2d1259ee670492e75e1b3be45492d6e3bc5096ba2952e7b1e97dbf5e18618ee7b197e6fc3b0a31b2f071376f6c55cea08bbdfa37cf676a24de82f23878566b48269141c17c7304d6252952158078b481fa4270c2dd631afee7d7518d1f1df43b9841f10871d3b80e4680dbb89ce8c4cdaf4e16a4892a83f927ac7e4ea692c6ef1fe6a6b2fed3c8393a5100ddef4b56fd158e45a95844e2195160c3d3e02fbf51a715c0117627c783d503cb241c636dde3443adfdad82f5d9226d49921ff60788295a47b0d76af43977fcafea4d61dad09e2318ea16e32c44b14aaab6224193c3b9eef105057a2bae72 +651a6fb3c4b80c7c68c6011675e6094eb56abf5fc3057324ebc6477825061f9f27e7a94633abd1fa598a746e4a577caf524c52ec1788471f92b8c37f23795ca19d559d446cab16cbcdce90b79fa1026cee77bf4ab1b503c5b94c2256ad75b3eac6fd5dcb96aca4b03a834bfb4e9af988cecbf2ae597cb9097940,609d7e2f634d0457e311972039e1645e66392cdbd1414d5a8c839f8b22618ac73be81a745b9e2b83814a527f78d588119f7464cfb235e56d9e2f794a5bd510008689ece3ee818707be101a3b8a5e1211e3116ac0e9746f79a01ab9dcd01783e961c316ef4ee908cd69c7c2b0e3560fb6dd5649896403d07f021539f8adf22ca4e3535a81ef643ac230a0c94913e9584fd8af77926360d280feca2283f8097dd843d509c5e34a9fa8b02bba9015753d3f728aef7053407a90dc48f15ea272df1f478b967da4c02c8d4f2903f9a98f90ca1589bee5590195e0f6b24913641c2ffb42da043b4548d82f8f0f580356e9946022b06ddb0bde4947d4a25767c65d1ca02148954d1f33f07ed0886552c23286696067facdf37b5d468b1a5f29126a2805bcba687f61d920c53b8346579ee0d312691dfda9e53b3a0ebda1ce213c78de4cdaa3c5d9c6d5a4c66a5b53237a7e5d80e8c1db49656e28b2df50c02e9bc580a62ee5e6f72d9681435baa70c0b51afd2ccc109d0d45634072bd404964fb44d2107a68e1a9cd60e63b847ea9c75ef14d19101e391d8f80d05f6bf0966c949da6d9c8e2c865c0468c825e29bfb9ca2070518ad838a6b1530723f6261277ec7d1291104049503198b6c3b95d1d0efce786d5982f6d0120d9ab2d1c0dd9ea89644103442a76e6804a57b54fca199e6d714576d631422bda28c2a7f8838ceff879e0d3 +8aaf072fce8a2d96bc10b3c91c809ee93072fb205ca7f10abd82ecd82cf040b1bc49ea13d1857815c0e99781de3adbb5443ce1c897e55188ceaf221aa9681638de05ae1b322938f46bce51543b57ecdb4c266272259d1798de13be90e10efec2d07484d9b21a3870e2aa9e06c21aa2d0c9cf420080a80a91dee16f,f5d0630d6bd21787a4101e2287550aded2c2baeb0ca91d24cb61eaccf83b0d15700c6a95e643d8ea2383929d23de5a1819eb7571f38ce173f378ab7275776a771380443b0cc1cfe1b9efbaa8579fe6e002fe75b80fdc73ad20c727b003b6281a8befb7f7cb2545f42586ab879c9ff523d6acf70f24994342ebadbda27d3168a755c2dfc3c99360fe377c8a19f1465f6157cff76a1d7c8a6fb991058d582d5f2e19ed583136320c4da569d9eba4692e0bb19e620c600260bfb0c95f7a8fa4560b1b715727cb04a8d37410dabe2adc5cab24465bbfb41aec1e946be1c50eca676f47ea99d217d68f6b8f3536e879fde16a355e71857143f7d07c9a207f4d61b89b82354f0a0273aeca1361c3f949efc2a45bec3933e8a6e7a86e90e0efe5d11f6a20ed9811a1cca507e33cf47fea26d7e67fa88d374245b1a24d8f5c584dae932be1ee25ecc5ee61d31111a3d1eebf220665ec401e28bb85b93d615b64ead0fef0e6af725ca5ea8454b571a784ef95a020251fe236952d130692d81702b16f8dcf03cd82a809877b08774635a4859e1a516e9c4135fb415100359ca6da69426d4139e90f00efcadd155f85a4ab1ce154f8cbc84efdfa7603ff48d5d1ee94a4d27dc9a450e35c60d9cf43594c9182b69fe9df540f498c5c92db68065f2ecdc52ee7d22736561fa617970375f6ea3d01ff39e2e22c979ab58df80ffdb75b4258f49a +53f918fd00b1701bd504f8cdea803acca21ac18c564ab90c2a17da592c7d69688f6580575395551e8cd33e0fef08ca6ed4588d4d140b3e44c032355df1c531564d7f4835753344345a6781e11cd5e095b73df5f82c8ae3ad00877936896671e947cc52e2b29dcd463d90a0c9929128da222b5a211450bbc0e02448e2,f3b73032fbc450b21db7c6c263aba819accb297b724cd95c55280fb7f4e6a5100181fdd6e010964c62fc51c0fb540794cd3bacd695a082b20016e1be1f8fd89e77aada0747afad6acb2f963bb476f1b515cc0604ce5a7b18506bfeb875bf483189d268255146fab7b7820a26dffe97c737a7d5bee677524c4b64539ce760cb4ab6d03fba155d05130a50d5c1ea81873c8a45f1fb83c2ebc11a2a1bddd45aabbcc572d9e93611c4a1429b802eaf44ee19a417243c069c99825959093a9e0e5bff186c757a7270e33d02b81768d94014f17effaa3b2d92fef370e552c8a8ef2b3557c2f930b7c79e9f6c0573bffd8585000954d9264611e3d6bb305b08973d0583c7c2c5b2b0b5aa1b0ed46877fb02646472672121a6042419481d4a0a5ee001e1e067f6a7ee1ea4b880d00f7815fa9658ad9dd643139a37b3febb46585a2a74be0ec2b8bcebfd8f63672f2c1f213511e611c677cd92b2d6c4e43792ce3709ae1caca3103f7d267940a0ca5868afe6296458811ba67205a5bd4b27f96573f8b88f8df2733b83c420cb2015dbecc6e0146657cdae3c7a2d2de5eaf8bc9ebd0a7fab0fa37b24206b6118cc56087b0f573fbee9bd0c4b70512ea4784d85d8a89e75e08f86d204a4a03d4c247cbf9af7c20fd532a65d0c89311246cb572c77a35cbc9c65be40fd7ea2d41a3f5a4aef0be01c4df6aef0190171932b03eb960172a38101 +a64599b8a61b5ccec9e67aed69447459c8da3d1ec6c7c7c82a7428b9b584fa67e90f68e2c00fbbed4613666e5168da4a16f395f7a3c3832b3b134bfc9cbaa95d2a0fe252f44ac6681eb6d40ab91c1d0282fed6701c57463d3c5f2bb8c6a7301fb4576aa3b5f15510db8956ff77478c26a7c09bea7b398cfc83503f538e,fbba34f9b8b88c9851e1b6a8613641a26e5e6944788449e7f78c66f32aab088229599e67b048058a2bb6713c84033a2177b563407bf832d136fba8a506b3e0c3ac8632f8c6dd058e1d242a24754d64d8a0e8db424000561ea5298edf2e5620237f4297cd4b2e48c87af4abb28167662b032f617d89c4cbbf064ef09ac2a122785d55c411970a610ade46475cc0e371ace344b3bee172d73e9fa4cffd1806070e7cf48b722dcec0756eb1ea059e8481def23bdf94a0050ce2848af21b49b59320d5f4edfbf2c1a653306be31f3634e5871156c44d15f8c39c7f50fcebb93c61df9258f81941aee98c0aae76d92560fc4987c0ca8cbf07cdd9b96e1f24e83f5977a2c561870d6fd4752796900cc41aa4f2b256988403065a9c506fa78c50e0b5b9592a4116fde380ee9e6c7fc67ffcb5123fce3b27a6d71eb875e88e0a8f20acb50b3f2d46963913fce830fb5e01baf0f2fedfa8e9717576b96f788ff8f8734c33c3cd9595ec2f6270be920aa2a4fd56f83442141c1c1834820c1a41a51da308f5cb8457e6c835c4f075706051a7cdb3901413fb9b42dd9e0a2b8664be7490cb4043acad67cc806886ea5c41bc8d81e00ea1cc7afb5bc34e150ec26e4d6d8d5f0c5a362a28c98ed6b3915a0935d7a237bb24aa18d41db5271be154f4f51dc25af823a978b8d41f46ae142470adc4d008b260928f7382bb08c320f4802705af6eed +0e3ab0e054739b00cdb6a87bd12cae024b54cb5e550e6c425360c2e87e59401f5ec24ef0314855f0f56c47695d56a7fb1417693af2a1ed5291f2fee95f75eed54a1b1c2e81226fbff6f63ade584911c71967a8eb70933bc3f5d15bc91b5c2644d9516d3c3a8c154ee48e118bd1442c043c7a0dba5ac5b1d5360aae5b9065,dd4fc79f3b1d5201767ce9a0f89d3ad0a3949bd75668744b95523562a5107cf45adfb39b5999d79cd3cbdb1f622b2b250c86647a45419a243adf4e7fbcfe227ffa2995ba39fdbc5bae183b786704d8631eff1f88ccb8563f112440dc48d87b97bf8e8cd8b894ceed6b43c857627ad1efa81045ce505fee7f370cfa478bcb4a4174d133d9a7057702e7122229f53ce03d281771cfe58ebd825c4285b4d7aac7cb00a835fa094683f503e92b690a4a35d0e4f5f01dede83fc829e4f3c5f783737a68dfc9eaa3cce682e3d5278675d17a2469fb0a814bf71fc212d7162ed80707aaa514cd5b682b95b948a8a9d79ee3ce1b9ad44d3e6e6eb455cf198927072d8f28950aae0b5fdb628ed5280695e7a83665c94a23ebd163536797ee6733166af631f21f6c1ff398d8d363d6f7ed518feac9eea1f98e9e3976706f2ebb3430af64cb788a2461b736d91876fd481f5f0135b458b57cc00959bcc1d145b2b776d7b5b1bd0ed154dfb602f78c8d567f30acf34341c9356be887dc85e9415602e19db053e965601ce5db866c1a9ede8c12a81850f1a46cdc154112560a1e38c40a014e1109195ff23054954f463aa825ffe1a377d3cb1db279d2e5bc7fea045cf3b2681170cf42d4c0518bc9e51c3f854052263d31c50867426552e6caefe37267a7725a4460fe2a7f2d951ddcf55a66ab59de1a66a7fd15169bfee7339428308c0477b0 +a62fc595b4096e6336e53fcdfc8d1cc175d71dac9d750a6133d23199eaac288207944cea6b16d27631915b4619f743da2e30a0c00bbdb1bbb35ab852ef3b9aec6b0a8dcc6e9e1abaa3ad62ac0a6c5de765de2c3711b769e3fde44a74016fff82ac46fa8f1797d3b2a726b696e3dea5530439acee3a45c2a51bc32dd055650b,fe149a9560e60dd76dac07cd65722403ac64637033653bd60053f3958d0df1ef1daeb343ff6488587f49945a19479820a98df8484cec8e3608a8c7d15594f61faf8547fb0ba643aba3fe942e191d61e2a84a548a4b76e0144b71e061d01e5b46629dc585eda21696b6f716ecd7d98e54fe49692b5ff7e74ed15183c4a4728a6a4fdc85fa56d49615e0141c65614de51776c73a46d19e2eda71226b5716ffd83c06813b631cdef6bac2b5f480cb59fb54dbd0e0fff0539ff70fc1f5872d8b78b3e03335675925e2a6fb7fdc9378d3202f396f05dfcd0a2193ffa3da954eb44486c054d7d8bc22194612047f2f8c5fd5423504d6a06f0fcd4e611880c74bc84d7d5c3b66e017dcc79ef5ee41f9322f7dd863aa5428439d8e5ed3222f2346e305759b46826e039ffa8a2b0c7147c2aa440602626fb79b0699ed15ed9ca54125603e9a9525db238a518708e78709d5cee0f3a196b4cab52198ed5a58c98775eecbde3ec721214db7a981c81d419f013f1db230746ba5ebf30ce37882376df8785adca0e04e9e18d0ec75778369f7516f5215ae92d67c4c4751090246a8f3a719bf83e3b310d61faddb911b2080266d2b43f31fc9e3a5d9747eebfc8816f63e398c9f506c00821d0f1097349fecc2dc05fc420fe673f5398ffe828cb99b3eeebe817eab6208803339d8d905c845fc934487f51ffcdb4e83d8e337dacbcdc57f867ebd +2b6db7ced8665ebe9deb080295218426bdaa7c6da9add2088932cdffbaa1c14129bccdd70f369efb149285858d2b1d155d14de2fdb680a8b027284055182a0cae275234cc9c92863c1b4ab66f304cf0621cd54565f5bff461d3b461bd40df28198e3732501b4860eadd503d26d6e69338f4e0456e9e9baf3d827ae685fb1d817,e38785ed93686fa741fbb6e5be64933963c3c872f7a4e8c8d540ec3f82284605625d32a24bce8b40264eb51b164dd86f318acfd9867f3bf23998275042aaf23bda01f602622448957b81e51475f15cdb31a9297ee390f681e460ec01a024f183110c728bb09a12dde89e6f5de2b4f8c17d981e3e9c531e6d4c19448a4a6be28853afa2fba216f7c8e2ce4e4de31f6b0e129cb5da118b4a59569a439c1095eb50c51cd83105b1a12b3f7086947ea7381969a78308f8fddac8b2d87f4540a8e7cac8932ca76201f86561add09d833361851ceb9759ad1eeed4e00ed19c642bc6d0aed034276b66d818e8791a7c1f42f8604e8b026d4635e3bdb27ca0fb28e7517bf662bb99ae3a3c698ad0aa2f02408e76a5f93abfc933b1691a89ee3ebca2885ea633d0fea4dbcd03b05b68e0f4d267144fdc0898de46011832adc872f4a7f0d8933cdd482ca54ffa81774ba083d3d9fe07de94f8e03ff66d9f1bfe7504e8a497591ba8f52758f92e0a4ca6a93979cd1f55ee9dba17bac6c69e83dded4ce2dbffb0b48c0c6aed657405de18e7891b3c854127459e89fe5442ca6d5c223b046147bfdee435cf4efaefd705373dc87e20b7d31c7d37907d30b8b32054bb9eca80d0afabb5ec5053d94d517f158ea958c7458cf71fca85b607a352a9a3b8f4f161e3b8853f6bb61864bad12dd9b57ecda507a3caa63a1dec726b518cb4fddeed6a34 +10db509b2cdcaba6c062ae33be48116a29eb18e390e1bbada5ca0a2718afbcd23431440106594893043cc7f2625281bf7de2655880966a23705f0c5155c2f5cca9f2c2142e96d0a2e763b70686cd421b5db812daced0c6d65035fde558e94f26b3e6dde5bd13980cc80292b723013bd033284584bff27657871b0cf07a849f4ae2,66fb94b62645f96fd55ea261e08a93aabe783f160aaffe07253a1c3d45dc65f6afde9df121a894a1a13ced4e5d492675bda35926a1b147d5317d3cc09d4d34ebc1bb223663b349d3f66f05dde7a66616e7f89b0bc6859a3eb8402b881890b21979be6f60cfdb9f6c2fde570d79ca9d24099820e433dd995e4c2271eb269937cbb96839a03ba7af726adf23b7fa2f86348c0489e09a559d0febffcbf33d77ced28a439f09e2efaa7d6334a783075b588134c69433aef0f8665c05e97ec2afe49336ee2cec0724842a64123c7f43689d1ee88873f89aaae9730b1a29768be0e49a87b52c1f5ad08d700ef9b57a20f5dcc7c238a5e56cea3a0ee1f9bde550f2792741f607e81744855a5f109fe91887bc580199966dfe28a30fd1fbea9ac4259e7bdf7135e4a9d83234f9d7abe3bfb1f264e23a67f456096e27f540fbbd5df0e8ddb5a6a455ece063d4d528c2582be8f111e1f7c7f204b82d40f60c2af6099dbdfd64df85899ba2a02a26870e3feca6c07e99ad43f93d21dc275e1afd1e136d2f49142b4d208ec865f91ddba5822148c6884b7cb283de5aacc4e8bb66be3b08804246c808569b2df0aeb08bd4c255ae1829aa62ae9495a89d238dd93e2bdf5d14159e48510fc82b572402302c63956cd215341a1d367135623c644094cd845b08abc7a8cbd4f3b66f48375df7155bc5a781e69272ec1b3ae4e3cfa1d8d39bf0b4b1 +9334de60c997bda6086101a6314f64e4458f5ff9450c509df006e8c547983c651ca97879175aaba0c539e82d05c1e02c480975cbb30118121061b1ebac4f8d9a3781e2db6b18042e01ecf9017a64a0e57447ec7fcbe6a7f82585f7403ee2223d52d37b4bf426428613d6b4257980972a0acab508a7620c1cb28eb4e9d30fc41361ec,295e0fbf3c5b510d6b244381bedf20f8bc3d915cfa4bf9fc42dbf6932f44dca91744d812cb9f639a9c3d376c49ce3c7da90d267d794805a61d20d00c79f42c37be018c67857b6a02e46b6d6a147506210651e31b280043610584a1440a07bdc8540ac46e637f7d947792a65adce3b790636fe1794e90598ca6340982ec58f3b24ae1c703fbb91412f1ae7c23a3caf78c4bbbf32c90c365726ed4832016c5a19e94685a7ccee376184a10beed6da7e26d1a4260effb7e9f7a0a0c71d7f164cc967c7526a0f1edf1ff54aeb114109f7b34361db5aaef9ead31a4d4896cb86556d2619de0ace07c133b14006119bd4bc8cf4f8ec09cd2ed91b4e524012261ec9537b3bc4c67100102293836e22ab5524c979f1c1af51fbaa2abf3f0efe6818bdaf37cec4d6cddc98a994bff1ac458637d528ba5f701de0bf4e4e9e691149a6cd4677bbd9821511ddfa6561c419b473d2ba019cf1b83b7aaa3bbee141e2fa38f032635aa559ca629068dd4639ccf579118496a903ba7dde88ff54806ae89ba3974b9dc0ac520241bee278e3eba1b3df1c026a8e5f0d5f28c35c5b04145b570d2f06d25f45bebf4de2785d75b0bc9f1e6f9aebe2ae510d422180cef13f6b0c8a0caf76609a158fb6f3b17e7282e168dcba19e76db7841e384b54f3ab29d78c86861560cdd934cdb63742933253d7bb82b453cf829f33b99b8e56b906c86131bd64f64 +e88ab086891693aa535ceb20e64c7ab97c7dd3548f3786339897a5f0c39031549ca870166e477743ccfbe016b4428d89738e426f5ffe81626137f17aecff61b72dbee2dc20961880cfe281dfab5ee38b1921881450e16032de5e4d55ad8d4fca609721b0692bac79be5a06e177fe8c80c0c83519fb3347de9f43d5561cb8107b9b5edc,9e8438cffc23a52d75838690e7074d2c713b1188375d1a77f8fc8c24a4b89ca5979f58692d90db14dfbfcaa5ef0ac0c2d16f3e84e6f771adc26fa9081f3b10e02a3ee1a3de40db5de17f7628ba3e20e5563bad66bc32bbfb1ceba7598aa4480c86a0c4ed103608cceb103aa13182f48d9fb363913000ba6559c855652b4ec29d06bc99148569b66c77f58a757b75c3bd5ef2ff832fae020ec1c9e19c1117a107f0529ea66f0607a499db0c32966a95d882699b96c4949912380150f951991ae7768e5a26267a8a43ca76ae9c5edf31d7c52f2b09c9eb15e1cf47f85b20bd55ca47fec048b8df899a08dbe2e9c2f72bfdf3bb803af10b5a1bbcd7b4e1915e099c22307154012c67a39fa77720d7006b86a1ed4f095b6644af972ced451453b3de57b1fad8b4280ac62e1ed09e219873b92bfb50646343c46cd3c42e84e9c7f05f1aa5afd583f685a20f996b7c0683002691cd28d454f71334c2387dfc43d32e633900699c8fc5e3a3f6494ca0bba96ef10b7f367dd31623ddc14e9907f9ffc2c65da666d06987db1df8adce1c74bda7bc6c6d5263e3cd777a78b9020db37d331a16c38d7419ec5036fd95b896373461e6b8384b2acf96e46c7c9ab6d43c6eeebf62b7be5f95f8ab6b2aa5e05d66bc4df8a2fa1ad9c3cd9362cd183c10c8cce216fe48aab2b1c4f6ffa39ca9f8d7b14ac5bbd8c71f55776f6c0ea8583accd1956a +fd19e01a83eb6ec810b94582cb8fbfa2fcb992b53684fb748d2264f020d3b960cb1d6b8c348c2b54a9fcea72330c2aaa9a24ecdb00c436abc702361a82bb8828b85369b8c72ece0082fe06557163899c2a0efa466c33c04343a839417057399a63a3929be1ee4805d6ce3e5d0d0967fe9004696a5663f4cac9179006a2ceb75542d75d68,07024716b8e95d104783a37f82e66d4f5b0bae8897f1ef6c45dabf3a59253261300371a4fd20601503f6d187ced1067aecb11b4a4b5a31fdbdf4a2b1ba9c0eeb0c2be7730178fe435905c1b80afd9cd27bcc631c57a10f3bf3f285bb80d9c4f1c70ed30996941d1ed225386b7f4777c18a01efb5f1086be223efdd082e01755ed517ad6a3e423e924147761c95b74f6bd338f1dc0e53715aa31bac84f7e5beddcaf56574626b23dc247d0aee8ed77760f53e7ffe467564aa3159aa300ad159159259dc3252d95942215c81ed5fafe0cb065758f72366e50df7fe6f2b41e36371408503c5e23a4ca0c93460c0ed713872f35cc71d1b71a34a80210069b12cca79cbbb04836e6d9a15e78a638b0879f74034339bb4fb39eed0c8d6684a67dd89b201b46010fa73ce5fbaee87fd89d4b5c40f04d9cec8510bdc3d07539c82031fe9734826cf36bb41b30426d32a10225209c24b631a071feb2a9b834810e81b6f87a6128f67815e4af6a6582ea36d9be5dcbb1d7fd0bda2d583d1f6bc2aed7a534c33a8d183d5edf42f3080bd07ce9d78647df008d417d0ded5021d7b6996d6b541de75dd175e820728037b531521851c9743ed03f8daf292846b2ec019238655256ee960e0981db7b65a3692b50f62033fd79a29f4a36c27bbe7a3b7bd1e813f3a2eda1cebb29979d91720ccd125d0c43d708892bc38d0d297047637447a19cb09 +59ae20b6f7e0b3c7a989afb28324a40fca25d8651cf1f46ae383ef6d8441587aa1c04c3e3bf88e8131ce6145cfb8973d961e8432b202fa5af3e09d625faad825bc19da9b5c6c20d02abda2fcc58b5bd3fe507bf201263f30543819510c12bc23e2ddb4f711d087a86edb1b355313363a2de996b891025e147036087401ccf3ca7815bf3c49,585f27af67fee2446767b05ce40627bb06d403430d94a62719dae2864cd44e7a8eea340b98dad0520d8c16c1bb1ab562c0fdcfe6f1de4f8a0601eb9a73ffdbab82444e77487213d17ba31e2bc39fec719979080a501c8e15932ad588000959a18447b98735c73a2a8f4a949a8ff187520e6a9901647f47db442bfb2772e8e8e22fd759f88722a98d24d01308b15a0bc715abe9568a34201b8675204bf68afeae8cb063d6cc9ea68af9e4cd692f9718fb5eab270a2b74ab623b521b4b085700cace113168f56a994a639517f36e3165029bf100a6f19162a8696b858a0b0716751430db7bf07480427c2cda01070f5e78e3ded7471874ddb05d2944bfb04487629a98e06cc4c984ae8c5f7695248d01cee11d75a9c7f545cf86ba745b8ad5564f33b0a8b72e78954a7fb253c07ec8fb3d3bde29ddd91dbbd94d332fe9b7438937018e8243c2d2c30657959ea4d23a319854fb2cb994ced4286836e83324fea54c58db55a969165a1755d965c416e1d67468abc701925f4a80bbd9aa9da82d148a26158712c2b9830804a4cd1ca14a2b246dfe8e8a12eac9c107e8cbbf34ef9517674350973e75799a251e72a352d2700291cc3f1aad40adc9050bef9881170eacd3207ac0c573e238b65500b997dceb347b94fcd5069cf43bf15aeef15e4c135dd21b4046b201f411513aea9629b9887d21cdc43768fc1c1b12ea4ca4595ad463 +77ee804b9f3295ab2362798b72b0a1b2d3291dceb8139896355830f34b3b328561531f8079b79a6e9980705150866402fdc176c05897e359a6cb1a7ab067383eb497182a7e5aef7038e4c96d133b2782917417e391535b5e1b51f47d8ed7e4d4025fe98dc87b9c1622614bff3d1029e68e372de719803857ca52067cddaad958951cb2068cc6,e57dd7df74504f52d00b8079631f542a532610d77ddb4bff8915bdfbc9b8f25352aa3d9a2d00ca2e14c77ff661b3aa44e30bcd3d4b110a8ceb65e150dfd9109ee948fff11cd01f6a98c0100d2323f52e323e32e9fe7bba6d4411eee3ccf70122da5bfec8b92e72119d4b1cb1a1626dc0cb79fb4e4c938a4a7caa7962b04a1129b4a0a9c457ff38e8d3379044e4b65b82336709b95401cd0ca64c10f5d22a226678a1ea4e2c54509085abdc41aeead761c7946f33140ab775d61f7b001f141d00f5209081b11fc2ace5d9143fbcb710176bcc8aee25d0182461ac1a446f3a94788b3513b88dddf5db0beefcb331cd2553416a3606f44b5cf36318c72501fa2007f76ba506ec510508b27d692cfddebf075b39e531ba243f3e271b5f70ea6b58afeaa0b8264202ba2c430c33d1409693ac52519f44b001abfa9c5595c0726dd1ed36c8b7cd2f29faa912e2613d1c51e2d0c6f8b27fbcdd6137307abdfc54c0e6c6fce06303862a8efecee12eb87cbf8423bfef01c6fb87225dc467ca7a0b0243ca9d531811a5e5090351313fa6f73d413755551f6e7187057fdf4cb58a1b3b3a63f28a17339a835a73bf21ec013ef4b2bf89cb3bf1369a87239a546a6816d8b06ec5b1d5a179e67a86665eefcf439d667f5f9890da8b9e1e7e1ad08f757cb0e3ec6d8cb8fd4a140846e3768076d342fdf0be4cb135d68faf5c93fafba4813786d1 +b771d5cef5d1a41a93d15643d7181d2a2ef0a8e84d91812f20ed21f147bef732bf3a60ef4067c3734b85bc8cd471780f10dc9e8291b58339a677b960218f71e793f2797aea349406512829065d37bb55ea796fa4f56fd8896b49b2cd19b43215ad967c712b24e5032d065232e02c127409d2ed4146b9d75d763d52db98d949d3b0fed6a8052fbb,6c60955dcb8a663b6dc7f5ef7e069ca8fe3da99a66df6596925d557fed91f47091407d6fde32023b57e2ee4c6ac97b077624fac25f6e13f4191696b40a4df75f61cd5521d982c6d09d8342c17a366ec6346e3528b26cff915be9442b9ebcc30ff2f6add0e82ba904c73700cc99acff480caf0487cee54cba3753b6a5dd6f0dfe6571f0115e8737b071031023b6bb0d79864c3f33162e78269cee23fce47b91b4fdf91f98464a1d21e799d17f76c1bb807dee667b0b273054be298299bd12b7a80fb354ce3e6d1acf98443879a554eca6b96df061d04a117c98aeec1cde1afa9cef62dd686da91bb2b1f12379bbdc9fa32a6b6998b77e8eb0b50507862afa7799d018e272091f51cadd81adb587ef67ba67618c45d1f3d559dbd299abc26ec712da8fa34ba33bff400d1f0f8b6345cf57269b858578c0072a91a63ef85f9d378900cd1a55d2bd4630db829eb484d89ce7a414aca173c52534ad5f9355e80e395e79156d751a930f7f8b5d9f4d5a2c9a753723083c5e8ec6cb24d8ef93c8fef2d1be4eca222c6e6c2acfd684893cea65cbf5b096b3d866007136126a33ef496bf2310f293bfa4c93ab826821e2b93259c464e0aeb06d6df8ffa30b1c1e7e384c7e427a2ba3d99ff8a666380c5c1b678f742c57b0c3b08849fd65300df13499dd894efc33116e7d0774064331fdd407487417d13bba4285299af650d3065d951131 +b32d95b0b9aad2a8816de6d06d1f86008505bd8c14124f6e9a163b5a2ade55f835d0ec3880ef50700d3b25e42cc0af050ccd1be5e555b23087e04d7bf9813622780c7313a1954f8740b6ee2d3f71f768dd417f520482bd3a08d4f222b4ee9dbd015447b33507dd50f3ab4247c5de9a8abd62a8decea01e3b87c8b927f5b08beb37674c6f8e380c04,cc2eaa04eef8479cdae8566eb8ffa1100a407995bf999ae97ede526681dc3490616f28442d20da92124ce081588b81491aedf65caaf0d27e82a4b0e1d1cab23833328f1b8da430c8a08766a86370fa848a79b5998db3cffd057b96e1e2ee0ef229eca133c15548f9839902043730e44bc52c39fadc1ddeead95f9939f220ca300661540df7edd9af378a5d4a19b2b93e6c78f49c353343a0b5f119132b5312d004831d01769a316d2f51bf64ccb20a21c2cf7ac8fb6f6e90706126bdae0611dd13962e8b53d6eae26c7b0d2551daf6248e9d65817382b04d23392d108e4d3443de5adc7273c721a8f8320ecfe8177ac067ca8a50169a6e73000ebcdc1e4ee6339fc867c3d7aeab84146398d7bade121d1989fa457335564e975770a3a00259ca08706108261aa2d34de00f8cac7d45d35e5aa63ea69e1d1a2f7dab3900d51e0bc65348a25554007039a52c3c309980d17cad20f1156310a39cd393760cfe58f6f8ade42131288280a35e1db8708183b91cfaf5827e96b0f774c45093b417aff9dd6417e59964a01bd2a612ffcfba18a0f193db297b9a6cc1d270d97aae8f8a3a6b26695ab66431c202e139d63dd3a24778676cefe3e21b02ec4e8f5cfd66587a12b44078fcd39eee44bbef4a949a63c0dfd58cf2fb2cd5f002e2b0219266cfc031817486de70b4285a8a70f3d38a61d3155d99aaf4c25390d73645ab3e8d80f0 +04410e31082a47584b406f051398a6abe74e4da59bb6f85e6b49e8a1f7f2ca00dfba5462c2cd2bfde8b64fb21d70c083f11318b56a52d03b81cac5eec29eb31bd0078b6156786da3d6d8c33098c5c47bb67ac64db14165af65b44544d806dde5f487d5373c7f9792c299e9686b7e5821e7c8e2458315b996b5677d926dac57b3f22da873c601016a0d,1279a95cb87b1cdf2f8a8a47ce55f0da3766e35ec58cf921e07b43b176cfd6ce8508a208c9d6f5412515e0235c95397a47d2a4b13a357db4882f69b9c910c985a5f82187bfcc46bd48cddda7f65c3e95481a37202eff9c116bb3f784bd46574fbd49e19b45e5e2d18f57be7dac826a447eca6e2a6bb44b0061930df56864c378e020a183deee8445648ec2f95ee5f09cfb196e3d809053566446fca6bc36896215bce115b0aee55737a4421316d2058f24c36d46279b458e901d3a8062300024068d99d8c1b8bfb6f3e5883bfef3c1aed55989151c2cad1eb940cc82398dea1e5a92351f0d5aa7d47e16a949f396194eae2ebea1fb731bec12d2734c2f1e7464ca2fe27f036bfb28a32a9657c75eaee79f86f2ce5eff1aadb68da0b32a4bf88a37f1d66d13df4ece65059bd4abf91a3ebf982a1f5e9a6da639623d0c8e5fc5c0c8071965221c4b79cde7d44fc258f20cabe3c38862851952741fc9e9e87c06ab0cf8b8fed6c18666c5c70ea25973fed36d90429c54b157174a2583e142e26f2ed492a9fa74f1985fe52a421c2f97f94b73ec7d881f0d0b0f930461fb896b1806c704307cef682834cb583b6e996bd31a6f1d8586d416fd8c91eba59935feb12a1e77d0f3e05f80842b14f34f27add947ee3ca2e54bbe018fb8ca27ffd1c24227572cc277f723535cba0133e359217d5522676485181abbefdbc31c8164f17847 +8b81e9badde026f14d95c019977024c9e13db7a5cd21f9e9fc491d716164bbacdc7060d882615d411438aea056c340cdf977788f6e17d118de55026855f93270472d1fd18b9e7e812bae107e0dfde7063301b71f6cfe4e225cab3b232905a56e994f08ee2891ba922d49c3dafeb75f7c69750cb67d822c96176c46bd8a29f1701373fb09a1a6e3c7158f,7a2dfe06b3afa54b49414379bb9c7a80efbc8d0630b8ca170f6b22cf65bff168f2ba6e32806e6e7d9d366d53a319bc2c8b8aac7cf8158128617229d76ae594ad71c0e0541b86078a62d71e2992e555ee6fbea906ccfe58fdc7101964ee8c3c05d0c2c7d8a01b7e1629bcf62233c0487e36e1c25474e129b72f1f9bafd6e0f7c9fde8dd44ddc1dd9668840294c5b39c408aa1bd1395d1f4a2368d9d1e5168093a63732545fe594b32ee91f89b297e3a33f53be9a1a00642c17da7061c10d1525f34180d04c78babf6b1c866a8ac1d19fc17c24f13ca4032d650dda748e2a09d3d97a2125d52e670c1da4afe56e60dd789608f50e914317ebdaf125bcca849ce37f38eefe8998bb2b1b10cc1b28aead1fc48fbf1c95b2a0f0637609cd569050bb5f3711024cde92bbeff1c73c9b6c8dba71b2aa238aa26b4007978efb346d3fe0031c391a70f362c4c5fe1da2d3c73e4bc52a400e5998660d8c127c46cc7fd589db2c952d2f077e4001b2b6b46ee5e56a44578b4b8dc1afa33c3994ce7ce49b4d8181195076b938bf605f61a74f9c505c64c2a75601e7ec3a94b22157308bbd481553abfd8ed5575b828cf247f6d321ff25fbaa245f9b30b39171e1cff354b9f20d55196ef66d32c4693fdf249f528c86eb82779b5fea03f8a95f31dc0579b1cbf178b23b276e5618941760b117af65b83374c919d6d423b575c5c459b5aad6a2d +fa6eed24da6666a22208146b19a532c2ec9ba94f09f1def1e7fc13c399a48e41acc2a589d099276296348f396253b57cb0e40291bd282773656b6e0d8bea1cda084a3738816a840485fcf3fb307f777fa5feac48695c2af4769720258c77943fb4556c362d9cba8bf103aeb9034baa8ea8bfb9c4f8e6742ce0d52c49ea8e974f339612e830e9e7a9c29065,fba46834a6995933aaddf85b59f60eb3b77b5ad38bc21a862079d8d2227cb9b3ce3ece89d90c70b990f7507d5c3a565974446b54d43288adcce2bfba8914eb498dc6001ba169417af6da3acf685dcbe3cfa0c59963f0f0ab94d39f05a69d5dfd320ef409de76ff85e01636f57db9b2df436d94ec2845f0c0d1959db6308941e40c946f4c3b3277a065847c9e3ccdcf113dec5dcbef5aaa1c5b91c19e05eeb66f6e698178b7b02fe00b89dcc98526fa0e7b2c6247e1c175a21ea34f5260b0c0a625d7aee1680b20b4667b44f72f1353bc71df6cca4346eb54306de3c380438a9b8e6cc47e6d18d84fbecbf9a6132f63c191635999105967c2e171b74615f456d2e111e7fee5df00217b49bb49270befe5bdfce1486c13c6a94e31a20c1d377c410324c08a17c2d04710ca267e85a2cc1e17ada367c0f65ac3a70aa5fe14378371132026169657d1bc1b84c1908ab46689494c3e8a34835f4dc43d19e9328ed0a16341e5e9abb80bddef1bf5feb5ddea560253532a6607e2e128480dee2083af54c67e971cc6b56383a564b0bbd2d802c6faa7bc62629595b17d04c3ae20f73b35a9ae4d356d401345e0a0d5174bc457256dbbd844f9a4bfce0dd48f35c5f8a915e61a23899c40fa63a51f0d1160e16260bf4da1902af01c67e8997b2aafe1989d013846cf985164c03418930e61fd06f9d30f06897460dfa1987d4b5d73b68caf +9bb4af1b4f09c071ce3cafa92e4eb73ce8a6f5d82a85733440368dee4eb1cbc7b55ac150773b6fe47dbe036c45582ed67e23f4c74585dab509df1b83610564545642b2b1ec463e18048fc23477c6b2aa035594ecd33791af6af4cbc2a1166aba8d628c57e707f0b0e8707caf91cd44bdb915e0296e0190d56d33d8dde10b5b60377838973c1d943c22ed335e,4b60950081987c82c2f1a1bb9ebaa9a72e125557e296bce9895561c6a959371eb1ac9a13914f4419b4a0a1048b3d422b53261b0ac26eb9852e9933251e154996dec6219a7063d87228a8d72f13fe94a0e75485c8f23db2341ee7439faf87a1b359ceafe4290319f4705b49cba0adc24db4fe8800ae05664c544d53ee119cf4f1572daa355e48db605695bdae5bf22cffb60c019934f2aa952918b388edd9c53dc8fac2186ca0f77ac6543ac379b1acee9913cd75ca8e0f9d89616383c9541603430aa548e9a9dd8f90f64263fe42a9b8f66991cb2b8b45aaf683f51d194a01098a10d4ba1107c56173825afd79ee0a334ce739915d4f046c814412df526adff4f23811bf1c6a254372e8e46f0008f6332637980417043bab8fc21e3715b713ab4bd1ddb3d50fb9d5d6aebf94ffda51d3bd4e25c82b295badc7f8f11ca787dca045de2b52a79226abb945f69732a1d0da3a3228d44d8f43828d8958e621851f4824590c0719982cdbb3602465c28a97cd4cfa33d6eba65a3f6428acd37d66967b8c996969d866a02ff6efc1b6240ab557321260eb4c9d233ff4e1c293ecca825dac943dd1b9a624ac37acd1a818d2f74ab99b2883f0837f77d4d00a52de0924ef55c7536916677d2ab4faa8f19e8dce97c05690570ff0117c32a3f500c2fe817ad651df2e3c28f5e867083f607e8d0509745588add19f1bb7482087a508217daa +2167f02118cc62043e9091a647cadbed95611a521fe0d64e8518f16c808ab297725598ae296880a773607a798f7c3cfce80d251ebec6885015f9abf7eaabae46798f82cb5926de5c23f44a3f9f9534b3c6f405b5364c2f8a8bdc5ca49c749bed8ce4ba48897062ae8424ca6dde5f55c0e42a95d1e292ca54fb46a84fbc9cd87f2d0c9e7448de3043ae22fdd229,5cbbc93fed206474a11100e1973984d5bc5d06ad92996fc8928c1e6bfdcfad5e32665f4743eae8fd28289dd226a0136abbd5edba5016e975381d4c3cc95065fa4cdac2336b39342be8070ab2b59dbabdc77b8742e4b3c86f1ee9ed0c2b5030fe1adbe28f827111fb137c180b9994fe150b1f5144081ad59131a6017ceb8fb0715dd2de6b3bbecd2fda4c3e9e8a652b5dab4d0b39caf68413838cb1960241af59a46c8b5fca40552693ceda564862df42c5827eb371311fef9231fe1b23ed07f72db6410172597eafb5d077aed168197f20c3b01cc3c52a94546b722b4ab56211b48192f908e7e7a7b7020a8f6370a0b73e046e3211df3352deb1d59e4940e45129a6667f160d2ed6eb703ef962683540e3a9c7c94a61875cac09c4e22ecced9e2ca6dc519698042f67aa518eaf3d338c5accd5c2de5c3df6b4a2273a0fb8880cf3f81d046ad8b24e73a8f3bd7ca65cd21ac2d950a7e36d0a25362788f1aa26b71ca434ad14ef3b002baf6327d4a5293d91cb838e4212949675df185b70d8b42c0c01f289478f0a9ff736e6838eec5e54413ca6f7f22f51aada7f3e9c69b9009599bc437c0d806baede6dc1b2fb9bbba43fc3bfb5cfb408a9d8ec1c1dd1528cc2aaf144fbf9079f86577a4a042a085975bb1cb5ddbcd728df6ba69cb23a8bda0368924466a89da791d4328dc55800fe8639987efc172bb29836a901b3f4f3fe9f +94b7fa0bc1c44e949b1d7617d31b4720cbe7ca57c6fa4f4094d4761567e389ecc64f6968e4064df70df836a47d0c713336b5028b35930d29eb7a7f9a5af9ad5cf441745baec9bb014ceeff5a41ba5c1ce085feb980bab9cf79f2158e03ef7e63e29c38d7816a84d4f71e0f548b7fc316085ae38a060ff9b8dec36f91ad9ebc0a5b6c338cbb8f6659d342a24368cf,ca9cf74aded61a4bc20ba078e8053702bc1a444cef69ab058b9c0f586286c138cf02aa36cb69e0cbcc52f455623d27b9597c9368ea5daec4278e75ad5e3fbcd480ddf8ef39b3d10808d202470d18118a215838a0f6c547d324faab761f7c8cef462be150dd49a26df4e453f997c31fcd27280e846b15f640ff8c39be270df9e44ce57ca82f6f6762777089276a3e67d8eab0e4a0c2e1946fb08b3fdd3fae438cc2e9ec8bc1754275fcf4060e31428b9f08e953f9fb4f80560f2040e4b6cc7bfd6c278ff01aba41f43549dc0aa0407e5c8346543b1f1c24d1e05475327a48821c1c1058850c180776ead66996dd5a02865702e0e4705e8e2e7d4d25f058528ac980eb831d6b70e7cc06eda314d80e1433b2a63eec405bee2acb18cac238abdf254ddbbe72640c8c609f70d04c77d2be9190f78c8e448035a9206841c55cf9152ae5f7cacd798ac696299551a5d45ed113c94cd862197ee118cad47b8c08bf4fa1c6270a61de6d538d608e126c0ffbebc7f44d418bb87e557e550cdda20c2c47f2cf635411189d30deddbb9075fa6f0521d2c4ff0e4d641006cf5eea1231a87d020664366eba5c5610b63ee5b5a50c2c8ca6d7eb8cdcbddc34aed08ed7e0ee437e235449d4c1cf095514e581e3c8a15eafdaef19fdeb31de6619bee6b17b31a96140cdebf7534e0c277ee33c54319b140af0135d6f91f7d2166026c67c71a21287 +ea40e83cb18b3a242c1ecc6ccd0b7853a439dab2c569cfc6dc38a19f5c90acbf76aef9ea3742ff3b54ef7d36eb7ce4ff1c9ab3bc119cff6be93c03e208783335c0ab8137be5b10cdc66ff3f89a1bddc6a1eed74f504cbe7290690bb295a872b9e3fe2cee9e6c67c41db8efd7d863cf10f840fe618e7936da3dca5ca6df933f24f6954ba0801a1294cd8d7e66dfafec,9fb76f906cef4a8c7a9cdde3254e6d4581dcf745b26995fcbc123e716f079e0a0b9f7c8ccd9dc5af8894b2d9783395f7bc05d95e20419c15d74eeafb23b6f1ba427b4b20bae38c2f6812b74a7a671384235df3618a7531123412113d57b9c2924ee4afdb9cc055070485a2960e8e5cf1971171f604781865624b075c3c01fa27f9b602c29e257821ed92b35f7941637c2bc6f0048a579e384503182ca8498ae7493d398476727a2ad321785d2273f9f548f6aca80fa7f1acc1144eae7c0ae58c3c4bca20eedc93c3742954f2e2963282084853af5c8f30a1a4333374b4a66188de73f773ff6a576a0a0df3c690cc59521378cadb123bd673a04fafb26db9d653d60a87f2834683d97f5d6e23ff2ace2ad0a5fcac71cb0032039ee01a2c3e37b3e1c14ace44a5a6e43b1e1a0fbc8afb0c811c911f2853c85f10d06253d29362d08523834273961e37c4bb0ead4f79e33d77ebd0d843709b121f8b509c24396549d2187df52c996eea9805c4a3c4f7729003d7bd7ffafd6384779d6b6163ad7c632a408922507188ea22d685e05c8851ea9c6e625d9461ef06af864e93f9b4544f00244264dc57f4a91920fec0120357b54304ecd0a45dd8a6879ee01f66f222c6cbebe8617fc06b28805f480cbfe90d42a38d1981a4176985775cc92e3aa632cf4d5a49b201eae275628a3ca7bbd4992a39ed5737ce0b4c32ed4c4d84d9e15a46 +157d5b7e4507f66d9a267476d33831e7bb768d4d04cc3438da12f9010263ea5fcafbde2579db2f6b58f911d593d5f79fb05fe3596e3fa80ff2f761d1b0e57080055c118c53e53cdb63055261d7c9b2b39bd90acc32520cbbdbda2c4fd8856dbcee173132a2679198daf83007a9b5c51511ae49766c792a29520388444ebefe28256fb33d4260439cba73a9479ee00c63,d512ef86b19c0fab408df09a8ceff07e8259cdccbf0c060cfefd8fcd3951bed94bcc30005dad8002227ac4524a8e62709612666f54866074f2272e6cca23a88d5a05dd5b44dcf411e137f44645187bf03d8ca19db835974ce314ed8f3f1cb3407cc48650a61a8352fa34c4c307b8dc438634c292e91871a5dc55775ba740b8e1085c14bc779a0260288b48c80ab4b2ceff645fc47751d6dfd3039246a5e7f8b1d66fae0e2b71172c24d599cd5836faf10b567cbb834804c16d111b56d8961ec67ce6ddc989b0ac0fb3975581d3bd70043725331685b959e22af6509d4c9cbb8d4e10c9876ddf6460d62ab09a97a220038952f7025993f3f3c5eaaedc9d9ab2ae948f56f956ccfa1dc670c47ce1946ebbc7f1f537cbddd3938686e65e58f1573806ee42db6e22e1d5070820787198f27b842409b337bf0a5647c63dd0355838f52971616fd7318164cf331641fab6e3b2282547288a76bba5b973e138e4182783fadb159cdb1141dc950b70ef4609055076e7efb532c9a944c419baee914ebeeef7e1890b292f27ecb8b7da25b0c7debc52fa75f50247bb671087a0dfc15ff3dff6a3e57791f2471889f356d44a3a10228db2c3ce778ecbac53f127de3f4621e6d83f8714c0d66763460a011958101123e9ce31f5562b73ebd4f08947475e62c6d815bd02a3bcb12b8d058def7a9de8b4a70a00d039381d61dc6c0317a0de62aa +836b34b515476f613fe447a4e0c3f3b8f20910ac89a3977055c960d2d5d2b72bd8acc715a9035321b86703a411dde0466d58a59769672aa60ad587b8481de4bba552a1645779789501ec53d540b904821f32b0bd1855b04e4848f9f8cfe9ebd8911be95781a759d7ad9724a7102dbe576776b7c632bc39b9b5e19057e226552a5994c1dbb3b5c7871a11f5537011044c53,fbe450f412e4dea6df16609a1c5513ddc550f7d7fbefc4f5f9f193f3ac88351ccfb1c25955818dffe5df50ad08b3dfafacfd7bfd484a628f6c9bb4e32f271f4846bfb90be00b80572c12457ad35541c7fe0fcaf156ab66548a7d90458713f8e10e725c5759086d33685d43f3ed682b1f53453707fe17f0d389d0a8497e258566e93062b31e3538ed95691ce730b1df2f498f010a2c2de04dc698410a3d4669329e685827deae4baf2c15dbbe975c9daa13430c440543ad94624501aa63ac4d012edae314df68d7d4954d4119c5b9505d566b8ab9b54007f4b8d92d9feec562b9e0e37fd8643907d8e7b6fde785195650580373d3fc69619fdd039606064e84c6c6e44118e4921a2dbd185e7de90508ffe7380ed1c9917e0e38de26d8941d6ab0d0b4fa213db4b075a362b314bc7c3cf21a8341c611551057f9e07492c8d923d54336f3f0aa44422c423e2db0d598216889753280b08103417f431658f1ebe267237802e1ebfca862027a29aebadf8ed9a603983e0bdbbe84b3d9a5f862abbf5e18e5552c0d3e7577b96916123b4504aaf2107f643067b88ade293f5b3fd3f6955ccd9ad7e134c9f5ee60f6da78032ad1c85d710bc21939008111602147e0bf1d79f7f5302686729d44e44a7a6521b8270cc57cc8a6f16770ba66ede8fa823fa088bb7da7eee980c6c947d7f510deb93bf0b5f4380390408823aa8eb980ce0f04 +cc7784a4912a7ab5ad3620aab29ba87077cd3cb83636adc9f3dc94f51edf521b2161ef108f21a0a298557981c0e53ce6ced45bdf782c1ef200d29bab81dd6460586964edab7cebdbbec75fd7925060f7da2b853b2b089588fa0f8c16ec6498b14c55dcee335cb3a91d698e4d393ab8e8eac0825f8adebeee196df41205c011674e53426caa453f8de1cbb57932b0b741d4c6,6658eb2feb9a739ff1724fe1526089d0ae807945741c2c6cb630e8f5b9c88f3455017bd81a5ed8f441afd50414ed0b9c267e527786041c4e3f8daccf1db60a0ade7199f689c8f0c04cc846318f0b8c34b122bb98386f48b0e69317938df76c9c6d502bfae1fda37ddba108af9e2d07cfeb50bb79d828fd5a67c9c3771ffaa07c7a47fa681a1358611ba76b079f4fe14dab9a0d3a4e5d2ac41f4f1374319ff9b81d970511464f5da9ae9d6312fa8baf22fceca2b4bec1a8d887f47811f1e7acc1884dee4740ab2f6e2b4f8c11c81c7e40be19f90f27fd1722ab95baa214b4096b4b11a1a9b553c4ecd789aed9f22fce58ae1963a62e450d754cb048c68eef0e7d2c2a146300a902c56ed8d149bb5c36566cb8a3dfa8582562a48927ddec45be750f639881cbc33d3b48c128d91108f2a55724bdc5162b652cc03d5f591e96f4bb40a571e1b22f504a6bb6d8d897a73884057e1d2eb15de0d3585bc14cddfafce3ad5d6a861d7cf82b5f1af784637a99b79f91528c4976720f34a3a12ba0a4bc84975cee3167d4e72292e9295629503d642a29196b934e71c63425ad701820e79ddc9220da7c7a2aaaffb852793e822b6915734fec8b93344bbbc66c5192b7f1ab6bcc63713b11cc23d541441c04428ed11444bb2f7ea981603ed4103f86e6623014ff97cd32da3c6e1ccc22ea8bbf3b6853764a733e61397302a96434abf2905f +7639b461fff270b2455ac1d1afce782944aea5e9087eb4a39eb96bb5c3baaf0e868c8526d3404f9405e79e77bfac5ffb89bf1957b523e17d341d7323c302ea7083872dd5e8705694acdda36d5a1b895aaa16eca6104c82688532c8bfe1790b5dc9f4ec5fe95baed37e1d287be710431f1e5e8ee105bc42ed37d74b1e55984bf1c09fe6a1fa13ef3b96faeaed6a2a1950a12153,cf7d80ded88e700ded518b2f0049405aea695691924b4ef06205dd2849e7a0090647c3a23407cd4ebd5b582c32b6554c506e416b9d13903a3ad69234826e36e3c5862baef9bd93ef345125678e32ebd5bae0961935232d5be54ac721fd75fe1165341a41fd880d239de12065471aee6cf970cb6a0f02addea861fefff91e6c2e482ea9bc255fb00cce1fe8ce3da479eb28768f356c2ef83f400a0f0ce859606f3862a3579e609de48f1ced3c86a9ea302462de9a27b0f251798f9d0acb22e6c71011f0dd45b11e8e33543a3275b24b6464980a5b6ffab2e9c8055cda16be6c60fb616a8f3e8b759552a2df2b05b846beae18a01dcab1e92545b0b3cc2dc25134379021dd7dc294bd97a775c174a04f2f67591841e080308c587e208d1b497e229220c38469944ef41f61a64c83e06a4390bcf318e53e4a6e9214f943d1ee957b71e8580e0a183c6b05924cf32809772cdba700ea369448ab56f399385d4b8d851cc8d6e8003f1035c6e739c91e03f1fcd9662ac99e372b45fc08610265e530f53ff726f599c33820ab468e6bc2c551204260271fe46c0a2975a18bccfd87a53b2a7eee2095a180b0a5bc7d64d57ff8efa628349e00c84b271ddfe13eb009387b1055f3b0e7b556ce6a738b9dc880b22e79666148a6c4d97b2ca581864ff4400749750bab03af9232815bd21a1a6460483505c34f282d59863b9f491a39d028d5 +eb6513fc61b30cfba58d4d7e80f94d14589090cf1d80b1df2e68088dc6104959ba0d583d585e9578ab0aec0cf36c48435eb52ed9ab4bbce7a5abe679c97ae2dbe35e8cc1d45b06dda3cf418665c57cbee4bbb47fa4caf78f4ee656fec237fe4eebbafa206e1ef2bd0ee4ae71bd0e9b2f54f91daadf1febfd7032381d636b733dcb3bf76fb14e23aff1f68ed3dbcf75c9b99c6f26,fdb4cbef885524710f96f1b489099a8e5f9f5ef2bcccc23b6a619bc81f9dbff63b9ac609bd5da0fa7afac0e67bb96a54a1a64b4b943e0a492a5bfff399cc9a1fddb5787434f5034a30ca767cd8a31b69276435c99c64f3c567ebaf3c69fbcec540cb2fb671ca3835ecd228c7c7649410107d399edd661bc8947d43d5bc441ab2ef39afac6788bccdac5462d5698f60616114a8346707606d1501c834447031cfea921a85ac882194750fb8e4d22573a27f2901b75c6887d085a6b47e2bed5af785c9b60da38bc9f61750f16b2e06caa1cc77cad2b95c5d583d0e1bcd7e10b0d8fa8da7e097507d11873395166e3591bab851ef4cd7e1f05cd8401ae496737894ec50da4ef475424485be599a4e8387b0309629d5b634bd70c4c95be723932efc24ca8ff978cd31b08666f2f6df9e94a6f8afcdde6c6a01aecb63950a4b4bcfb4ecbc1feaf3b54454cbc7292a65282c9b0d7c6a053ffc11f6888da2bbcd6496ca74cfaf0f49a6f5f56e14e51955b73994015313404d46bcf0ca0854407707c176f36c3ae5986f67984a33f252b86b2758cdb7d2fbd63606b2e43f7bf0919cbf97d2e38f01aca8b3983421ca447a78ba415add0580fe56e391817783f11533c8d70e3b8ffc4a3ccdec56297ed51f80215be98c26b343736196f5c68a65b308835c8693280061865435383272a77397dd6fc3249b2ce17ab3417ac9dda62ee74c43 +1594d74bf5dde444265d4c04dad9721ff3e34cbf622daf341fe16b96431f6c4df1f760d34f296eb97d98d560ad5286fec4dce1724f20b54fd7df51d4bf137add656c80546fb1bf516d62ee82baa992910ef4cc18b70f3f8698276fcfb44e0ec546c2c39cfd8ee91034ff9303058b4252462f86c823eb15bf481e6b79cc3a02218595b3658e8b37382bd5048eaed5fd02c37944e73b,748de9c6e6a8886e9c34d67a5b2625315d8b0057766ce2853f8dd047a3b58a410b2327e56234572db7ea886c90f6df31b795e93af95a4c52632d7e03d255668255f54c0dc1264ee989e25dd0ea77a8855bc74ea1066f201c999c0be63d1817df33db624f540ebf463c4b48569136e891c1082a37e6add6922c08fe512d925639cc37536a324f3850932b474f313647e65fbf28cc1804d2ef15492ce09e84413a465c69fca84014f15f2ff3ff5bfa6a9c38cb69e75d66145bcbdc462e3a6fcdbd7835c44b9d95e1f6d72c1a7af0e9e9730559499553715b0a7edeb6e5c8c5a3536caba0b67f619ab317aa8f60a005860599bd1a1ed20ffd191cf7ad26b63264ce022e1ca0eec821d6a4bfc1e97482cc33a14be20d3f6ef96a47da800ce1a8fd6939069df50c10145bee28799f8a1c43d37caa377aeae5a2a19e6da2f173124ced0aa5652aa34632be11cfeb8fc3c9a0b4c45a7933b671432aa666faffe679562d727f786960609a91d0972c35b4b9ad27dada6a24e00589cb1eb9e4706a476c5bf749091df4370cf99ff6adbe1b029505bbad815ad50ebdcf22208937fba80a453a99ca49004706a3cc3a95cfab7f0c2fd2e03617f379fdfb8a91442754de62805797adb4cdafdfb7a69f2b0ce9dc530a9ec8c741e892758512c4aac208564935791713b49b95a9df215fdd74f906f8eaa7b13a0eaa443d78a482364abb883813 +4cfa1278903026f66fedd41374558be1b585d03c5c55dac94361df286d4bd39c7cb8037ed3b267b07c346626449d0cc5b0dd2cf221f7e4c3449a4be99985d2d5e67bff2923357ddeab5abcb4619f3a3a57b2cf928a022eb27676c6cf805689004fca4d41ea6c2d0a4789c7605f7bb838dd883b3ad3e6027e775bcf262881428099c7fff95b14c095ea130e0b9938a5e22fc52650f591,1060697962ea79b9519fe3aaef385c997b2e8028d68deb08ab3b76f71ce161eade98c89d223ef0384232ab3af3a6cb1d43ef5d20c1b3bb819423c026bef0bf54f4800cbf8e9e2d40f9a4c6cbe7487600bf451783a378558ba27268a5074af0630f5f2cb890bda971a4ab65cdc37c0215db1c09ba96240be066f95f158cf863cc18346866522529503e615e4cfef990f49583ede896beb63b1489b6a62bbad9330d5c3deb673d42151ed98a3854c1e80e0868e27d8cbcdb90dbf3505610fe170537919ec7c191579148e06d7d89be3f5c88c430e38fd36d820db5a941680e08b5d1859ea327c82ef50adb1d8e6e5184652064cae2c617337ed36cbd1ed42cdf3ed0c411cbe1a9e92e0f4ecd3cf84cb6c07093d51cd4d5e7c7543d385b9f420248749675cabe9fbb87f56c865325b826c4d32e28b1e4bf1889f2d00ba87ef01720d73eefbc38828ca76027c656e3758ddd1ce730e2aaac0354ea71e79d53c0d3526ed8fc024bb8cd675ab290feed6ceda91a29a71f5c128473ec94ee59a29a381e5046efefa8be3af7ff0858dd54065b41fde35f618235d5221aabe2b4be62c1e7fde8bead94f7bddbafb8a471199b3bc099e77d8190029cc7508d576db31f362b09e5c1131b0572d86d4a7d4b533737eb4d7e504dd0852e079f2a1b2b3a526175948227ea2511ecd4385f616b3bb086c54f191046bd1782eee9625796010493b3 +d3e65cb92cfa79662f6af493d696a07ccf32aaadcceff06e73e8d9f6f909209e66715d6e978788c49efb9087b170ecf3aa86d2d4d1a065ae0efc8924f365d676b3cb9e2bec918fd96d0b43dee83727c9a93bf56ca2b2e59adba85696546a815067fc7a78039629d4948d157e7b0d826d1bf8e81237bab7321312fdaa4d521744f988db6fdf04549d0fdca393d639c729af716e9c8bba48,f31639ca0f9455e11389937e9e58792e3d73b9cb950adbe806607b1ad53d80f2a199f577e278137035136ad2afe7f8faffcf0e60f0b2a71e0bd9b938b28fcba94a912f249fb9ae1779f87bb1aa714d1fcc57d4bfb899a233b99586f81f4885de6693dce78d9b6631957f1689e843c1463045cda6b921173054e14be9dbd068890df88932f68ecefab3ad3eecac1b4c398292446b17e826aa8e35f6067c908afce46fd92899726677e2c0589f525ae021a22a601839beafed00f6a8ff6223fc5a92ebcf6207341b63fa2e66e9dee2fef1217d9d39915924e522bb52fd29501247b1a7b9dbc06678c5f29af7cea3d8722374446992a4bffb0e3e623e881efa7f957db1946496c2eaae98f0929ef3df633e67730d06483770197b9dd17c7c9838aa5003c5bdb4bc54e7389d453e769765879485abb3d565749c8cd5e50da9c4517f31abba38f1d7a0fae0d2816ca0ba1dffe569df4215d215676de0fcf55a75fa5f7e899f045a4b6051dd9355032dac56fc56c4988a4c082fb85b74a4c8a407ce1a06c344b2e833281ca64c2f23fd8a9f996c563e9af8742137617c0e46c5168e0b43877446e07563deb3d7654d9ea3c8ae3dec58c5753f34fded605a49236336f0b355e95def3bea7a367507f19f4e0a6dd03ed3090c285f761c48a3d3c5795cf277a87fca688495effdf5d10fbe07840c3f202d85044fa3bc41cdec4d0aaf59bb +842cc583504539622d7f71e7e31863a2b885c56a0ba62db4c2a3f2fd12e79660dc7205ca29a0dc0a87db4dc62ee47a41db36b9ddb3293b9ac4baae7df5c6e7201e17f717ab56e12cad476be49608ad2d50309e7d48d2d8de4fa58ac3cfeafeee48c0a9eec88498e3efc51f54d300d828dddccb9d0b06dd021a29cf5cb5b2506915beb8a11998b8b886e0f9b7a80e97d91a7d01270f9a7717,f04b251f8f1a9fe87e9f8b0bd8a641566174cd2157adfba255a4ddb7a001ecd9b479b7877c38e487dff1d830d01dab9684f1438c4812bef8da03ecfe57e7eb68a68e4fefd3e0a70d607ec77102538d5535c293339532953138995cb4f23af709f5c103e662e7edc447995fe5bc716c7bc482cd0cd13f17ab48d33c8bfaa67ab6ad30482b6db8ba5b1290656be81e1b543793d47c1d0ee7bc953c812e187535a0659b2cae6be47284419744c6aa66b9e53f76b9f90d4aef8dfcb04a98c82fb434c0946e5b98f2c3bf25c128cef77efb9f6412eb11f36e484faf2043a40cf44c6c3d28761f9cb7149c3db4620d09b220720767ae41bb097c865720185c19a474e4c3d706a636e42050a23766c2ff3a21c4e9dd7af62f47eca671f473e2b487a65abbfca74ced063e33f75955e9958240bc3907bb90ec6f49f384df5e936ae14fcb308f8acc1f7a406da680e4efdc2d2bb74b922c7b49e4972e388596b4f05fba68adf9a22fe16737394dfdffe2f0d32f1283ea81996b8309c2d10d4e32d4b7bc3d88484bab364d0b7e35ff5647053cb34180e037a66349a254ae2aa8f81cc7fb5514e76d9a01f96394e3a0044039c452ecf0fdf5b8a57a2a5600ab31affd1e15d4642f1a37deca0ec60ef753797ad668b7d9f2bc02de248c719311e5696e11688ddddf71f2f1994331cbcfbb9ff22438825620033734c27f9fe72766bd9c7fb021 +6c4b0a0719573e57248661e98febe326571f9a1ca813d3638531ae28b4860f23c3a3a8ac1c250034a660e2d71e16d3acc4bf9ce215c6f15b1c0fc7e77d3d27157e66da9ceec9258f8f2bf9e02b4ac93793dd6e29e307ede3695a0df63cbdc0fc66fb770813eb149ca2a916911bee4902c47c7802e69e405fe3c04ceb5522792a5503fa829f707272226621f7c488a7698c0d69aa561be9f378,8728a95b55d97271b701b1bf2c2987ab3045d39fe0978c9467c41d44c006486cf3ca11b8c0d22c619a8e4652aebe67fe9fd7d35357633c8e11b865bd4c55571d764e6f92e29b5c93606273522a958eee0cb2315e89a1b5c45e763b145b1166a4717784e993e4a7a699fac6385957aa914bfc856e8ccc62dd39159f0fa5d2f4c74a4c9e1f3a1bf04f8d73ba5a3133243973562afe874c40331086e7a9705ac76ce8482b7b029278ca61cf74b5aed280a6e795906c4c3f525c5cb382e55af0ac5c9eafdc520b0ac74f14e0203f1209fe6641d1d971c76370204fc14bcd6a8223e30ca81b7d9e94f35dc53634646a21c28e873baf741705e4862ab6945653a312125f534a75b6f2d1cd4409d8f842dbdff9fea090f6677937daf354f6130ed77c32711aa0c7cd448d92075909ed7cfed67bbd5ccedfa34495624ee4373d66fc2f3b25b78ad6a1a9e9fa9a714ea24240161c8cd88f24fe72cc3160d5f68f2387347b580e945f401b0b025a21e97feec0d4dcc412d2597504489b3cc20e3c883c0d88f26591ab840799b5e9b253fe02656ca6ae1a1ef1be5f1961f29cdbe35a40bdaf2760c7bbf051ecb62322dd178753b3922af4cef0aff4955c32f32ac28d3a44b7f1e8cf93fe6547e8c3dd35159e92a9f3c6e4cf2a75c97cacc0d732b984a8b7a6af9b8189896fec2dbbea60c3b94904f154bdc8fc291e027ed03eeecfed067969 +51b7dbb7ce2ffeb427a91ccfe5218fd40f9e0b7e24756d4c47cd55606008bdc27d16400933906fd9f30effdd4880022d081155342af3fb6cd53672ab7fb5b3a3bcbe47be1fd3a2278cae8a5fd61c1433f7d350675dd21803746cadca574130f01200024c6340ab0cc2cf74f2234669f34e9009ef2eb94823d62b31407f4ba46f1a1eec41641e84d77727b59e746b8a671bef936f05be820759fa,b0ee2d0215f195934d2937d523d38f1af153fc142c04e5d684834596f3b909241938a56209d414bd1ae0cb43eb2b46c314c1a0a0b155d432947c318642fe5c5b4fd6d0e4c21a9dc594db205307b41effd14141454ee55dad5667cc7459d0283ca6652cd5092ef8bc35c908add07fd5daed66afc6740baec7fcd64b838368a8ff0dcfe25b0d46fee0b842f9e9f59eee18d73c2549cce009c388b5a8ebbd54b35676b6140deed07efd4624d5a7f816189dfa779929c5f6b1b9489e27492ad0f1bd085ee890794529b75e10ba006c1b66f3f662c30df8b1295e1ffc301dc7060010862caa14d7fa09817f0d91e928ecd89fd8e76e69b3ef4986a15dffcedc9ac24e5e28783667731f07998f8a36da512bb5ba0ce50640a1a5328fe037f5872a85288158cd5c66b6c03f1925c12258ac4b5e675acd73716aeac389f9c235b02fe363a98cb10d9a0b44feed935ab067c2eeb499ca83fede967f576681a13c999fc7c1c0fde2754dfba713453545c6ae722f4faca5f5f2647378ba9308dc27d91bd1538624f459d0769f303ae818cc52647ac15e2af9bec6476a232c1ae81ba4b355c9dbcd37323d125228a53086e0afdc98c95f56e12a48843170e9cae703f5001b52da42c0ac9d285c8a13ad720104244f19c30b38ccd620ef8453401ca0feebc8b58025bbc6e6c2c788899871d3a5a363d51d8991b5cb5085f8ad525a71e985b3de +83599d93f5561e821bd01a472386bc2ff4efbd4aed60d5821e84aae74d8071029810f5e286f8f17651cd27da07b1eb4382f754cd1c95268783ad09220f5502840370d494beb17124220f6afce91ec8a0f55231f9652433e5ce3489b727716cf4aeba7dcda20cd29aa9a859201253f948dd94395aba9e3852bd1d60dda7ae5dc045b283da006e1cbad83cc13292a315db5553305c628dd091146597,19e39f7444a4a0e1c003631423a621c055d0e07f0e11ef5be1836b71690cb0de1565684c355ee9f2e6e65983b8101b5100f39157ddb8c8d92c736604693abc56491c58cd66bd66498143554d0ce34d601072bf9d0e18ea1b018a7ed9a65edbd0b81212ec13ab745728ed3a328ea157b9c4b3195f8cb8bad94a977015b94fe8050f37a0bc14e58eec7654b336a9e30baad27c441cf8afe093132234ce47ce3fb3722990f6c5916468b50a13c611b194d148a151b9ac97a89539d1efd2f9c6f72f56a8d22a557b23ec7d932a6e41b3f2c177ca9f2ecc2a1ead4061ddfc04ab1198db0e26c4b00301e35b18754df79332a46190ecf89c0da6834731cd19e2c8da3a09ed16813d2a41f7a0a4abe02c93f7307fec1537aba546865a3130d38ecc496e548a8ebd2858ec00a57e15e307c1a35d1355b8b97e9dece5a63ad7cbc97b30f2c9de69e4975dbacc31e04f15a8c02e5d23ed01506aefee60a449de20c5a50f1208097bddedf6d2cb34036da708ba53dff7bd6a1e41057e05bb57b3f7561979eb69c40348def728bfa8382f5bc8db63fbc08e6506ad80bce0c71fc94036eeab1c0c89a2c8af4002bd15617834a901ffa42aa249f7ea700e6ff4b211f7b052ed5bde9b242c9874ecf39b318a3713f1dc3066425abe76c4ad47f43ecfedc86a45e1e93544989ce7adea7e4cb3cf91047c4f9ead7c98ae963f34e99874b4002e3ff1 +2be9bf526c9d5a75d565dd11ef63b979d068659c7f026c08bea4af161d85a462d80e45040e91f4165c074c43ac661380311a8cbed59cc8e4c4518e80cd2c78ab1cabf66bff83eab3a80148550307310950d034a6286c93a1ece8929e6385c5e3bb6ea8a7c0fb6d6332e320e71cc4eb462a2a62e2bfe08f0ccad93e61bedb5dd0b786a728ab666f07e0576d189c92bf9fb20dca49ac2d3956d47385e2,18af27fe1b4ae8a470778480f2586a370c93640bcddc33453e6f3ea1346b5a4ed3ea3e2ea43b143a22fc66501dd52df724c0e8f222380b4ba8bc23f2967d0a56ec241a0574e2783a461098f263533389d503b5d8550c8f60fd6fe953c5631635b6990434f8c68f8e9ac3701b3600c2d80f5b12d14218481904d1f15a776cfe1fa745103b995f9ca8e8e2ca062c5a3f1fdc848bfb0de4a47eeada11c51c743cd15c32bf921d07f242b83086660605b29fc36ae394c215251b49e9777a93ad91179cfb0551e113dc372f992674adbcc2d90aebc572b4c82b454ceb33910b60cf81b1ba558c2e01ec1d837fee34b86124e15d7beb7155e5456dc94d2427f7d916b9c34d24312eb2610a48002415182037afe89b29ddf5dd7e70b28bec4a1f3febd72ccfee8360e838fd787d0aa2af3a502d645433aeb1cff47e8e6769834cf0a2a85bafe9a89b43302bbc64c88ab6fe4712f3181a056921f6ac281c872e3eb21590c50b915f38172849cc8415bad8161dfe0a39c2532a34551441d78825fe7904b3febd8f645be5aa6f7dcc6eef96431086781c17615141d4159d6da40a3a5c22631bddb7f00040f0d39107bb366d82747851548f3ed3dbd028e3261561c8d7fcc077d3905ff42bf3caa9e351207137f7e8271ee970117e56d30b35294e8b91588dd9d9900274dba4108be1595833284047739dc4e90f9e20ba5efb2b736de6548c +ca76d3a12595a817682617006848675547d3e8f50c2210f9af906c0e7ce50b4460186fe70457a9e879e79fd4d1a688c70a347361c847ba0dd6aa52936eaf8e58a1be2f5c1c704e20146d366aeb3853bed9de9befe9569ac8aaea37a9fb7139a1a1a7d5c748605a8defb297869ebedd71d615a5da23496d11e11abbb126b206fa0a7797ee7de117986012d0362dcef775c2fe145ada6bda1ccb326bf644,ae82057ac5ea69cc1b5ebac395b0eff26850c394af8178b55ad808879ad634569bfd8d0c5f34f9a3b26821f63082c5d2c322f347fa6976aa88acfa9ed8393e126f7f47dfb523c0560da5357937a74488b51fa67583c7a7e1230c015fb5f233e25b744f2fb6830278b123f7784c4f6070c8f905f96486b2d5fe137be8d57150f47cc7dcc0011fd99f35df4d9e15f0f937762c87153ac17645ed67581b38e2b34899a7d726a9ecc1cf2e5198ed5aff13f2544aaa1a069ce8a30cb66e1b984002d20f769c0f94c95f99f914d32402741d5c4d631b9d6e561d32d1adbd1f1dd692bb89f48c6bc4f88b669fe4bd2922ce6a3184605053322952e113c98b330385d6c4b6527303563dcdf099bc2102f915ddf3be0989ec8bceb029ce61974ac41a26d6dc7f53405a4f3a9130c5cceaf71f828b3f7f58117eb476a46263423f68ecc3427d9a94c292ef7c4c1d67b323fe15f69894df362e54b441ba5c94d3e0b56b772afb5fcbf8ce62647dffd78ba7f48dedd2e457ae9fee60580084a05f318907dfb90faaeb9f4d9c160259a6f8523af77c8cd8af344f41dd511e46c699a8f9a5a85eaca57780005af313705820d8051d780506d02a09b04470398d0ad323adbaa8b3dbf61af68d9fd9df29a76e0a37678c08c9d102ba960db0b5d20b6bcdad7750d3f8cde6e994267e190d7f3da06c36cf7539b6b574034b43f55ef8dd370f727b97 +f76b85dc67421025d64e93096d1d712b7baf7fb001716f02d33b2160c2c882c310ef13a576b1c2d30ef8f78ef8d2f465007109aad93f74cb9e7d7bef7c9590e8af3b267c89c15db238138c45833c98cc4a471a7802723ef4c744a853cf80a0c2568dd4ed58a2c9644806f42104cee53628e5bdf7b63b0b338e931e31b87c24b146c6d040605567ceef5960df9e022cb469d4c787f4cba3c544a1ac91f95f,39b12fe62b75d707c8e18fe1c8cd23d3c1e15b7f46ffcb24c70a1d86604fe6bbc36282595346a3374b0b2305f60cebd77de1125373f5230535ab0e4ba011c6154f65216ce58a65856c7ef60912877e44ed2527c3038ca202b5445e97bf817bb6419725abe41ea1529b6ddc64920dd8396a7fe3b26054c09e310465bf65aa7b56b1877d949dda06057b7373023eb09e4ca1790d66a773bf34f1b9d4011322e08bbb7139b1750278c2dce88626ab16813803e320515640ddd9d6a7c5b0dff8fdb445cd65d6bb454edf83d6bf4f3387cc98e381c65ad3811c8dc3b6a42c203fd2ad6bc464783b073c1a9d37c1d29f85061e9c426dd195a98df3eb0c258421962857ef89d643f8bb18db27f339ba178e85144040bbefeeb1160882c3ef2a1c4950873ac4e5c853e48dd7788250dab58a06beee1903c2e68ff0f8d7e8f55aeb58cb0d65f5e74fb5e301bae2258314d5b82e3c0d7c7782aa1b34e80bef2eb258e0bd322451097b0df4532a717e2f0fc166817e2a9e24a318e6a4db618b6a8382a1bd1a600918ca08ebbc224ae9a7c1ccc8978759f512d7a97e4d1f05173b33f670bf3c40e2807128f752fd2995ec3a608915754275ebd215821a4f04ad21dd823341b15a484d0c12bb3d829bf99e182fe774d2efc726eb37638cbbb521ff14e10d73c7ffbbd8b79eb86470da14236c087ec3bdd336e8244e780454da1a8e70524a19da +25b8c9c032ea6bcd733ffc8718fbb2a503a4ea8f71dea1176189f694304f0ff68e862a8197b839957549ef243a5279fc2646bd4c009b6d1edebf24738197abb4c992f6b1dc9ba891f570879accd5a6b18691a93c7d0a8d38f95b639c1daeb48c4c2f15ccf5b9d508f8333c32de78781b41850f261b855c4bebcc125a380c54d501c5d3bd07e6b52102116088e53d76583b0161e2a58d0778f091206aabd5a1,939d443f3aaf7809342b2ec600a9d1a47e0c4195c9e1d95ce22f95cb98aa970f4fdd29a7ec9de471a1c342d4830d20dfc5abfa98f8bfd4cdf752e00bff151d7ca44d5bbe7ac18a9ecc1157354b2055ab08b1ae7b304623d643f6d471f23a82c2e1c67f11d527985208c5494138815c3cf6227a6a6facc9e2a1e3d58b32e296415e5889e58e1dc8657b0324bd1eac60ff8db83674b75683348d69978f04697a1d1d3e6d29d02094c277cf034d8203dc4d705df8eab7046c4811c18f2ec906b735bfd1c2aa3306fa0c9aa47e160b6eab89e0b390f37e53b92a1a160560e9a30ea3f005d100f0521aff20a2de0ade53bcbefc517647c81ab8684b2754fd62e5eda0ebbf56aeed4f4992a0fd4d26aec29bd186b2e254da07e1c5ad03f8194ab350510998a3bc11f08ef33c61069d1cb7d271f7d7c799057e6c2acc1d3fd8dd666e1b2c2e15ca2f99e55163bb01bca7f9d53f6389704874b3e5dbe6e74d91f110cf8a4d5eacc7a519f664c962b11a48e022cf65d4db4e4e506951513d83669c786fdf84a79aefdad75414a6cc82ea84eb3a173e887d39230631b6cc2ad26c55c938c6c82181f57820fe88dea96aea2b20e330c29c09a645134472b1b1303b1f46da40901a63c079689db2c84e46fc548270fe88a4a2fb5ea27c58a4374f72849b9c5c7c18ae2075546868a05eedc3d867f9601c5c8ee585f14a1e3a84e2fe9a1a99a0 +21cfdc2a7ccb7f331b3d2eefff37e48ad9fa9c788c3f3c200e0173d99963e1cbca93623b264e920394ae48bb4c3a5bb96ffbc8f0e53f30e22956adabc2765f57fb761e147ecbf8567533db6e50c8a1f894310a94edf806dd8ca6a0e141c0fa7c9fae6c6ae65f18c93a8529e6e5b553bf55f25be2e80a9882bd37f145fecbeb3d447a3c4e46c21524cc55cdd62f521ab92a8ba72b897996c49bb273198b7b1c9e,fe0e80e36e66e0610581835d69a73908f1d951a81de93fd2bc5f10736def8a887eefede8bb6074862eea4bb0f131e48d2c3fdc8b8b8b93aef4c06bf97214f4d0c9000940f81664e04d88316f3732b39e7f9685be377b90fd7343947e7a79fee7bdf5757c386de6d02035fd4082735ce2fe898f18bdf00f3df5bd160d792d3a156584eee92b273f9a52ed221831942eb0f148dfbbdbc21960064d0e9e1cfe4e08c7927fdf1f0956288419b0372d3dff7d1a2528062d31d97d17f7f8cb09ace01187710e9dc2cd842cc8c09a0d1fe34424283fce75e64446608cae796c1f6385f989fc93b31f1edc36bd2c3ef3b71d14f25048b2e30a5f279180ff3fd0b8308ca93f4d1e72f7f45c7313ab6315d1f0b198f8d5b47742e94edbd33643397661391a82832744ef99cab293f26c8e9b0f9d6c9c82beeee0a4b4e6ed3ef2e7395fef4222f3df7b032ea28430478c038e45d36379dfd182877f827d86081647db55b2a05067913de694f84ee85bccb1f60902f787ce27407f14c445eb5159bbf643ef6195df2f23b0bc41ed595665d47b91223740709dbc82a86e35f615897bcde5f597fe05047a6cefd2529394cb85c4945f4188a078693c56a6124e040070771a4e509036df1c9b24e2185908a43e4ff81adc7d10d5578b00a6db9fb56cea6d51590b1cda9bcee86cbd8263557aaafb7f81418fb9dceb0dd67ee6ee7bc761920ef784 +4e452ba42127dcc956ef4f8f35dd68cb225fb73b5bc7e1ec5a898bba2931563e74faff3b67314f241ec49f4a7061e3bd0213ae826bab380f1f14faab8b0efddd5fd1bb49373853a08f30553d5a55ccbbb8153de4704f29ca2bdeef0419468e05dd51557ccc80c0a96190bbcc4d77ecff21c66bdf486459d427f986410f883a80a5bcc32c20f0478bb9a97a126fc5f95451e40f292a4614930d054c851acd019ccf,083a1eba0ee14492af390762e0673f2b41c1179c8616870fa5aa69c40236a6cff19f322a4fb8aebdd659c5ffb5f1a953e65fc88c42c12e37fbffd6184035f0f31ad80f7e257fb2e898c9e5daa5a20603a0ea41fae59e7684646a826c4501f0a7a8c622cf5a27d37e998ed954f0dfda36a86ce59c8a8df3da65da575df05419269438f0dc0f41fb34064e48bc4efeec93bba805b5dc97f7aedff9e08e3d4b7e2aaf58747255f09a4b53658d7ae61d97ef42396161cbc2080dc7bb7392bfb348aef7f4b2925cdf9f641f3bffa3f140c0142d0e61cbe3d1df06b016579a748b56c89d5ba88466db79e891cfa7b70532a4d6649c4176fc21531f62f7baf5d9ef2976227ed6eb614dc44ca99f9580c82418ff886e169506f8bbed568faea7ce2551346efcf70fd5c32b6a30572bb72c87c62b8992edb3db0b4c3ef8ca466b5144658bc4148909bd8d9e1ab5ce3a1801d15f93946217ce9d8c0ed536b3c2e75c17b7fea2e99820c901e80efeb0ff7fb8226cad685cd768a41b8cde2c5cc8bc44b673ce5c44f63840c99e557f3b45c9ec92981cfdb3e20ee040af13a92df41e8a0877d0559f6ff5d9dbca2f53a4e2a8b47218cfad9ca6ae3892f21a0d9c0fe91a4f027bc25985947af0c906537e827b3c79bba1f37ee38f2897cbe9aba9438cce9d972ec262d358c33e2e6f2f814f0e28b4709c2ed119b50594be98f594ccd2b7d56f03 +fa85671df7dadf99a6ffee97a3ab9991671f5629195049880497487867a6c446b60087fac9a0f2fcc8e3b24e97e42345b93b5f7d3691829d3f8ccd4bb36411b85fc2328eb0c51cb3151f70860ad3246ce0623a8dc8b3c49f958f8690f8e3860e71eb2b1479a5cea0b3f8befd87acaf5362435eaeccb52f38617bc6c5c2c6e269ead1fbd69e941d4ad2012da2c5b21bcfbf98e4a77ab2af1f3fda3233f046d38f1dc8,af0ff42ee50b300f202648fbe2dc08423944429568354570f787b96531a0045c76189e453369381cb7b0a537b9ec05aa22679e96c7bd7ca55793ddc73b6c3faa3a0d2b03d7561d321fcb377a1ba87c098d9fcd1c03d7b7bba6262687d71b1b608bf1486946739a69dbe87b95f0e7010103af17a6b0c50db308de00442641b51c5852e91e621133eb561c24655c9d59c22b6aea470e4d23535046fb88105e7ddfc08339e99d8a750b641e81eaab46a18cae3efaa493790a9e942eeb6990eb0e14beb6fcddaaa0bdc5d67bee8fddf1931201f18d0b0ea4227d1e89bcee6c293eeac60d3a724fa6fdda3af62d5c4c5200e14e2d40f3e031e71a8de27ce3d3956cabe9c6a5bcd67c0fe25dbbdeb5720b823777815ec277b594c914f07c989824cf0b1060ed0d4b3ece3fb65a5ae726412e6eb6fcf3047c6326922a0bd1ba7604830dc4d4981ff12b0364435544d4836505719eef8bcd246a326ca1a756193fa0a94ebe98a632ce5a0d88e115a4ccd1b030ea7b1651f43f22d2d2a530e2821f2380857e916920fab974aeb69fdd7c3af313b46f2dbd14d5b4bea514041e015ec93a6a633bd6477de78b51e592b3d87a708b831a37b70ac70730c606a7c880ce3fbc11b727e25849f2be6586d32cf7f31e20a739ccb25b62c03c1db5afa7b1c00b003dd9c5bfa49606830cd5a9b9204e1a51efa571688496d5a49f4733daaa295aee26 +e90847ae6797fbc0b6b36d6e588c0a743d725788ca50b6d792352ea8294f5ba654a15366b8e1b288d84f5178240827975a763bc45c7b0430e8a559df4488505e009c63da994f1403f407958203cebb6e37d89c94a5eacf6039a327f6c4dbbc7a2a307d976aa39e41af6537243fc218dfa6ab4dd817b6a397df5ca69107a9198799ed248641b63b42cb4c29bfdd7975ac96edfc274ac562d0474c60347a078ce4c25e88,95d216d4fb11c900cb83674fcd99d4a0b0909b307a2020bb00d6d6a5590b6f82268d377e255bddd9179249c3769ab3ea09d9357447e99f9c8e924fa8c39b378790cb629c46c914ec79bdb4aef7c4d0ed5092b620a3cb3bf6d19dcb0ed4ecfdafc9c049e7a8edacd6c91a3c15d7587c58669e0ac51e151b613503db2afca0ae81782ca58bea22467b9fe7cf5f095b376badfd9ebc0bdaedbcc0832d80aecdd6919ab2d31646d9426cc46da1e5398dd475e94fdfba98129c8997ab4ede6a204c17caf9b1691160fa4362909b1c1be81420092a8f5005a3fcd26fe0fcdead650665e4ed9cd22db75382d898075bd2e68d240e13bc340c6e4a59ae944a626349a3e27f9c82f4dee5b593cbbeba0a2ba46a5c0febc5290675b2fb636ee868afebe35f7bd08f1137acb12c6d8376cc8e737827f199c899b3d8aaa937349cc04b3c64691931dc13f10ec5c57f4d5a13a38e26614302c23e30f28ae09669c4a01f7fac9ff0b2e1068343862364e799c63d74c7bfbc5f7cffe79c24a58bc2ce1041045fb01653157c9945b626b3cd315d9d25cb0b694074ae8f29d372067c308f6bf0c44cecbe47e5528e0ef9e373db63e554fda5212e35898975d708652ad71c14a51c6e5e8a04cd9b7365abd43f61fc7b3efbe60715574c0ad0bcb0c1d53dbf51172e669e35b19f333a3caedbc4e08617c47e51ab3863d61a13a8a2b2d5fb54190a0b80 +f6d5c2b6c93954fc627602c00c4ca9a7d3ed12b27173f0b2c9b0e4a5939398a665e67e69d0b12fb7e4ceb253e8083d1ceb724ac07f009f094e42f2d6f2129489e846eaff0700a8d4453ef453a3eddc18f408c77a83275617fabc4ea3a2833aa73406c0e966276079d38e8e38539a70e194cc5513aaa457c699383fd1900b1e72bdfb835d1fd321b37ba80549b078a49ea08152869a918ca57f5b54ed71e4fd3ac5c06729,c2c5a2155ab4fbd3a3997bd00ed2ea8f049205a6e0668da09e0daac49484b0168e6767ad78868347272e6d8c97eef06ad0a3cb9ff91678dec7385124aac34817a6dd435a0a88db8e19a4fc75e8f9eb34376e8c1cc7951623171db22db1cc5df9d3d607e5fb17e450c15a20a748c340a56142289e0b1ec83ce82d7706ddba124759e895cb7b91522bc46e011b4eb98927d860d09ba48eaf80d1ffdf9cca026b5360ac8c2f04e9b0c30582611b8e8085b8e986d28c330bcfe80dcf11246d3544f4ae7c655e46654dc5151242cfa7b620c429757b1d527071fee890c73eabf1bd1630dc5bb4621ed4c5c6ff7f41f4bced4d31b215dd2be6a5952bd06dadc42a355f628616db922db19cec424bfcb893f948f1364ae7be1f79413a879fa372efbd59f62fc3879fba03622cf947d0fd2c02460d1d735e41ece1a2ab970fa9784dc67f0f7c2a3a0a5460f1b31029fb65d1a9a6809b4f2ae29f3a68cc2c780d0000f0790998c0febfaa59a1a56ced99f752684af6dfce832901b998156c73e007c77bf401cfdab4e6bc582b6cd477fccbb1549c870fd6e62633b90ed103edb47d749d04c39d2dcaa3dd4793957efd12d78b73f58d43087f456833432124e312d499779cdae6332ee8d884f5719d07786a7c85a9642fec61b66834f98c25e0a802b3f84dde862d9127923e3a20e5a20e184984f8661058d53ffaa70c5abbbcab51ca8e0f +cf8562b1bed89892d67ddaaf3deeb28246456e972326dbcdb5cf3fb289aca01e68da5d59896e3a6165358b071b304d6ab3d018944be5049d5e0e2bb819acf67a6006111089e6767132d72dd85beddcbb2d64496db0cc92955ab4c6234f1eea24f2d51483f2e209e4589bf9519fac51b4d061e801125e605f8093bb6997bc163d551596fe4ab7cfae8fb9a90f6980480ce0c229fd1675409bd788354daf316240cfe0af93eb,b3cc34c482e9402ea5a209ccaf5d017bc118f61e52bedee634fd56c7616e6adaed42d02f072ab4ee1d8bccb8038b00ff3072dcd971616fd6a2b0012581638f835e5441842631d12fe303d6e533d22eab7cfcb702e4bda509c832bbb5c24ec62a468ca885ab7e4e3b951c5380a30cb6f132408d31faddec570800b8eb58aaed9ebd8a0d6618d439b46f83116715568a5957d2db94e0c2cdcf9821d86a71a96c622ba5c0f7c214375686e71f4ae74fcf5a75a6db5f8eb274e6d93b52a2a5110c0b77a1e21e599ed0abb78a93a5469747a6d1fc4e3e3baecf8ef33580f00d55cdf9124e2beedb8814c8f5d5171cf6596de35afce94cec25fe5d6877f40dac4b2d2fdaa0e98fc08db03fdafc3a4a2a98d0e865c99b766f55349b688506d7b701bb01bb06f80d6be98dd374bd84211c61112dd0b9a25efa21f9804d724154881906a7bf815f206f4aa1175348212c54538bee673b56582501a659061a157444dce84c226936e99e51252418498dfeb02f2dc665b8cc4622c0326978fa7a7a8d171d445cee519a32d81721f99df529614bf09e4273b24a6809cfab9a1e81e5280c84ed3cba6d4b232080bdd034f1895f4010baef462074898949a1cd5892aef5dcb2b09d46201509847179505980a2846e58ddb22ea9fa0fcbe3ad9dffaaa42f4fef4a9dd8391495ba470a2eb80d5992da78dcc8e893c1ba2c909cf8208a18c31ebacc +2ace31abb0a2e3267944d2f75e1559985db7354c6e605f18dc8470423fca30b7331d9b33c4a4326783d1caae1b4f07060eff978e4746bf0c7e30cd61040bd5ec2746b29863eb7f103ebda614c4291a805b6a4c8214230564a0557bc7102e0bd3ed23719252f7435d64d210ee2aafc585be903fa41e1968c50fd5d5367926df7a05e3a42cf07e656ff92de73b036cf8b19898c0cb34557c0c12c2d8b84e91181af467bc75a9d1,1a2eb5a7e3266cdadc696d082dbad5d9f73777f5b95dad3e9c6a936271f12762ff3e8d1d959abbac6933bb19d2a0125ad59477611f9f912f935d662ade6e1e40412bde3e00a99c06a4906b90855af6095dd7e6114ea48ddc1a76f3c8ffffde5ac246f5c0f854831ee7b48df6a32cecec0e4243a792ce3fce40bd5ab22838dec6155c817d272f3ad602f58ef870d0126ea18afd1f1527931c321a8d6da1bf60665d077ad15ef615584a249ecf7d3728c0e9d3fc09bf8d3fbb9d260fa4ff13bbd4dba6835590d67eabfafb92cb3b0435f26e7ec265f7e2077446e1580fd1747e871d7ad1e992c1a909e068ca3f8b8a927053cf31ef7e071d5c7b4044f2cf61ddd48e7b7115ae0cc2861db7e26302df02cad460358d06acb7e2d07615c0f3786ba02000893febd088584aca9fbe9f14f85c88943671d24e9cd0b8fa46601c2e40d3177eeb500e8aa2931473dc3bc46f71c749c281e02b67d8f0b3d012de4942b1b3c60a2595e845ca454028489417842d9a6c4706424c5c0a073bfd080e5f820cccee99cc4fd372b0bbc447c5f3f54d87755c0a59c986d98e316f8f1899821cfae312b9416a4622786b2910910b86d19692c8a7ed50d63e252a3a5655d6e49af3082bdbbd07690dc6d4ea42f8a7bc57db816929b9ff8375c4596f57d9359f9fcdf8a3fab33ae27624265296a093dbcbdea292450d345b8116b86fc54a0b4b55f12f +0d8d09aed19f1013969ce5e7eb92f83a209ae76be31c754844ea9116ceb39a22ebb6003017bbcf26555fa6624185187db8f0cb3564b8b1c06bf685d47f3286eda20b83358f599d2044bbf0583fab8d78f854fe0a596183230c5ef8e54426750eaf2cc4e29d3bdd037e734d863c2bd9789b4c243096138f7672c232314effdfc6513427e2da76916b5248933be312eb5dde4cf70804fb258ac5fb82d58d08177ac6f4756017fff5,1e67e9fbb0568660eba48d1c701d75653d97d9a94e770c355e2f3f6dd9b7c3cdc771fe82ec87befe4aab21ba7c689facf51593cb278f7a8a4d81b9ce798cc2fba50145eeb0de079f016362fde491620cb0a3c26cb5d5fb09980e783774c8fd2c9d8900ebb103d73f0bab02d0a8e2827d2471db29f3d6ee5d9d620d4d13d8925f1933b1c66869bf74ef967204238e095927961ed5925d1a271b9277ab9dd7a30de1fecd4c6bd9615618bf79850ee7e247121c928ac9be6f81d2b41378e984f4ba494180d7e45cb7abb6de308db53804bcf43dacc10ab3a98157285fbac9b183aa49ec18e98e9b40d12b022f40b213641cb2e18e3303e4c9078da836466db8e2e85962e5520e9ff66cf99f96e7699212816124313e5ba6347f99da7109940081419b4eed3f4ed2763d655a00ec6d183ca879074f237bbc49d40d598ff2bd8f47d0d69f2e41397042b4398d4fe449cf553f6096ba25c1a2185a13bce5545fd0defe4d11168bd81b85ca5b0502233c43b6e863447578eb6f074ee2eefbbe6c52d0e8b1046f304de2caf6484ac24783dd77774f0fafebac731e429dbacb0d95be662ed9c71fdd6c0e6595ca063c748ecff99206441f8e96c96063ef61d741b4d622b6ef6a6d547b738ab27b50fad2ec5c479ea8069b9d67654c2f12d8232ab8a97c83af190b8f09e2b8f62b7daa334dc8f26a3ea62a999433fba70a27b9cf7fcb61a2 +c3236b73deb7662bf3f3daa58f137b358ba610560ef7455785a9befdb035a066e90704f929bd9689cef0ce3bda5acf4480bceb8d09d10b098ad8500d9b6071dfc3a14af6c77511d81e3aa8844986c3bea6f469f9e02194c92868cd5f51646256798ff0424954c1434bdfed9facb390b07d342e992936e0f88bfd0e884a0ddb679d0547ccdec6384285a45429d115ac7d235a717242021d1dc35641f5f0a48e8445dba58e6cb2c8ea,7204f8652f37d125bf692544b8ba0c8859beae66e4b04ada5685c6b4c3c1b8a3825b2ad6bcb2f5443b4c28adf57388fcff481ca629934cabf872354e4a33942b738ccd4e1941621524e895188d2acc9efc69de7a170bc974c430b9830e25df96097b3785a2f6b86f39e59574e1d9c2b91eed2231d4d1aefbd5dcee3e5faa42472949d0d19da8980bfc6276e41ddd600ddf78e82393eee5a9ae0c87578071d667b886eabbe6757a52af9826f65e7ca8052982523f61184b5892465b3f82bae68fe2fec1577eb935309ede804163dee46efbf5c93e7a9dc3ba79cd9a866966ba1fc0a721ca4ad17364c3a4033e805616faa6075672dd6fae31a67d891646b74dd8aa916e078ba7736a9b00f73df90b09732a42e38fe3ec9f8fc907a5868ca170c669abaf99571d14771b91f46c68f57dc6215b94dc0bb03f890bde02dd41ce5d0f8f48e4fdaead1f0a05da9a456da80b82f44efa53db9899f42ba31cecd9d7ce6a5de33b70dd6427d3a9b31c83adee1ee073e06ec4238fee4ea0029876fe6eca5de76e4d32b65564efcaa326af3519eda46eb3e443a85e78a8e26d21b158328a56af40b07ad19734e341a45a5f43d1ec2c9effbc7c5dd92acef61607f3cfda8bc72d33c045a6b883972cf4fd1282a0ade3978d1803ee78bc6f6fd297ec9e3052460483dbf79e6c35afdbc10fa87d769ae6a4e2849ad112eddec1135cdec2ecfb6c +b39feb8283eadc63e8184b51df5ae3fd41aac8a963bb0be1cd08aa5867d8d910c669221e73243360646f6553d1ca05a84e8dc0de05b6419ec349ca994480193d01c92525f3fb3dcefb08afc6d26947bdbbfd85193f53b50609c6140905c53a6686b58e53a319a57b962331ede98149af3de3118a819da4d76706a0424b4e1d2910b0ed26af61d150ebcb46595d4266a0bd7f651ba47d0c7f179ca28545007d92e8419d48fdfbd744ce,a3d5cfcdcc03334632027fa1b1adb97c740f9c5d33f0b6d8468b4aa9b37a5eae697d6de7717b6f7c3e872dcc4a62682ddd76d87657096d143dedf97f2b9ba36734b9ff5816e247243b1f32f5ca122ab49647fda690b83ae0fee45625b4a2606c8e366cd5031a0c938407cc9421414ce4631477c3d4494570916bb41c60fc05ac125a3e81346759dca0cebdd763b61493997b774a582475d2261f6f8500d2c51c70de11123756eb6b958ee5f20fb4a49429358d743e4b62d76904d23fd5dac9ecbff14854bf27dda819b3f52421329b0576cc399eac734d73fd9bb8729168e35e2a3490d7bfaa39e53e54340457aec4c5c8f4c0fee9339053646e4d74ef1a1406eba208822b8e66de410cfcd49a464d9ff545604c26caa4fe84b018c69be18112b5c3d7325481078c712979dc88842e2842df19f39025d28fdf45a5dd6e8fd2d12bf27d227e79210f6266b86cdc7bc6f81db57af57aa252c5bb95a235746b9c869ba7f8c90e0ad3f5ded409947173d071de216ed1b137846752653cc6cfa3c52a32ad6ca0bce29a5b12475c049488f0a79adf5adc4510e6468e714bba37c0005a9cfa3ddb24363290a04bafbba92bbb2c2e16cdd9d40707c56f49c05c5276c89beac3b239de284867611ca3dd8250e8c7fdf522e0e84ea47a3a06554dfff6b7da13349a5f36ca447499c45da4c491dfc113892672b036507ff3a1e7e07b43fb95 +a983d54f503803e8c7999f4edbbe82e9084f422143a932ddddc47a17b0b7564a7f37a99d0786e99476428d29e29d3c197a72bfab1342c12a0fc4787fd7017d7a6174049ea43b5779169ef7472bdbbd941dcb82fc73aac45a8a94c9f2bd3477f61fd3b796f02a1b8264a214c6fea74b7051b226c722099ec7883a462b83b6afdd4009248b8a237f605fe5a08fe7d8b45321421ebba67bd70a0b00ddbf94baab7f359d5d1eea105f28dcfb,23397cf5c6041fca9f1503b12a47f1389c4c35301f1747d574b48deb270cc2fd79da5718d0d5acb78a7f30782617aa2e03b9f46736620e512a6aa4e55e2b94537a74357e5c1e6216bda724677bfc4ccac3e3dcf4ae21d7e56d55ed2efe6fb50a2222e98139dfc739fc759be57963d8427d0b5d2093cf5f42347a6d9832e1febb4576935fa18e93ddb20e8cef2f2eba33c66f1e5741171bb64c49f128a7b0a9f095a35f5a20a996a3f9d7a68ab3b0d0f84e8f4fd43078a80266377d0d7020de67e18de20656bd59b86726c99b1dc8fa25b83a1fc8b7c256ddafcc67540c1287cc377ac10d39288ce00839af31a1c078b403a863171cc669dd72abf4d48cc72af222fe939a2d75cd7f195d3bd8cf8069f6557f1fb37bc8f9b677865e0d23bdd29c9b240cd2993874fbdd5fd3b8cc57b6226c40890057994a2e13129f4613d3ed31ea5804006f5753047f1128f9b8c0a7aba719a1449b3a2d02acfa0877e81306179f9ab717ac84819029006d73d48ee55ca13a3d39ed293ad0afc8eac8f8d41971242877788ec1286ed35f06330683fe33042a6255835cd54aa07c0166350b851f98f2ad2a06fda56b180f11b9616bb51ed98a2fed5bc2f9eef7046a38754b91543ebe97b8375a81b7fe9ce58de4dcafcdf8183541e44cc96f855cad024c24ea87313dc05eaa1d933d6e238e9b3a0b9628239344e8e81b5341d615b63d881ffe45 +e4d1c1897a0a866ce564635b74222f9696bf2c7f640dd78d7e2aca66e1b61c642bb03ea7536aae597811e9bf4a7b453ede31f97b46a5f0ef51a071a2b3918df16b152519ae3776f9f1edab4c2a377c3292e96408359d3613844d5eb393000283d5ad3401a318b12fd1474b8612f2bb50fb6a8b9e023a54d7dde28c43d6d8854c8d9d1155935c199811dbfc87e9e0072e90eb88681cc7529714f8fb8a2c9d88567adfb974ee205a9bf7b848,3753866fc2d045059fa925412d3ff0fd1254724dec38e00f1096af36d0a7603903089900f95cf9bcfecec4cea14b7d80cb324c56e60569aad9e0f45d3a726f87e6f18559701ee6ae0e7a8622b45dcc6991a1ff15de6b78bbcb96f976089f26a38ef190ee0c609db54f443f5f1014762f336f62eb5f7cb7b102e99fabd87f36aed3359eb0dbf739df4eec4aac458546c00d16d412841142acd2e08caadbdde86843add14e3d28426295762e564e1f4854e7c617f48eb6f2fac79ffa8cddb09fa09a8dd73ec389285036a5244041dbd60ab71f8fb59eb73629bb4a827a7584b20c12b96fb1f0b950bd3c87117da69c7eda0c1645b6c8c81da8a6397dd821a983de84390b1ca902f135160db58f9f7b7ac9d010ce8d6bf7136270fae0d3994f80612bb12916993aa73f22fae642784d75e1cb5acdbcc20a3ab148d6f3f171402391121bb404f8f576eefc9acd1903bf9ad2cd4eb1208f143dc84643e52570d406ba31f8dc9f3283b2691f826c4adbaf431eb2f1de1e860f9b4c0153c9f002c809822875f915f7131ef63262abbd8bf4a5d9d1699d893435c731de48756c8d03c94d11d1d484dddbc5c35660b3318468fefd82778cf907ff52d652bcdf68c20349f64006c640e7a544dec1fe1709056ffd9ea7d41590f84f653ad4f7474d008765bfaeffba015de99d523a56a6c989ba11afae097f4d5fa63f04ae0917212e4eaf48 +b10c59723e3dcadd6d75df87d0a1580e73133a9b7d00cb95ec19f5547027323be75158b11f80b6e142c6a78531886d9047b08e551e75e6261e79785366d7024bd7cd9cf322d9be7d57fb661069f2481c7bb759cd71b4b36ca2bc2df6d3a328faebdb995a9794a8d72155ed551a1f87c80bf6059b43fc764900b18a1c2441f7487743cf84e565f61f8dd2ece6b6ccc9444049197aaaf53e926fbee3bfca8be588ec77f29d211be89de18b15f6,2381aa1e335043c1f7360d64c703fcf6190747a616c550f787c33a573b2f9e83de427ad8ee50610a2fbb07ac92e4f912b3e5c10001044fa2cc3ff1c2182c672bc03183af502d6530443d890af4571611df65a2fc50879d08e9d664d78d5f81d74957d38726caee5451ab88df8853cc4a034065c532346a4f0d548d65745ab649683cfe185c649ceea12d79e0904e2c059549f895dcb1ed12d1cdf00d530d4653b56ef9fcf8d3bcc70fa91397b87f34ff839d3c0deb053d46fdff9262219004961af9d03f50e1016e737605f35eded16ed51f4aa8ffe0a253aa21011dc002c5c0e0b1ac706e53dbfddcb1b02c0148c3afa9d69b6cf7a72b1f793edac9a99acc99f988ebee210ee108093ce8eed146fbd98436299b159760edf3d07bfec6a9c1d844e98dd632b1e773d93b9604cb635457e33c063991d2a6d4dd8aa72883fdd742e34eca12975afdbfa2eb997609f91cb4bd53ca40ba4793b9849abd509a2b6c01094400526c493ff33e0f8f1908bbf783e0dfd92105830947338537c9f7b6b2d193cb2923f95caf113c9248c601eb39147661f7c639fb05281e0728b916c59d98f36daec1f61fad84e7292b6a5821009fcc30ee7267969243b36134675f3c8f1f18e9c341afeb5377426bb04517d1498fa7a271029936ffbbb4248a786eab072387b991222017025bb84eb4dc084781f21251cd8d8ccea15ea2c37c89632bb67e +db11f609baba7b0ca634926b1dd539c8cbada24967d7add4d9876f77c2d80c0f4dcefbd7121548373582705cca2495bd2a43716fe64ed26d059cfb566b3364bd49ee0717bdd9810dd14d8fad80dbbdc4cafb37cc60fb0fe2a80fb4541b8ca9d59dce457738a9d3d8f641af8c3fd6da162dc16fc01aac527a4a0255b4d231c0be50f44f0db0b713af03d968fe7f0f61ed0824c55c4b5265548febd6aad5c5eedf63efe793489c39b8fd29d104ce,325a6883e6918057acc4d7e6863d245ed59957957af4e8e59ec6eca35eb380641bd39550268a68ebad703a51f9b47dd05ca25681bdc853ef0897cbd4a0da6be9e911c26e801da8f5360140fea2ee9276747e1ad0879fd741e52a7dc8f0ee3cb199826f9c1d397e150641e8ec348300ba4f7ea7746ed0e94520577fdd253e04c47223521661a308d1c996a90df8a9ad18418193d590e75f0f17fe0443b5b130c1aabe9f60e538e6193a19690368a2c17516d7febc3df95ded8445ecc260ba46156c88b5218e582fee9ebc4f28cc4171936f7c5bef008d7ad76a70be3cd3f0701791702a237160798223eefbfeed7bc108e9c793cc42f93381bb9d5f97103499bda63610303a55088fef10fee330c4f35d0a4d0f36c1ca06cd08496db0d06553bd612848212539de0d698a530dc287f2fbaddedbaaef0195e050e3968850fe8e1c72f8e3f11f24bcac475593aa28ab2cc69c3fe6f3ed03a38d8b278fd678697a3f6dfed6cd52afa4e9947ca56d1cdf10ecef90ba6ef87d9c2765f2777c1432325c464c685557129808ce3b91310c301547b673d498a41058334562074a3bd3c64fc8b02bee8ea642b12783ed71e990ca90b95b7020d5458ffac57bd93f882f3eadd4707c98591caa667bb0daee9880c3549fe9ddf7c9314387a85d308516c64ff98cce50e253cdc710927dda784deec547c4442a0818045696f4d4ba4e0d729d13 +bebd4f1a84fc8b15e4452a54bd02d69e304b7f32616aadd90537937106ae4e28de9d8aab02d19bc3e2fde1d651559e296453e4dba94370a14dbbb2d1d4e2022302ee90e208321efcd8528ad89e46dc839ea9df618ea8394a6bff308e7726bae0c19bcd4be52da6258e2ef4e96aa21244429f49ef5cb486d7ff35cac1bacb7e95711944bccb2ab34700d42d1eb38b5d536b947348a458ede3dc6bd6ec547b1b0cae5b257be36a7124e1060c170ffa,0e479e6c1c78b597de67ff30f0be1d251dc86ff0ab0f4d5c6f64bdefdcd6a77daf29b772fcab3eed9344d32bc3ed616c10f69cf4ab3b34709f3941f3951fca1a173ca2cd707fa41b8e458634377596865bef5cc8a3cf52c0ecda7ccc0dfd8aa8ce0cd7cc1917a7bb9a3bc9084afe456e5dc02569b3fa4d9b9da03b8e4b223f7cf033c1a8bbd6002b3a457c0de35a222a30a0e86f3ef9c9f255d449ce4ef5afb51577391574f8271e07ea98820e0308ee56b1eea91b35058030ab6afde356cc83d526bdae2e55b1ad4e4d8016fef14247bc7d95c34f06dab7d9ffd1a9fef761ae01f8dee1d4675172c1f0ca15361cba994ef062596bb767c52a275792f48b191b1078968c1793a9d274166db592267e1822585fcb1a9734d4b503f5e1cb0754a7d9f47359cc91e0646c4a2e754a29584363ed4c8c806797fd102d6220de1814e665409104d32be7a346d3b126fcd51f55e5625a6bcaab74f0e69ba1f75a4d5c4625e2f5ae124cec4ea6a702858a3b03cbcb0b014d3d841cd7a87d02c622f96aaf3aad96a62939602a2aa1f9d88dc555038560217baab657ee87367e05345e1612532f9b6d83043db59837e1f75d82b8149b93f1105be13bf51e20f18cecd5df87067a0716d3f860de8c998a487c8a197149e7c8af4b414217b8579c314f698fd6a3b612b2dd67ff6e3471856fd9f66799fcee14627293ea94d1c32d915cb81c5c +5aca56a03a13784bdc3289d9364f79e2a85c12276b49b92db0adaa4f206d5028f213f678c3510e111f9dc4c1c1f8b6acb17a6413aa227607c515c62a733817ba5e762cc6748e7e0d6872c984d723c9bb3b117eb8963185300a80bfa65cde495d70a46c44858605fccbed086c2b45cef963d33294dbe9706b13af22f1b7c4cd5a001cfec251fba18e722c6e1c4b1166918b4f6f48a98b64b3c07fc86a6b17a6d0480ab79d4e6415b520f1c484d675b1,0a5995025c3dd9437884196ff09c0b92b5b0b51b59d0c3c9041ab172a1685ddcb3b0324186f11e2d7dcb6851f888ade68052497bd16c4f1d98dc468d833e4afdd2a9e3dadcfd188c9b1e35ba9fb9549f88c8c7c74352a7b420c1019d2e7cdf02601e5609635ead96cc57fe29a5ad98b2fff301b3640ba441cbbed877477c0dc1d6143454456c0efea8c4038281e97c02774a7ed709a446941a2819f3372e18bc1a6c119eb24cd16a623cbf91816cf2921d2fc65deac91f3e0ef24f97ca518d167f295454af8208ab25540228a9ab1bfd0ed0c8d09ae579b7116389b9baa6ee388612f323d1e1627d1667f4e524c562b0993a807baa0e81d02241049a4c0bc8ec95701e9cb045a91c4340d8c3067686347867d4fd94d48c566672da8c89468d71b488f7d5e1409b3f1aa17b019c57d5a94c0153a887ea366253dad36e9ecbb20de67e5f09f4516daf93761700bb4e094b88ed56cf935f9d0e5454d2168fe5f5ce0682838386ad55b4c664526b48138ec270be30135ed84a63fe04cfb99dbce6b70cbdb32110f954491044970d3aafb62b5123f2b43f3b8275cd2d1034068864a94a1b63532f31d2e65b9c197e13199f86638808d17dc9e3d914ac6e078cde60a1ef9db9f94e56c29f385418aab5f5d5cc324f0b1e2b9f9cc9259971fc57a2bd18686045e04a3a74c3606b8ede2e2e49e2b3f01ceb4b4516e695388ae331cec186 +a5aad0e4646a32c85cfcac73f02fc5300f1982fabb2f2179e28303e447854094cdfc854310e5c0f60993ceff54d84d6b46323d930adb07c17599b35b505f09e784bca5985e0172257797fb53649e2e9723efd16865c31b5c3d5113b58bb0bfc8920fabdda086d7537e66d709d050bd14d0c960873f156fad5b3d3840cdfcdc9be6af519db262a27f40896ab25cc39f96984d650611c0d5a3080d5b3a1bf186abd42956588b3b58cd948970d298776060,9ff0e63d6e1bd2c9b671298ef08fb86024eecf3a41662d465d8011e44c55e4312a2f4680a92984471b885fd730a3c3aaa6329ccc06e9684350543475d8cfe2f18079dafab03b9aa1368aafd265c5ed3d0d160ef317bf5ca211642f7c86d4c59504c8e6d8ef5d52c7770659c91ae1121eabce4318d58f2644df56d18909ec977d75d27d25d291ec706a39a3eb13e49691f6c3188c300b827e3ad1f6f8088318da476d07666ae4192c08d4ab797e53445239cea485704f0266c49acd7ed67d24da7333af799b40b301aad8883703f03869628f8f1513629ff0888656782c23d43d435962a022bd19fd7e4af8be40cf34abdb1d0dbac698079312cdfd5b01d166e6933de574914a62472c5b2954740a5a26217e9a67329cf47205701d8baf5e660e231e16bb87efdfcca4e982f44cad53b2893a83dfe251ace8c49b225c3e929221d4fbe452cbbee2f6e59f7868f876e20af55f8b1dcb4ad5cce9f0b8966d51128d08698ad8fb267d3164023985f5f5e48a237f4b638437e074fa4cf83030da5846e64e03a23ed2ee12ee42646d1075b8f91b861d6daa8bbdb07fbd56ac72fe8675031c1cd0622affdfc9227f4dcbb642146f87d2930b859181cf5ad7d6afcc87bb905ad387ac8b8a7da70ce626cbe3e13e115572780d38dce4f3aa6a95641842109b9750ad3fb5f711e1f1363119bea84b4589d0b7287bb4cd094564db63251cfd +06cbbe67e94a978203ead6c057a1a5b098478b4b4cbef5a97e93c8e42f5572713575fc2a884531d7622f8f879387a859a80f10ef02708cd8f7413ab385afc357678b9578c0ebf641ef076a1a30f1f75379e9dcb2a885bdd295905ee80c0168a62a9597d10cf12dd2d8cee46645c7e5a141f6e0e23aa482abe5661c16e69ef1e28371e2e236c359ba4e92c25626a7b7ff13f6ea4ae906e1cfe163e91719b1f750a96cbde5fbc953d9e576cd216afc90323a,9ec7d516bb276ee7be68912e86fcd71ee08ea4bcb5a44b9520e84f7433811160e5a742bf8e444329f4fbe22d72f002f82459dd538d7c26401399b8882463cbcbf2457a7080f8ecc02a05f357baf6bf8de31984abbff66ad082cb995a180d7455bdfbafaa83b74cd95488cd8f5cfce16ebb2d9f08e54ba341345648d0fc557002487fe6f0d0418858698caa9fd4171ccf3880fc0a9e751bfb566ba907e13bb78a19e7d0cc543f9b7303c74bd957149bc505530b246a8d41638023b83b84beec79a91cd21d3982b7e57582780c92be8ca813218b287c280a42e73deb3a84f1027010f79ea2ce9d4ee57de696dd1d4a13f099e4e1cf4bc7cceae2c7a454775628d09fdcdc55c6b38f545566682d3546a6f6aa8b57d44edc36b0c4b9c1b92cc2465b6bc7091eb78ca0030db7d7e31805ab459040494df1120307a2de8315c3ce802491ebb0ff3f83fcf2f99d9f569d3e3f32f0caf2d7d6057ffb6183d274919b9d4b4cbeb125c9002a816a83941abb5120ad9af40a76398d31b07e464482faac767bfec63cc221db2a54860bed4d5e9405821cb176b47838249c689ff1d9990cb3cec4ef1a0d9280f35e8f23246537313b77f26d517221f0a21e7e6d4d28d88632b44d7f1c381f8e7442a71c0b0473f7bc702326364489a943b6a0cd0a8b868f21d7f26a1aa3b8c7a4c7ceb574fc2b266cd8067d83a53ad469dffca9088ece439207 +f1c528cf7739874707d4d8ad5b98f7c77169de0b57188df233b2dc8a5b31eda5db4291dd9f68e6bad37b8d7f6c9c0044b3bf74bbc3d7d1798e138709b0d75e7c593d3cccdc1b20c7174b4e692add820ace262d45ccfae2077e878796347168060a162ecca8c38c1a88350bd63bb539134f700fd4addd5959e255337daa06bc86358fabcbefdfb5bc889783d843c08aadc6c4f6c36f65f156e851c9a0f917e4a367b5ad93d874812a1de6a7b93cd53ad97232,045e2bef203b8e72121fc29e68f01176b8ad2e0f24352fe555c9f0b70ffb38aafddae1b2fa04c3bc2dabaf4bf3bacdf7658a623446fd6840536572eff9393f5ab66c080a68d2341af34aa2a13b6eb57d8dc6caaccabaea593970b4d91a3b861aee0b6e53f3263da68ddf75cde76e5bd94afb4ac78abed89788ba89804d6f1997684cffed40b3761a782e3ec1f1a1ff12f8151e91a935a088d2aa2311c43fd731cef31503c775781ef5724508b910976dd89ecbfe79b17f1813b01b82b6dcceaadd6615cfb8d2eea27ec7377f8911a39e9a15e622f3a91f88333811cda86007e57ee652797bf9177c898cd8951b8c123b8188bdb2e60d32493f4e94c34b9ff3a00893795ae0028061050e9c03a53ac787787a332dd4c75fecc1b7ac1e6da30e69a46dc94c87368c2150eeb3717582d5e5851bb5695ccb416e4d8462f0448e0d711b42f1b6fa0dbad40e96c6b69e67bb1907b460dc319b8f01591867c73655f8a28f594ea2458e163ef0d562b36580aabc8e9fcce61d09cd83bc4dec826c8f7dbd76028588bc905777ab6b5a5dbe81665971b23c94dbae8b513afd7df0b6c83469acd22cbef596359ba0203c6f320983a55274812b49e7663a6f48b420748ab10062ebca4dce4440d1ef9b72bf4e121b76075d209eb82de30c074cfff86cc28e464a6959691c66db995c279bf50ce2abecb94cbc850a33315e4ecf650ffc271dad +9d9f3a7ecd51b41f6572fd0d0881e30390dfb780991dae7db3b47619134718e6f987810e542619dfaa7b505c76b7350c6432d8bf1cfebdf1069b90a35f0d04cbdf130b0dfc7875f4a4e62cdb8e525aadd7ce842520a482ac18f09442d78305fe85a74e39e760a4837482ed2f437dd13b2ec1042afcf9decdc3e877e50ff4106ad10a525230d11920324a81094da31deab6476aa42f20c84843cfc1c58545ee80352bdd3740dd6a16792ae2d86f11641bb717c2,7fd29d970989b8f0dad5286cd8ce7f5e793b80ef8f62506f75a119fb3acb39d726cdbe6f4914f8a5930d30a0ac1e36e285aed490cd30fe63a2713ab0dd473a7a764a19a70bbd9ad5bcb2b2a0ad63a84fad80466d1c9f513d4336e3d6c7f93645c3fa30ac5a54b46205322265d3edbe4c8c58b5d8aea1856d2fa81c81e12f27eade6958f014ed3fa3c844a65321eaf484a2e7543d362627f2cbc4a83415fa3ca616b9cd7ea8cd1724f426c0161ae41ce8175f0598fe4aae91a3f12d6c8659b063ff5c64fed548c206329f0c5da4aefbad704d16a1b67a38d807e64f03a3a9dae4b464c78462b842b0dae0036eb466ac7cbda234f2de626d14764f6f49a8afeb062402cc9dba983268333225a6678d2fd9e506ece66135e6afe7a9dc3a16295f71440ed04e8e391edc134e91c1699f0d31f81fca6105f485566c13a93a2db218dbe8d64f4b2e242462a67fe3a98a785bf276e510ada824e88c5adbd9889ef2857d5347544e431603e717ec7a7d17c98a7c326c0a4a83955c7ee31379b241c2f2abe038b2357d3a9d940d875f2a5634cb47255dc92ff11ab7dac4d675e13134c24ff7b058c2f99c985840287cb3009b6cc3d75aa5e79c29c68dffd9d95e37592b6036a4ceec5e34eec8de7ebca4b80f0e103cf07d46e73734c831c0cc2b6e31c14f304d88d77d433699ffea902058f8f4ed0fc7afbc4874cd6786e6d82a96893a68 +5179888724819fbad3afa927d3577796660e6a81c52d98e9303261d5a4a83232f6f758934d50aa83ff9e20a5926dfebaac49529d006eb923c5ae5048ed544ec471ed7191edf46363383824f915769b3e688094c682b02151e5ee01e510b431c8865aff8b6b6f2f59cb6d129da79e97c6d2b8fa6c6da3f603199d2d1bcab547682a81cd6cf65f6551121391d78bcc23b5bd0e922ec6d8bf97c952e84dd28aef909aba31edb903b28fbfc33b7703cd996215a11238,efa2939b59dc8f3527c78e384b1cf12c7e184687a0c3a1fd9ffb9797d72f13df8e199b2916a6ba82fd7a914703687ee707c6f87845442deca59f08e1d5def48bcc43bb1a64744d4dd020c866627ae212e5ff4ef9f63c14d2d1cfbb404e03573f9d110001abd156754ef41a4c48e664e31b5922a27bba26d2b3ac79f57720a4190ae55a5634af6e43cdfb87450ee8cc690749a45367250a44b07e54fc1ca8ec1caccc979751544568f0117aebbe6f5415a35244a9255fb023e7c30b013d6c47de992141929f25b3a43da91cf8853ec88ba42da3b17cf27351785bb16849e6ba680745f0294a85601d5a08cc924bb962cd8b67ee0667af1e118e2e5144169da0fbf03c974ecb202ffc473315185723b57521737cdfbce99ddb81f88d81c71c5f02ac5db801437d46daf31bb9308074a21da98f6899f6280e449c1b55ceb3e04522d038307aabe964b720ab331a172a53ccef174a82f046f42820d11947d1b316edf390c86eabe22408e0008f396a0e7f3d51b9988cd2ffbc49869fe0ec03a338a1a8e0a663246a37dea111de5249196114996102223d628ab70fb7f53b842b60f375dd6779d9426aebaee547662b6962e361009c83cdcef6d8bc6311cc1760e784cb3cf6241257ebe14fd9550ec8316d95508390909bcd23ef9f78cdcb485e4c403671e5f20e7eaf4e0c06344d54e157791fc1b581aac0c4ef947accb642e78cfb +576ef3520d30b7a4899b8c0d5e359e45c5189add100e43be429a02fb3de5ff4f8fd0e79d9663acca72cd29c94582b19292a557c5b1315297d168fbb54e9e2ecd13809c2b5fce998edc6570545e1499dbe7fb74d47cd7f35823b212b05bf3f5a79caa34224fdd670d335fcb106f5d92c3946f44d3afcbae2e41ac554d8e6759f332b76be89a0324aa12c5482d1ea3ee89ded4936f3e3c080436f539fa137e74c6d3389bdf5a45074c47bc7b20b0948407a66d855e2f,97922e827163b8869d9a7654ae4532ea26f9895625152012f147be1e818df802689d96b469c8b0e9010d0423da90ab6eed2c835a01ca4c386c630a22d885b511f12799eacea96d157a4432a320f3ec1cbbb6b8efede3e92d99b1e79389b93af7acb27d7dc97cf88485de6c85400a2dd88aca540b3c921180002847b34a454465d014f4742815ec64f5fbfed6229294ba5ea89211e35327cdbac7ce85565eb8f23c4154afec0dee188e9d854ed56bca174e14fefcd0ed039b8ddac3a3242ceb72d9116482f8b750a126505397ed261d7cdfe88f8e2f4e4a80628d66a7676e28d4e68c3e97a47c3844fb06692e5f4664b8a583a1836ada9aec095d011f12b3ad6688b0039b1b74d016f1bd477c932ddc1944b5f301f4d5690e212e45d26908ba09c52d6ca22098b7a080b0056f0cb891411d0b041cea27030a2f9066aaf58ca5357344dd9aea0b0d80932e98e205ee315312d19413240b2ec4b854c21bc2dc16040718d2509515bd45b6557083677c1882d48f687ea0ea86b05cc3f5e330dd4bcc17e5b4f2cc4f2c64773edf3045fa48c53081929ecf31e84a905586d3afb3120031ff75abd8cdad7cee66386a7a718a90b98ee970864a167fa48bb7a3f78adcc2105e0feb27414b1b6c59c7be5f7509e55d561c32523fc8c1c12628ee642d9a69f7d300b49a5b6551b487655b21fdc690f865196a35f138bb8e69571280fef496 +0df2152fa4f4357c8741529dd77e783925d3d76e95bafa2b542a2c33f3d1d117d159cf473f82310356fee4c90a9e505e70f8f24859656368ba09381fa245eb6c3d763f3093f0c89b972e66b53d59406d9f01aea07f8b3b615cac4ee4d05f542e7d0dab45d67ccccd3a606ccbeb31ea1fa7005ba07176e60dab7d78f6810ef086f42f08e595f0ec217372b98970cc6321576d92ce38f7c397a403bada1548d205c343ac09deca86325373c3b76d9f32028fea8eb32515,289c52c39044bce5ce8d320e2ac43ddf8dbb4a5e6698d536e304424cddc251f7b181f58ad4948360972835cfa265e9b658f6f7d4b7bd92d68e75f0da84f47c969c7f12cf5170117b7eeed8b77e3aef06e52adbf8f0ee6ad01de3ec5e726bae631a68f6ff364baa1754d928386496010f0ee59390e041cc0a6eb8f3864087bf7ba5a57a116808bd496632081400b89ccb2a8a8ec795bf07c60951b46815e6ba72db555b9cc03caac4bb8d60bad5ec6c5e48d66f4c5b2d1669115e0f0bc80106ef06d48ba29e2899c0ef4d5c5f4e29cb29c8f578a824cd462a4018e889b67da31a90bc58178d904c43296e4d3f4977f0cc1009fe51f37b2f8979c97dacc92c8d0e0fc45a004928f96260fe2a6f27da15307af55effbac4814c9f4446253064897fa1e1747fe65e4c406a3879f8e2ebe5cfde3765f2d7a2065a6e0d38b6b6a5f9fc3ec3cb1b35d33386ea75edce250d5917a17a6cb9d1517684472fcdf27d61bd03f4bb43c3a6359286e73b67d1a618a75efc9ae2212bb507dd1bcb12d0b11fe2030bac84dec40d04324c8354c3f3c6ed79d7257b8a189c565a41f72ae3585a9bd91c9fd43184814bd64f7303607cd02b6613be736bd13b3aa8c668f91f398a8f5aa6bf8ef4d9058637faa3f0f0710ed60c2fa0f6dce8ef0675efa719eb03fea27abde60c5b381ef4026fcef49ac245483da8b9b50dadcc310cd15c61e7a0aeaa6f +3e15350d87d6ebb5c8ad99d42515cfe17980933c7a8f6b8bbbf0a63728cefaad2052623c0bd5931839112a48633fb3c2004e0749c87a41b26a8b48945539d1ff41a4b269462fd199bfecd45374756f55a9116e92093ac99451aefb2af9fd32d6d7f5fbc7f7a540d5097c096ebc3b3a721541de073a1cc02f7fb0fb1b9327fb0b1218ca49c9487ab5396622a13ae546c97abdef6b56380dda7012a8384091b6656d0ab272d363cea78163ff765cdd13ab1738b940d16cae,03e492e2e4c353a74245745981aee10cb10ecd72015fc37621d2e07411aab55daaeae78ec376cb20f268fe40392876a29b4163c3f1732fb58fbe26379f88c4388513c9e65dfb7a4b76dba139b28673ea6691096ec526de0084fbc516360b07adc853a690264ec8c6e7f200d71b593faae6723c0a08b7cac263d7f7dc5376b51a2c7c640359721fa93a950a7a1f07f366b0fcd5c79471ee237d11936b763840173710fb8cfe41da287f61d13fbb174b451f30da1a1fb0f02c2b34689a725b1f86a96247e6f48897e524e84d91bcc9f08deaf189efa84af2a32da7480ada982e579a832fc3cb1fed55e8d0d4aa710ea5b0b779cf0667ecbe9f5827fd0adf6fa6d98defdc0a3f3e84d5ae28d676ce703e1f060e4bae4c0d931f84a76c2777d71b02f0dfd3dd00604c6ebb32642a9ebe9d34601fb78ae60145e32b6ad2a362bff609cb2efcdc66781b5ae2976f0249fda97dcc06a8f7cebdb32a2849b61142a7e55cd15ff51a821d233b3c35d9f69d47abb6d2b55169aea211a67475fd48d39b6863ef6e4adae89530b0a84f6d6aa9b0475289c084ae2e6078785289e03c6440dbee352b9d39d11c9300730e4d224fe008696b8f27f6a9261c30c577b48401b2e90ed5830bd38c13416d19f9b6ec96f235f7a0571961f18c0f3a977740e9f5cc9ce62f695f9a9f797a33a2fb247a62bc635449e4ffeb2f24298bdb152e7772260f9e +c38d6b0b757cb552be40940ece0009ef3b0b59307c1451686f1a22702922800d58bce7a636c1727ee547c01b214779e898fc0e560f8ae7f61bef4d75eaa696b921fd6b735d171535e9edd267c192b99880c87997711002009095d8a7a437e258104a41a505e5ef71e5613ddd2008195f0c574e6ba3fe40099cfa116e5f1a2fa8a6da04badcb4e2d5d0de31fdc4800891c45781a0aac7c907b56d631fca5ce8b2cde620d11d1777ed9fa603541de794ddc5758fcd5fad78c0,6c937d60095b762b69a69116dde17251b6fc76117d2173e0702408bfd8a215a057f25d720fab9410bf39ec033d68cc87572c7fc8b3c920c720c0a34ff468711f32753e8e6813d9d8abc30ac3a5ea3f6509a22e01a389399fa09052465316be70501b70cebc21b5ce57fd935f7a265fb101232e95289e4234b43ac0bb45bfb8a29489e7c3410f4a64028ca7bdeb97b327193a30fcc54f1a9835e5bf497e0bbde269e3f01bad497ac3e09425b7e4d5d5a345b9cdc256683c3d73722b6b33f525dfdf21106574ed3a1b38990c0a18aeaa51621c6d603d58aae2b1d89f57e802e66f8a7122bf4c4c1df38ff9b147bbd4d084e119298c9c4af1bc6390aac20bd1db5e68eaa7361601a40119a51ef26e2328f6cd52874e6f24b3460a7d531dbc5de94b0d62c35c6f56d4e8984b20be06a248e597543e29c314d67db0b112e158321e6bc9494e14c9e33705e678af9a6dc44bb567146e6d03ae590cf76c76398a4d5bfb9f0f12cb707ec79bb52b5488dbcf1a19623c9777f30f153c3e71e5f9a4841e1f53e88421947903c9dbb58cdf75cad297755b704e6919f25ebf43520cef6d71fd41aad277aab2bbc86b997b6a35c4c1a8b8c04e6c7741e88ce198a650841997287e53cf24a2fd939f1aef79ac90dc787789ae0b344b658bf493f6da6ef59112ef76fd39a8e0cf7973e002fc7ac455cc4fd98c0030c7c76178d1edd1ab12e3493e +8d2de3f0b37a6385c90739805b170057f091cd0c7a0bc951540f26a5a75b3e694631bb64c7635eed316f51318e9d8de13c70a2aba04a14836855f35e480528b776d0a1e8a23b547c8b8d6a0d09b241d3be9377160cca4e6793d00a515dc2992cb7fc741daca171431da99cce6f7789f129e2ac5cf65b40d703035cd2185bb936c82002daf8cbc27a7a9e554b06196630446a6f0a14ba155ed26d95bd627b7205c072d02b60db0fd7e49ea058c2e0ba202daff0de91e845cf79,176c854006ac910006248f1ceffcf0bca14015b7939b0065e59a838f213b9ed46c68a377ac3110dd08ae358d4c3c926d262a4906c196822d2d2031990d1f02b472b635ebd7b48ad7469671ea85683328a949c4b01e9afdd0e780ec10f2a6eecd0524b77e6c9893416eb73c53286cd52dce11550e96b70154f0a06521195b7bf6b260ad67d85fd2d3ba79d96b3c84d2eaf96350342fb33cbf5e4dc12d7f7b6c5aa0f82ae2864a38026b6392deb539637d323c5a246ebb7a87ec7048dfcec1dca98d3239ff560598ac31d0e7229ee0a36bd7500b991badc5f7275bd650de740dae8421e1a723013c9e52af448e21919ec70fcf5d4c5fd888b96676e65b6c52d2353fe5d3d1423a73410234a2ff632cb09e922656fc233be050fbab499d3b0864439f79b56df983cc67fc460b027ad14b8e112f898771545061ddf52652dd14aa034137764dee5f896e3fcca26f70b63b37cd8d8df7106876f4eaecf211875d4a3392e09b8e4219326ba939df7500183c3f039d1586d00bd36fbb97835fc4c73845dab9639a0231c27e3c3815b4478780cd646f1157bbda472577faa829f8b13e2c8da1f7685719f8b979e895996dd05d1bc5f0ed8f8f302e38e44a0f5174fceb3253ee9cea73315a1dd655e9a6bb59a3b67f5f15f41a8e483d8c98733916638d5e8efbea8c5bba2000d2ddf330eaf3db1e9a6072e5bbfdd5fd201f8a13800e7719 +c464bbdad275c50dcd983b65ad1019b9ff85a1e71c807f3204bb2c921dc31fbcd8c5fc45868ae9ef85b6c9b83bba2a5a822201ed68586ec5ec27fb2857a5d1a2d09d09115f22dcc39fe61f5e1ba0ff6e8b4acb4c6da748be7f3f0839739394ff7fa8e39f7f7e84a33c3866875c01bcb1263c9405d91908e9e0b50e7459fabb63d8c6bbb73d8e3483c099b55bc30ff092ff68b6adedfd477d63570c9f5515847f36e24ba0b705557130cec57ebad1d0b31a378e91894ee26e3a04,f59ca6abc514df7ee5af9b918a5355cae65addca95c80866ede16594f5147ded549bb9187e4f51535d3eefc20f59703e1ef74b86adc45f8de3265207b5a3b4223c3b70e9a9b24f08c2b1f15f858763381c89f2ab14aec657e7e4ccadb9eae9348b26450e9cabf9b54a56893796b2d4c04aa2b3b741d6f85e9a8cb6fbb0dd91ffb91e9b179d5692f9c689c4315ace33c2e7934d49183a5305b8f50051242d73a225c557d787bac8894d5987c8b4c91502c295fdebb492285561286262da7a78a87f068e07b4cbf82344e6fba3c8b70a7cae9023bb004c18a446df8432c895a531dcaab8d910c5623651a362c4e2034a314f00154a421da604cbaab56b40f9f3242e8f61cc9a9ab4c91304588af9805180c8adbfcd727c20d38f2dfdc24cc1a84ffff83cde8f94359ac5d1848d3385b419eafaf09ef0317f99409f732ebaf75a7fcc74a4f0b7d038626078c8a775b1ee75591c6cf99ee2754eeeea7dc9fb382f25f55d030293d53ed2f9d9ddaecb41172387fb19731639b37e3a26af58b033e850880ffca4ebacb945f7d445983042fd3ebf4f70dc2bf0e95a7ca9da3c8f094bc937568a03486ebc127abf44d150ac6dc0b7080a41884102172d6e6b6d819ab088ca55287d6912018b5d7f4c0c2a6973e532b40f9d0402c1525b2e7e11a948a5c833efd7788b3cda4501dd7884aeacd53b503313500c3d4adaffffc69a2eaaeedc +8b8d68bb8a75732fe272815a68a1c9c5aa31b41dedc8493e76525d1d013d33cebd9e21a5bb95db2616976a8c07fcf411f5f6bc6f7e0b57aca78cc2790a6f9b898858ac9c79b165ff24e66677531e39f572be5d81eb3264524181115f32780257bfb9aeec6af12af28e587cac068a1a2953b59ad680f4c245b2e3ec36f59940d37e1d3db38e13edb29b5c0f404f6ff87f80fc8be7a225ff22fbb9c8b6b1d7330c57840d24bc75b06b80d30dad6806544d510af6c4785e823ac3e0b8,a8c3dd2cb2c0b8cd01c2550a1c20308b3a4280aaf80447484dcdfc69b5c2c2fba310272e606d1cfb61d078e2d860f1a056a3e086af9d7485611d64d1ce5f850b91920e778010a23390033dc15e372af077611c9b5a945981cd27801c9b701d892143da0f882c5d8f7f06b72b7107fbd22a4d890d1b00857fde7e9b188088ccc9a67bc12b0a496f3fac72789e7e52ed7cbf36bc7b846f0b4d3a221a8297a4be76a1658a1547b32f534fd13c466bf1803c1300593f8c53cb5530632dabc03acb369d7e87cdd61ea7db6d5980c68f00ad5d28f50b5b499a373dae132811c5dafbbedca231e74610271bcd0e733a59d5ed6a6ee77ab4ee0d64cb00ac7ec586ad30f1f3bf5066268519209a9ee408b0dbb1e6e7cafb63bca7742a5a7c78d7933b30cdce0f8b502e3666fba0c2caab6cb0826641a74c02e5f9df0616c001273487487c2eb693e8818a281cb58d10e0f911fa8eda5def3cea2136197e79a17f58e56c4262f3bddd87d9bd40aa21762c43f7091659693d2bf5d8bc03632ead0c680b6ebe53eadfed63727143fe47684188ada6391efedb6a59770da406b00905c124680b3b23d54c0255967c3ba8722ddf064f10f3253972c0a4ff5b1ba17f8b9247e2d81fa1e4f7e3bd064e71a3f4f18858d040027b45cbfbae7cc6f04c125b867ccf3513c40f008c2c961020b597f864bff2347b8ecdcbf4ae460b1915a5a5eb98ad31 +6b018710446f368e7421f1bc0ccf562d9c1843846bc8d98d1c9bf7d9d6fcb48bfc3bf83b36d44c4fa93430af75cd190bde36a7f92f867f58a803900df8018150384d85d82132f123006ac2aeba58e02a037fe6afbd65eca7c44977dd3dc74f48b6e7a1bfd5cc4dcf24e4d52e92bd4455848e4928b0eac8b7476fe3cc03e862aa4dff4470dbfed6de48e410f25096487ecfc32a27277f3f5023b2725ade461b1355889554a8836c9cf53bd767f5737d55184eea1ab3f53edd0976c485,066f28311feed21d06d61eef566deec1f88e8d99da9f6ae33e50321fbf7c1c458db1e0c85c2685e806c583336f5620f44ff35596a725d37b1a7f149b30eee6edf2c46ee8f7ff1b51d5abbc09ead9aef74188fba0efeb82df86c304bf505fb02ff05b1797a7eb3549eb9e74bf685b15fe615bc7fab569a2e8eac5136f97e39397e091f97d7c11d8e6b6390961c0a1a08d2a75d00cb679c870879c24a4ad0fb4eef187e60297668634f06b7f2d98b85cdceec842db321cc7b7823d8f332ff5ab7c44d9f862b61d3423aca663929eea2b47c9c78f890d50a4fd04079d4f77a9b303fbca8a852d5cbe0b09df7dcd2178c8450370f60ce76afeccfd3b4b346c79631439d879109357fab4ade37832d42d70b6390176fd864251fc65b695db788f535b76077e3f69b1b2bb2bd26bbc0d1273109f71199a58053a8ab6d33c9a75b8c7d4423a330d03c5bf6a2b2ce43f27536aac58d9d7ca8397bae7c6c96d7279c19ace6f7487412c7370992fafce97342e145795d7cd22f2135d627f5bd528fa3511b3efcaa28ada12b8f229bb594e802615a213d21cfda091b736daa0b18d9e77e9ad98441f23926f6c06deca62bb91f6430352e857aa1488b82820f3624be30e7abd2785e8e9d6a3cba0a926ae425253e1417ad70f80c1cfe49c730e1b287ef47fe65255aaef1408c66f622cd1b6484fec1675f1a74afcc349ef4746b4468dabf577 +c9534a24714bd4be37c88a3da1082eda7cabd154c309d7bd670dccd95aa535594463058a29f79031d6ecaa9f675d1211e9359be82669a79c855ea8d89dd38c2c761ddd0ec0ce9e97597432e9a1beae062cdd71edfdfd464119be9e69d18a7a7fd7ce0e2106f0c8b0abf4715e2ca48ef9f454dc203c96656653b727083513f8efb86e49c513bb758b3b052fe21f1c05bb33c37129d6cc81f1aef6adc45b0e8827a830fe545cf57d0955802c117d23ccb55ea28f95c0d8c2f9c5a242b33f,dc2a3560c3644c4ed659240cc9b275b7163f5c88b28839fa74fca4a055b265e8e8de186ec35097511d12f125b9edac4665efe2e41defffd4feca65386d9a5b06dde6b1ad1f70772ecc871c44529d413c603d7d8bf2cfddc72c11d3b9684cdf4696ebee1a88f939a997802aee46bbe7abe0915c4df68c43eb06a1412c690edef8fd21f94d16ec47d42168c30b8a3c2a87e348352200040cec7697835dd66a8e0596db943acd2ba8424a7d031c5ad0322c913aa9b11c4c1e09accf8b941fda2ceffac3f38bd43feb3e67d002e8d45d9c091d287a5f6c4b70a58129867c46ff1e98d402202c27e088da5063157e0be4a7c82638eb623947a59d15b1fbc965a73449711feeef521b61c4f94b7afb015185bc7c696200f10c2657e233f643c0b20a72ee57e7e17ec806b0b4a128f9f0f6baf129ccd82b19fcc72f62fa10456cbe37317bde49ba0ee9fd83559e32204387cbb5d26064127448d2f2702cb37c3ca5b49989c7b903854907e1a748fd9e589a01eeda6fb374178ce57c6027334399a7896c91fba3f8c2ec917f2fde3942d60fd37befda64909a34f5d8bdeeec6dedad93894e9c6a894637b8193895973c5dd8424326b592723c06583f683281aa90c3fb3a754ac8aef614dc30dc608ad26eaab42b4899137f4d42e4142f93706f88c8c98bb6b15e0992834785a27ffcc9fc2037a3a3b4b3c262ade59e3a6718c79a8c0c82 +07906c87297b867abf4576e9f3cc7f82f22b154afcbf293b9319f1b0584da6a40c27b32e0b1b7f412c4f1b82480e70a9235b12ec27090a5a33175a2bb28d8adc475cefe33f7803f8ce27967217381f02e67a3b4f84a71f1c5228e0c2ad971373f6f672624fcea8d1a9f85170fad30fa0bbd25035c3b41a6175d467998bd1215f6f3866f53847f9cf68ef3e2fbb54bc994de2302b829c5eea68ec441fcbafd7d16ae4fe9fff98bf00e5bc2ad54dd91ff9fda4dd77b6c754a91955d1fbaad0,5d5ae597772925f37c5d78176e15392bd53fb65b2925bf589ddf97d92ee412f2847ace1b5a4a22515c910a0a7479ad4cff5948c4a736ef021f062850383ea778389bf5f33c5357ce1d11d11de27bdd076720692737e5887b0fc6b8fa46f2675650072848e26d94d596b921280649389a9c1621037ae9d91d460bda8febda7627c181f8ebb77f43de66f9d64ef1d7cb66622e13faceebc7ab346c0c71a1faa0df2659d980ae4acf04317379b81dbf8e9206f667ebcd2a8d736766d2fc64ea442a4ba0e331e7d3ec0ab1618bd90a9b97a4ab6556eb09da3c551ac3f2714be4cb094ac454f0debd1964ecf15118f677464c60108a87e8895046269db21168e35ec4dff11487e93b49a8faee8ee6c3ff05394d1d0c9030123cbfb9576c9015c30f9da04331c995101f4589d27ce664d2d6928c803ee6ed655b661f286f12499427b0b3d4c19a870cc6065528d0d482fae121766275acd12731b127c454d17bbd32f779bdfd59d2221cc923764a023d48a109f259c2c4d9213e35411a7e4f03c1878e576f9af4b84a983f64ed1255ee7ca9a4696762701950c97f374f207acf4023c0e42651c650c330eba2a7773af833a9a7b1c9360bec7fd788db63af83b699e1bac014a86ae976f15809e4dfc8eb8225de57c97cccd0683ed0beb67b752a6bd5ef128d9bc6ad343b04aeae8c76d7a24e3025d436ecd9f03432991a19d1b1642af5 +588e94b9054abc2189df69b8ba34341b77cdd528e7860e5defcaa79b0c9a452ad4b82aa306be84536eb7cedcbe058d7b84a6aef826b028b8a0271b69ac3605a9635ea9f5ea0aa700f3eb7835bc54611b922964300c953efe7491e3677c2cebe0822e956cd16433b02c68c4a23252c3f9e151a416b4963257b783e038f6b4d5c9f110f871652c7a649a7bcedcbccc6f2d0725bb903cc196ba76c76aa9f10a190b1d1168993baa9ffc96a1655216773458bec72b0e39c9f2c121378feab4e76a,b34e968bdd16e68c71ed69202a38c554f8362fa382f1deccf89536b0d2ffa7cf8725cec1d2d7af57665496b643e8206566f8cbe4cbc42db65481750319bbf37d9def13d050b2dac53e163ac365e81aae03bdb40b67d0786edefc2b339fee7176dedc90c92b16a726e61a3e4ab5b29741869a4e8ff254d335c62053ee9fcb5bad309b11b916ede9ba5d1594b0abbcf73a7a231b4104037d10c32433f99dc35a356088f90298bb9bd150fc8252017becf06111daeeac705bccf25e8098995a8f7efcbb10fd2c443223325fac9172be8b5fef5fbccc8d9361deb61b361fbea3d5cf13f4731e8ad4f567bbef2655a79213193131020123e5fadc2782e8224208eb98c736fa9af25ea3d00cafda04eb8f0544b58b29da5d438a96914ca1d47f2a729128f60e56f5634a73133c1a0435a40fb7ff6f88105ba307b4b6479d0dcbb80a5f1a71954ee049e99b944e41ee89de4b78a78786660a1516a3bf64779df724bd82045245413cd82890340d29d07879c000934fbe4b4feda2eb4cd795c528e83ba11a92c9476e3273dd5d4553798489b8ffe76104ef154fece05e4be9775256f278deb61552266745fc21dfd699db5a34f4dae4fb3e23146db6767561f15ea776b67240c92c695ec83ee10978fcdab7a57c692861f15e5e6ae0e3dc2c58489445def81f884a50df8e78ce67c23967b27b419f36b905dc2d9ef1d27bfc94b456836a +08959a7e4baae874928813364071194e2939772f20db7c3157078987c557c2a6d5abe68d520eef3dc491692e1e21bcd880adebf63bb4213b50897fa005256ed41b5690f78f52855c8d9168a4b666fce2da2b456d7a7e7c17ab5f2fb1ee90b79e698712e963715983fd07641ae4b4e9dc73203fac1ae11fa1f8c7941fcc82eab247addb56e2638447e9d609e610b60ce086656aaebf1da3c8a231d7d94e2fd0afe46b391ff14a72eaeb3f44ad4df85866def43d4781a0b3578bc996c87970b132,2d48caa033f0273cee712401a35d143c7e91216139682a77ca775f08ba77620dd02ea885667355740363d95da3cefd3e9f8d0575a41213c1e7f2a6c4b7212dd617c9b0a41d48674b6a19c63c1ab3f2ce7f1a0fa694ca8401a0121077f281cd5d6a5424ac1d3a11aa97f88783722e68abdd3684907f63ee045d7f3e10545f33b84c30200de3b135b4be5033b854084e5912f17b14f2ac16d027fd02fcff1ae096c983f0f4fce7d6b641d2280dfb90d8a066d8cf53e2a5a1620dc50008ca375743c416c379fdc5aed3de23244de23aadc33bfd9609702da4776881a1f588ee1fd98602fb831c8d857cb73da50c99acb34dc79d0f32fabe25fefb54dbd494014a24ec55b4d4ecef9d4b7a98a8bde06e324e6b2bdbe7beee6a45e4fe8948d331561090b737ce14d302c9cb1d7ee3e78d0b7cda6fd12cf038f8b92e35f7bd6e1664a5f4f75ee569f67c41a434330dfc06f8c6c7156208a11bd6708b22f3115e5d4d99f54451d967bb7935fc937ab2ee21c3da93b1a3df94ddd600d6ae8f43a35f85794e3bdabd82d4ecc923b0bc91ea85c3a2599f492495e8aae970e1605fb642b6b93e3947b45d78ed6a563fa9d10cdff934c61d78b46aeb754cffecf00aed06839365d1a4b7d9cc5852a4f755f01723c8e3961c92f320a43ec23d8292c4f44336e78424a4e650d74bc47ec05ea8d692560206b9dc2310c893598370e5df5d93acb6 +cb2a234f45e2ecd5863895a451d389a369aab99cfef0d5c9ffca1e6e63f763b5c14fb9b478313c8e8c0efeb3ac9500cf5fd93791b789e67eac12fd038e2547cc8e0fc9db591f33a1e4907c64a922dda23ec9827310b306098554a4a78f050262db5b545b159e1ff1dca6eb734b872343b842c57eafcfda8405eedbb48ef32e99696d135979235c3a05364e371c2d76f1902f1d83146df9495c0a6c57d7bf9ee77e80f9787aee27be1fe126cdc9ef893a4a7dcbbc367e40fe4e1ee90b42ea25af01,6f7549d58e91d97f0c1243c519eb6ad2cd72ae27e3c5da2c6b92407823d1275210ed93b95692880015bbc14e72892a36d4d4924a48dbdd2e774ed36b739f587d200d9a789ff56542061ab4de006b08749c31bac057ddafa581c6f756bc3ff23bbc43c1048bd2848204588c89e6c3199ec38dc9f4bb10bcec5a5d236ab28113e4e43d529de8424f118cb14a5fb02ba721ba4650cffa35663820148e00a2a8c0b8f4c20dbbe20c146e4b5294a17c99c2df7ea62f9107acd5feeb01ecdc064f2911a466bc1024b1afe10f3dd7843bdeb8682339a95f7a0e615a216c89ae7e8a688926884f82bc2a487cb2695c658db670ec286e63afb5b244950497be33081cca0fd14a4958ae4ec94b642e3a9bfeca9481feedcee34b6c13f301cfaf882105c14f20679b5e7e4263c29397f62b094490bde56cbb1cffec550819e0add12da85935af2a9c08537ed3034d39933b80471d98b1562ba12c9b98a462093e79d247bfe4ee59cdf9f6533dae9c2abb66437b90d845b16c5318d0d12ec5ce30aa63b8a754ca93f04a3e3013a197a34dd8af463a7aae48d51c7eeedc45b5bd4f9e5be06d47c7991956e7bd828dee21a4c4a69c3bcbeb914fb93832be8a986a077fc3a990301532cedb59cc03a0efbe5ff88413f0db07481d134b77200e05341c21c43a7fc0ef20f254a4438f9f49c28136eb7ff5d64e8812d4137cb3410b2482d3289acc07 +d16beadf02ab1d4dc6f88b8c4554c51e866df830b89c06e786a5f8757e8909310af51c840efe8d20b35331f4355d80f73295974653ddd620cdde4730fb6c8d0d2dcb2b45d92d4fbdb567c0a3e86bd1a8a795af26fbf29fc6c65941cddb090ff7cd230ac5268ab4606fccba9eded0a2b5d014ee0c34f0b2881ac036e24e151be89eeb6cd9a7a790afccff234d7cb11b99ebf58cd0c589f20bdac4f9f0e28f75e3e04e5b3debce607a496d848d67fa7b49132c71b878fd5557e082a18eca1fbda94d4b,2d534dc9501c6b18f9662128e227e3c7d8bc7f6773945b8ca653bf93f9b07bfbad84f195ccfeaf35ffe97e1109212ddaf5701bf2f81a72b51a66fc1590534823172927bc3ea342a96df9b0cf5952690804c37814bad3a41849d71aace71304183a4477d313654c731cb0a9af39cac8a8e4b6883af7c4f94720a5919c2371c1ae472724f7062e47754066976b583cdff98cb41796664c9b0c763c4530fb62dc22ae7b3c6b4db593942f6144da79aac3f3cd53f90b7b634cab679ed27341c83a3f9de8763a0d083c4ea4eb3b8c189967e6970178ce26a3f2d43d1a62e4d26d61636257db145a89eeefb8c38aa9d69f0630b99b4ffaf9395a6aed9c63e78a7f8ceaf4884e4663e7c9e39f737703f5d1c73b2e846fa5af03528c7f1d1378c9ac7ce02599278455fa6e1b7bedf453ecd680a89a8c77fb727a688ac573a5ecb545218f5ddab304dfb7862194514674a52f2f0eb2151bd936974fb5b677f621ff9e92a10c76e3b6a34e4279bf2e395743ec8feee4f4bb1d951af744f9bb923a13c1d6f159f96b90d0371b135a8f64351dc8c9dfc0af38098d3a8583dda8978103b25495bfab2b144e4d82774c06c4ccebe085a5b902dc391b60035f4ea929de8a56db1efecfb928be97c23e6dacc79ef2c05d5c08f2cb3eca5cf7626f13a95f29239ac8f457dce85815ba83f099b1dce79a32c6e04280b8cefe8ec213e2375553d2214d +8f65f6bc59a85705016e2bae7fe57980de3127e5ab275f573d334f73f8603106ec3553016608ef2dd6e69b24be0b7113bf6a760ba6e9ce1c48f9e186012cf96a1d4849d75df5bb8315387fd78e9e153e76f8ba7ec6c8849810f59fb4bb9b004318210b37f1299526866f44059e017e22e96cbe418699d014c6ea01c9f0038b10299884dbec3199bb05adc94e955a1533219c1115fed0e5f21228b071f40dd57c4240d98d37b73e412fe0fa4703120d7c0c67972ed233e5deb300a22605472fa3a3ba86,4d0e55472faeda7e9f092ec4a561e835e261935ba5e6d115e9d4c4021725e7831c5b7f102f2d1494b019ffe9bf5525822c497883f0e5194b0b0989dbdac834cbfcfdd31294dae5752adb56c23d45668f370963219d3a9be504d8e93721242db7d4d1ccd22f84687e3945e2037ba24670649913712fe6b5d99bb6c8492c3b853e481ca9c32b3e601d31c60d6b5f43a240b0711fdfcfc0aac6a6e5f881b2ae1123f7568663d8415db5ecb3000aab268256888dd47c0fbb5c95aaa9450947244ee4cbcfabd76326d2d079c9f1bc4f3d43ae1d01028fc1705f74cd16132c79d3a43539d2a842df2b69243cd37491cdab57ac7e4e00350f8c08737b6ccb8a7c48dd50365a85c07a525c15af65ec3b2ac1c73aa6b3433483d5ec77ed832b73a30c672e9dbf0778dbc20ba5a3513ec93b4165a60e68717aaabed5041d9ee445611ebddc8597fda3ba05245228d7c567be1ce5d2ba75a256361e8259f43f3402e09b96a14014389b8ce19461a6512a4dd7f866e73ed26b1c454e014f901dd313d5e7214ce7a62c476dd28e4152eeee89f309161c8f494f0bee613b72696f496bb41659a3804683729b40682de5d0f17afc0fa9c27b2c96b55a05c536d283957783bb93c8f3e021a30d6051c9839dc48a70c127611449823b06f0dd460ca1dd990aebcf3fca9732d012e9650907bfc44729df2827ae4055fcca246ed3d75dc3b69ddb3666 +84891e52e0d451813210c3fd635b39a03a6b7a7317b221a7abc270dfa946c42669aacbbbdf801e1584f330e28c729847ea14152bd637b3d0f2b38b4bd5bf9c791c58806281103a3eabbaede5e711e539e6a8b2cf297cf351c078b4fa8f7f35cf61bebf8814bf248a01d41e86c5715ea40c63f7375379a7eb1d78f27622fb468ab784aaaba4e534a6dfd1df6fa15511341e725ed2e87f98737ccb7b6a6dfae416477472b046bf1811187d151bfa9f7b2bf9acdb23a3be507cdf14cfdf517d2cb5fb9e4ab6,c7eaaae0ca10aa1cb0225920a8f2288eec0e5889abeb096a98310782d918af4cb8c0a41384d8e0c408950eea95de8ca6eb87f5e86780fb91293c5d14a798dad9b77ea8a5b50e17c19ef37acc5166a74a1b37712290cfcf98ae6349dbd4842d8abec6735ecd392d59591824963d403b2804135bd46d17e26d5c498fd7111bf2782f758802a20ae6a169aa65cb0d6640396e982e30126c37f68e19cae5ff9ae3743e38f902d306d8fec8042dd914003f960625e8f2104c369cec0cb8d3847c28d050802eeb53c5af08d70ec02979019700e182b7127661df869807c16f309eb08f376c5c30b0189f1b4b32423be060402c1ec9b1e7af2432fafc09e4eff7dc6f55a52108c5599bbd5a07f433b3eb4d439d43ea79407fa711132ca9a5e2f528e18821f38b894f624ee42400832f8c85aaad0fea54261e2b55647d9ff5f31ac212e7c38cc96689c72a4f543a2567d8ea79913727dac3172f69cb16694e5d4eed7c16494a297c876c73256f6b30f88b6e180e8e62db68458f2ca416c4a0317f70a3e2465bc543fb07ae518b6571664fe9c2e49e2aad57ad933869c04a1cab60903f9ab1c14e4fb3b6502f387b30693ae4a85a172fe6813c42026de57291b3d854a191f553893b3d4a79c84b08c37e80c1abdf03fab58966410c2b8b950a275f68852f006b2b38a49e09165aae5ba74b934a6b7133e431f01099f930b5fad2790f126e +fdd7a9433a3b4afabd7a3a5e3457e56debf78e84b7a0b0ca0e8c6d53bd0c2dae31b2700c6128334f43981be3b213b1d7a118d59c7e6b6493a86f866a1635c12859cfb9ad17460a77b4522a5c1883c3d6acc86e6162667ec414e9a104aa892053a2b1d72165a855bacd8faf8034a5dd9b716f47a0818c09bb6baf22aa503c06b4ca261f557761989d2afbd88b6a678ad128af68672107d0f1fc73c5ca740459297b3292b281e93bceb761bde7221c3a55708e5ec84472cddcaa84ecf23723cc0991355c6280,cf55585ad2cf64217e5ca23319eba00c4ec74b7b9a453d1d7c144e8b68fa8eaa16b853344abc905eec90b35b681fd8a4a52460999bee62489c467151ea5c0d7c8ef2b9959fd44d171d530ad4a576a0c76b147127921817b167fb43050d7f2f552f8e77ed5161ab00907599ab80fc546c859dbdc04f2ca3e38a7593dcd22ec89e73c4924152c7d1b5281699154a3325196e97e73da29251f60bc68706885462002c126517e00d02da6a23b0ca9410eb916c19fec76de9a907447a8dc1f8304eebb6e38d0694821ee03865a5bede036e01ad74ab397afbef6c62c5dc211a47bcdcddecb48b17bf5336ff831db7ef9ce7643b285504d495161d4e864b6fee67d0efad2888c04a8992f019e52a6632f72539fd65271e81537afbe9e7795c658aa0c3b2c64eb34bdd0e5f19ea217b6ec9520fcde446c2207c9aee94a6aaff4f1f39a91927dafdc37bca8173034a54fd535bf03212995975240f3002446da1d111c0f97c92e395d96e120b958f643cb4ec52c6d2c148e6a0a497323565500ab117421c4a0cf0a055dc8b4d287f66fcf7edaf931b614589ef6c6f4684a80a9dbfbaaad85059b9399ce2617b55e04c2112b32a210d7530a3c58678b1d48ef24e2fb6b6f90d4fc605805b903085198b2c50432d9a99454b68aef0c9d0d81931123d7d14c0dcff84a54f3d4dcdc9e232bed26e2ef3334220f7b39efadab2cb9e247ee4e880 +70a40bfbef92277a1aad72f6b79d0177197c4ebd432668cfec05d099accb651062b5dff156c0b27336687a94b26679cfdd9daf7ad204338dd9c4d14114033a5c225bd11f217b5f4732da167ee3f939262d4043fc9cba92303b7b5e96aea12adda64859df4b86e9ee0b58e39091e6b188b408ac94e1294a8911245ee361e60e601eff58d1d37639f3753bec80ebb4efde25817436076623fc65415fe51d1b0280366d12c554d86743f3c3b6572e400361a60726131441ba493a83fbe9afda90f7af1ae717238d,85225e389df45458881a78277858d3b12ec5527bee0d03f41efba24671f1c245ef33bc8cecf3cfb7ea82263ef8f5f4e2c0d033d1df6ad35f1ecaeb2e40f22ed9f4cd0d1b9fb1ff5afc3ed60549f1836e325ad6641e4444913a9aeacf36067a7e6eafae4f5d1738f4b42f5185af334feee2838faea6203032f3c5c3d22863c02783d1562e12b0c73df3098cec208bc855bf84a9c231021ad5f1fbbe51a21e2bb66bc555612500822f43db5594d0d60532b726e3a430c26d9e5bccd57f83cd1ce3a5a31ddcc21dfd8a76d03a106fc77eb55edf19a46023b5d70835c865952c463475769067fab2ba2a11fbf7f29d6400d10a34b1db497b5b1d8d8a30a5c4dfc40ebdd1bdc992380074accac904dc24f22547a99e7f5acc53bb83bf94a522e595d9ab54c4e7ee052abf95fc5ff52967ca2fbb927acf7127349ba7fd26ac820c380107b0e341866a9f57852df4ce28c2989f04a40ff14033b3d36ae7d24a8e377aa40babfb8502b0b9b12df9b42c2a9982aa29697a2ed522e344814e59d91132f39aa537a521bb4b781cbcb5e1503354fe6a25072a52c54d248e13f8253fcaf93e849597c23f6952d0f7f38d1a4e7d08fafaef3acbfc4371779c6795d1cac6bf86c34fb227aaef0ab51c480c4510c9f1f463ce311cf931e8219d71bcd3fb55d3a8e9a6c86710d18f9fef6a00d1fb878069ad4a4e32653b0ee15866268d5772bd4990 +74356e449f4bf8644f77b14f4d67cb6bd9c1f5ae357621d5b8147e562b65c66585caf2e491b48529a01a34d226d436959153815380d5689e30b35357cdac6e08d3f2b0e88e200600d62bd9f5eaf488df86a4470ea227006182e44809009868c4c280c43d7d64a5268fa719074960087b3a6abc837882f882c837834535929389a12b2c78187e2ea07ef8b8eef27dc85002c3ae35f1a50bee6a1c48ba7e175f3316670b27983472aa6a61eed0a683a39ee323080620ea44a9f74411ae5ce99030528f9ab49c79f2,561a3e8d8d57e0e32d7e9ea8ab6f58aeea509cce8740fe54e8db9aabbb14ad782ba33c7f9a5007796ca2ba9089f525bcf80bcedf4c09e24e8d14f1766aa97a82b807fb1adf65430bbf5f87af0a7ff26578c97ab50148b6b15711311fee962a8b9c3d1abaf62441ceb100df3a8e588dfe3f6a356b348e312ca017c94143b3df17f255dfad5a7341b163c0562d24897fe9e4b99262fe5bf6920b79abbaf856ce38afc756a77f2bfd5c3a039c08480bac81d641f8b955b22b66b455bc0637dd49a1218c4e8ca73bdb68b8849d2148c021c75bf8470d36167ac32fc88128c4e0568724bb2d631e7fedfabb91f0343d267bf3a57bbca57c21d56e339cb13dfa5e56f3a90f0241dbc0d0d73f40ba282abd5e031364abaf427713463ec5072b7aecca62e074097bd0cb3169ddc06243f08b62527921f5fdc9332e99b2e6903d65bf809dca706c5c0f93af85b9bfeea40504a3dbb390c6a417203979687a7c86cfe5ad3f0737da1b907f8f941edf44f8367b65ea8bb92b5285a3ed8e1f7eb0fc00536c15005e4f6d9f2969ad96721bfe7a6a4824a37159ef08b0fc60c68518fd4ce54e4033c41ade6cb218cd7daee76622b711a1609168bc115ad4f6219eafbc492e35bdc446e866433c744650669294e8d1827a2500f3e30893c14820dc24e36b3b451e9459bfdcae62168706228bcd9c3ea22c4f1d0286367c7939df31e28e7a2b28cf +8c3798e51bc68482d7337d3abb75dc9ffe860714a9ad73551e120059860dde24ab87327222b64cf774415a70f724cdf270de3fe47dda07b61c9ef2a3551f45a5584860248fabde676e1cd75f6355aa3eaeabe3b51dc813d9fb2eaa4f0f1d9f834d7cad9c7c695ae84b329385bc0bef895b9f1edf44a03d4b410cc23a79a6b62e4f346a5e8dd851c2857995ddbf5b2d717aeb847310e1f6a46ac3d26a7f9b44985af656d2b7c9406e8a9e8f47dcb4ef6b83caacf9aefb6118bfcff7e44bef6937ebddc89186839b77,3340b37aedd2f0c66f2483abdc66c97b45055275231f1c7a925687b946c9135bb75aab2d11e6463073a1a8ced0ea83a42736ae85d1b99d1d2ee9aafb6fb9f4e7abacb39bc9f6d59883a9d1b0df86c259394a05842684e8a4573f1a3ceb46ece59df77259a0b025b831c2cc0dae259551c86db7de0c434fcbc35328810201903b92802cd5dacf9a6f4adcb05ec5e0629a3fa99bdf2a5cbda2af81cbd1438821a319408d67e5995342bf9bb4da85bdcf43c5a2ead9cb4fa26542eac044dc70857ff1b1cf95026b6464b96a46f3a138fcb26b525e6a09f71ed05e57adf4a3fab611cd8069e016fed7b9f2f14c38102612d66803ef0854b2c7678e870ae7be6ce43edf447e476c0ad407f0d1aeae1265521f43ad6ccf1f2e0c82e5395abfc41e08aab436a806083e246cac452513bf8e9c9e47de645055ae184d988d0d3cc1e5dff6aa98b3eed26e788ea342c6b1914269113248b15d0b79a6bd71eea6c0bf9d89698a2b943ae24f843b00b34620dee9de5ae1fa1e00677d8fd9716cf43ea1ebdbbfc2984fb1b27d444af3b2d01a86412a32090a45385a912f394373f0610af7d3c06d8564fafaad3b88c70196a1dedf247ab515e5fcc8490a889f974e12d8dd5fdddf8de55500cdaf60ff2b70e7d26b481389c2232fdee43ae99b221893fb7cdb688c06486571a09b9a9b5d2dac509ba166d0c5f5d8eac363324234c657678a0cd7 +fa56bf730c4f8395875189c10c4fb251605757a8fecc31f9737e3c2503b02608e6731e85d7a38393c67de516b85304824bfb135e33bf22b3a23b913bf6acd2b7ab85198b8187b2bcd454d5e3318cacb32fd6261c31ae7f6c54ef6a7a2a4c9f3ecb81ce3555d4f0ad466dd4c108a90399d70041997c3b25345a9653f3c9a6711ab1b91d6a9d2216442da2c973cbd685ee7643bfd77327a2f7ae9cb283620a08716dfb462e5c1d65432ca9d56a90e811443cd1ecb8f0de179c9cb48ba4f6fec360c66f252f6e64edc96b,fc9c58940908e1f78aa90e888879c9ef903cd450db94e5bee0d8acf6a4e453a32a610c6209d9f5a44ecabd634d45d04f5d946bcd388e2943d00ad8a6c4682d985f45d796abea85f419d3990bbdc5a21294970fd42b6d06363e18ef7c00250e96aa96ff730de2d92e69bd19c2ec40ba78f94b7d120cece0b0a44890cc17529a054edc97c25bf7ab6bc3c955466f656fe450bb25c34997da94258a4473128ddbbf6efba41c1843f69ac2b86a5f13ea652ec19caa10fd0d605b4f31ce170f9ff1d6c7dc064eb4106c6f4f54c88a463ea9b97206e567b370dce4dca5b998831362de38d8dcbc0fe04e87ba9ec6ca571e6a3bdc246d316a55fab5ce8ab0b71e0e8edd9790b26e3482a95c732a304c1dd48a3955ed995ddb86aa7b4e6406d08e189596bc8c5a5f61a2ad336e39d94f6188da5a1e4f2cc9593e92b0d89e12cb4e6fdf89c5c24ed83d66f5ac6bb0a6a3c88b151c35123de2f3d2d18d8d302fb10299f68f65c9ea2e5521aed6cb9ff5e357ddc1b9d4d5bd7b13dc9b4ff63941bec300cc787fa6dd0bc617f5389eb6058d05bfcaa16f08393f4f1dc5fd4226542f49f771e5e93d87e06c4e663acfb2cc365f3f79016356656f92ee52dc6dde14482e2cc8a9eda71189e3c5a431efe0a8768d014f05d45685e472bf22e359b8a6c8429d8f048314bfef49af2637108e774d5e41d6b38fda700fa2145b0235e1dba03bc8dbf3 +b6134f9c3e91dd8000740d009dd806240811d51ab1546a974bcb18d344642baa5cd5903af84d58ec5ba17301d5ec0f10ccd0509cbb3fd3fff9172d193af0f782252fd1338c7244d40e0e42362275b22d01c4c3389f19dd69bdf958ebe28e31a4ffe2b5f18a87831cfb7095f58a87c9fa21db72ba269379b2dc2384b3da953c7925761fed324620acea435e52b424a7723f6a2357374157a34cd8252351c25a1b232826cefe1bd3e70ffc15a31e7c0598219d7f00436294d11891b82497bc78aa5363892a2495df8c1eef,f723334037ce684cdebeee3f14b0d109b075ede85c489edf7981b3bf88b946e2851c9453b0e891349080405bc3b16a99879fd63ad7314fb7d26c050061d3a2f971e2a79c4b23338fc92e21466c27beabb1fe045a0a10f33516bd77e7d87c49003f1cc173b61d4abae5151d5a723c2e6571b0b7039fcfda72c149744512d5fa20db8c736a70fc009211fdbe0d7245c5c26dd878ce52da760aa90d45a5501efa74677b85a736b2860876b23424d1cc47660040e919ddee1f67314fd902a1d5c1dc69b70baea890b5691322c81b210ddcaa3caabcc770e68b1bba5b08c3d7676771608924a853fd770b2aedd8d42b1e7ca6cc0499e22646732edaefb94761405b76c3a58d5cdd1439ed1bb06cedec79dcdf38e373ed17798a51b80665c026dc2bba3eeab43cb9024ff6f04b371c07423ce2d0b2e2a800b213d9fe193403fe868180569ebd002591959b8687e09f81c9b2b8de7672d173f8ebd0794acd309a2629ed0aa7e14b58635115a58cead5be08d3105e2e65429d1f7823bd8dab99084e1d63bbc637ee37ad4627e57e15de35ca52fb8407760bd2aed167b6ea65b0c72b9b53c58a16d030a227cd92f19f14ba5ad6bb00a5775e4a091d7844ad2de44cb9d866154127ca1b1a2422483a146c729aeb85e67d597ec6f700c9dc615f2bdfa6a1c9ab038b81ad0307daeeff021ebe7abba47ba002c27c2a07611027fc69c9b63992 +c941cdb9c28ab0a791f2e5c8e8bb52850626aa89205bec3a7e22682313d198b1fa33fc7295381354858758ae6c8ec6fac3245c6e454d16fa2f51c4166fab51df272858f2d603770c40987f64442d487af49cd5c3991ce858ea2a60dab6a65a34414965933973ac2457089e359160b7cdedc42f29e10a91921785f6b7224ee0b349393cdcff6151b50b377d609559923d0984cda6000829b916ab6896693ef6a2199b3c22f7dc5500a15b8258420e314c222bc000bc4e5413e6dd82c993f8330f5c6d1be4bc79f08a1a0a46,37a534cc68de78f87b85212464858780e143a5e0dc7d46419eb17e45e1872186df8051353a6af703c167b9233612ed68e9535244dd99a613fb43f277c833588f7a2adf2ead15ada2d6ed7cca6ac786741b7453eed605c7f8ea3a8e2aa8d5688d72edf964c08542422de589d402da18e10e7ecbbd132a10fe382a7ea0a94c9e5c7f31c7bdf018f44bb6693ec64b266e1aef1a3a941e336e479efbe2bc897c93576f5f1bc9c6d4f6e948a14464287d1e82dfdd1e0cf0a68e9ff696b5d5392f4c46845df19ad5bbf2b158659e856bbf6732a9ac0ed722bb5eb2c25d35ff83b892dd30bb01fe20f49a28c52b6f28550fe56d176790ae2d96648c66e389569bc2d47d0a5775e0f6f1b7ab8f999415b3eee8aae8a3b663f13e0ede5c81cd001307ffb5aea2801cafcd1b09d31182220f52d39855e1df732f1cf2671538ae37726b3b47760830b391edbbae70b52f1f2116762c685fb8523742d90a427c991f80db823e349699456610720744bd2e4fb9c40d1371debdc7d01b2f5be45c0231d297de09d66616509bbdb854d84a2d7c140e8489884794d3679ff8e24f7f04cd72058ec305ec21823ab5a47ae9af8d10efdbe2642a97dadd44f174622597e4bd88698fa75f24314e82aca60b42f66f84602c831fb9fa73e95955151f931841f1b9de7c3f95dd786893b45ddf66045aae6533aaa59060b415fe392bc585eb4c39115cc163 +4499efffac4bcea52747efd1e4f20b73e48758be915c88a1ffe5299b0b005837a46b2f20a9cb3c6e64a9e3c564a27c0f1c6ad1960373036ec5bfe1a8fc6a435c2185ed0f114c50e8b3e4c7ed96b06a036819c9463e864a58d6286f785e32a804443a56af0b4df6abc57ed5c2b185ddee8489ea080deeee66aa33c2e6dab36251c402682b6824821f998c32163164298e1fafd31babbcffb594c91888c6219079d907fdb438ed89529d6d96212fd55abe20399dbefd342248507436931cdead496eb6e4a80358acc78647d043,60c681e527396d6c9dc1e5fd71842f760f9873621a9bf2b9b98c5df450dc7194379991d7a94397a206913ae1821259d308a5dc4d53e552dbf2287b8694f0b6184b737d5e32e1258cd7ff58e5aa9b5f37571413395b833ccc5620e37b0a64112968d4d7acffa3a66e044c36e23363f1a09eee48eb6713fbacea29ed63af0db94ed2bb22cc01b89d05391c1bc8844be8bf105448925ad2373d46d3417f920046e8e4afa0c11a8057b4a42fa4cafec592f8c2f8f1e2d603612fa38dfc3d3fd768ef7317802342e76e70d30745fbafc0bd007eff874cb32761d700c88e27dbedb57cbfeea688e0f06801847c1046cbf47e2c12ec0a4016d5e8238916da887deab825f965f936c79a7316465b48a2b8bd5889bd04580ff7dc91c50de8eb60af74e74bb4f896ff73cd3d1c55948c19dc0abc841d7bc3384ae4d60bd855f24bd2e402faf5e47d66ddd2f0533f9a73fd483e3965e967c979382f643cda535c4ae3aecbbdaa51cd7a89c8b2d9ebc0b7f9cc1c1ea355f9feccb62345be39a7d1073cba7c5c46f2163dbc1e9a6190ef620d6053b88586e73b18e816206a72f297ef946c8b302a6e3fc92a3e7a9aa87e26c1466251ce1bbd204bba7d08feb28f99cf27bdb3e8479c9c57fab8f00797938d471d53a1666156b66853c067e64695978d2e9ad5250fff6cd1491f7bac09b77abf42249fbbd63deb5919a1fc96a4e26db9d789320a +eecbb8fdfa4da62170fd06727f697d81f83f601ff61e478105d3cb7502f2c89bf3e8f56edd469d049807a38882a7eefbc85fc9a950952e9fa84b8afebd3ce782d4da598002827b1eb98882ea1f0a8f7aa9ce013a6e9bc462fb66c8d4a18da21401e1b93356eb12f3725b6db1684f2300a98b9a119e5d27ff704affb618e12708e77e6e5f34139a5a41131fd1d6336c272a8fc37080f041c71341bee6ab550cb4a20a6ddb6a8e0299f2b14bc730c54b8b1c1c487b494bdccfd3a53535ab2f231590bf2c4062fd2ad58f906a2d0d,d8ef59e48fe97b07649929b9194bcc57ead8e0ef010fd65031c18b4cfcc0933152054ae17841d06c36bc375cb1f98d83e2f9c3dfd54b88312ae71d7a00590a759e4b8d524124cf480bcec6816fceecabc9e13356f99ada2319c3eb0cc9e3bb504eddcf7d3839511ba0b412a72c3a8c49f7964a4f2eed7b814722a487e3ea6e347cdc2585090130b4dc535c3fa98e085f107fa43222b167ebdf2bbd65ace691d8c23d64de52f966983a3d4479ceac8aab177947079656a454b7ba4548bcd5762974264c7beb17dcb4fdae572bd67067f304990611e7c7f4d50bbd2b29d19c02d51918d5be6e856bfd8dceceab2ea9f82f5be53e57d4b00ac371436eff3898e930193dd1a21c5b54506c6c91ea665d0d9992be999f1dc434ba587da4ef05bb296087314c4408ce0c5851660d0b5d1746232e031934284f85b7aa38420fa6eb469171faabe88f85ce64a7fef8420ada1f9baaa4bc93d779c5a268a3f1f8a57cd2fd3b19cdd4e648e622552c1f16455f32631a3d91ec2f7a882dfd0eb13c4b85b0a23e2477b53e0fe5e174f058268f6a24ba3cfa38d090ae6088339957863733e1da245432ab0394eac05ed82428c4418ddea00c45e57a1719c7d2d04a781f8d0187c7c33117a3ff5473bd5c1211476fb4eb64aede5a9e2dbfee00671e7a9ccfef7624e1f688b77cbc755b95b6ec391d8e9dd0b65cff4e1fc22f566f0b598bf7ed6e +e64f3e4ace5c8418d65fec2bc5d2a303dd458034736e3b0df719098be7a206deaf52d6ba82316caf330ef852375188cde2b39cc94aa449578a7e2a8e3f5a9d68e816b8d16889fbc0ebf0939d04f63033ae9ae2bdab73b88c26d6bd25ee460ee1ef58fb0afa92cc539f8c76d3d097e7a6a63ebb9b5887edf3cf076028c5bbd5b9db3211371ad3fe121d4e9bf44229f4e1ecf5a0f9f0eba4d5ceb72878ab22c3f0eb5a625323ac66f7061f4a81fac834471e0c59553f108475fe290d43e6a055ae3ee46fb67422f814a68c4be3e8c9,984570a811cb6b53213280f8c06c69ff1d17e767b163f8afd76674ac018a1cafda4d94b69bcf58f3ae8a53b107976abea6c616d85aeb98bc10f29177a3590bfe943f53d2512323e5e79d64f9f1319d47d6ba84c7ea37392bd15224d94bb16d99e0e1e7062fbc3edd7c81418d816e875fbc9d7434249d89a6002bb777e367f79219bc7faca03e1b9488307dea98f304258fbcc53c58a483a6fcc78d9d9b28d99db3709e32c1ee91fe305f72b041933c8cae6f68c6229658d591ce9b1100d6974706bc21a45224778d12dfba63cbe9a1a3fe9680a34771d9bae39b4dc9c191c0a4e092f8ee92af2a02c95242cbb24580e04774ab41b07fcb6f61ecc6acb2e48a77e544ad9f25ec0ed7f440c26b8c9d25c7cf4494af0802c4b482da80251f7d1572dae337725b9a976f70bb70b5037f333d53bc3c252ad9aa13eaa7c9de1ae4b24f6c91d17a489ac9d392038b80ef7679e75ca6994821f153c62d6cd7ef58927636edf95ef6f05520025c4bbba23685a862f244ab3802ae1d842184a5f5f344d1193e1239990c331488c1a8b98f1707c389c05afa919f5c17eac158064350adfb9532eb0ac9111e256251b11d082db28206af2ac514707d956a35e26495ede4e98c2578427b48bc99b9aeb29b0fcbe44a0e51ce9bb37864dedc30bbb5ff9a055423d8bbd453a65ab54e65cdf773ca695303ffd4767193d65f26706fed1cf35e740c +d2cb2d733033f9e91395312808383cc4f0ca974e87ec68400d52e96b3fa6984ac58d9ad0938dde5a973008d818c49607d9de2284e7618f1b8aed8372fbd52ed54557af4220fac09dfa8443011699b97d743f8f2b1aef3537ebb45dcc9e13dfb438428ee190a4efdb3caeb7f3933117bf63abdc7e57beb4171c7e1ad260ab0587806c4d137b6316b50abc9cce0dff3acada47bbb86be777e617bbe578ff4519844db360e0a96c6701290e76bb95d26f0f804c8a4f2717eac4e7de9f2cff3bbc55a17e776c0d02856032a6cd10ad2838,2c2e6afffdc10d54f74afaad553cca0dda3ae5a5ede3beb611e4c1441ad4e51b67eaa2306abbb39115457fdf15fce9607ebcf0537e4f9aa2703d222a2b5fe602f87f6b54cc7a9427807a10e56be5b29bc3dd91fed0322f291d87f563baf5b705534ae8bac35d4af68a23963c040f4a1aed9b3e51124303dfebbaedbab35d7ccbd38d482ee45e261bcefc53d0a25dfca5dfb60cb2672d34cd4154873f92b33fafb8068a95458bc1166b36c3977643ba159b655654d1755fd5e396ab9690718266ef6ae670452fbe332be84750bf7a26778e555fdb59ae0f48d6ec3ff4a1feabf2ff7f1ce4dbf3269dcd91e3ca9962d88db9c527874df15f7a6db9682b1f0d904aa875d29a8885ae63e90461c69b688046fc771321fd6a61a6f1a93fc95fac72bf86ed76eebdff0cd6960d72fc460753aba0324f2d7cd7372f413d4a49e761cade4f5911d18f7c712f61ce1a5c9f07ed2b042d5c86b4db97e1b7aba57e2f2db98ccb4041a16ee21e08ace213412c6d61cd3c42bb5d8dabd7b5a945fe512f2e64c3b1817d9bc5840d6e16f7e5e2ac36585bf8107addd0c269b8510dfe11222de1be13ccc2a5ba8536887a11a0a733eb81d93729d487481655f531bf4aae624918401097ec0951f7fc535cbd85691e0e0eeeac4a5848a61ae8d6d6121d3fbcba345ab755c4e8441ed7853ff46caa48090728a7ac39496c3002baa99dc90f049efe4c +f2998955613dd414cc111df5ce30a995bb792e260b0e37a5b1d942fe90171a4ac2f66d4928d7ad377f4d0554cbf4c523d21f6e5f379d6f4b028cdcb9b1758d3b39663242ff3cb6ede6a36a6f05db3bc41e0d861b384b6dec58bb096d0a422fd542df175e1be1571fb52ae66f2d86a2f6824a8cfaacbac4a7492ad0433eeb15454af8f312b3b2a577750e3efbd370e8a8cac1582581971fba3ba4bd0d76e718dacf8433d33a59d287f8cc92234e7a271041b526e389efb0e40b6a18b3aaf658e82ed1c78631fd23b4c3eb27c3faec8685,e36806ac60d67682d34d80ad11a1415901fccc216d7548de3f2428b1963023a9394bc0e1766e279ae3509ae85d773d11dc8f11ae65c5c0d6401575cb33835081492c2b657f34514ed6b0dfcc2639fb758b5fddf638576a64bd34759d629ff133112cc5200267d8c9997e1538d602ca356e821f06ef84c3125d8466673312c6903ce166fb97fcb3eac9d30d61e13a1deabb922da6e5675dc8976cd4426edf7a7a797ded8936e0a3e721de5c4d956e8287c4b05d1210bbd36ce0e36b7f2a31945fca6bac1caab3c46d4c8245e3e589dbddbd00a3b99d8dfe33783235026c1a990f1c383cf71c755446d8f5df4a114b9004541065bdb81ab81b98ed47a1d05595ad5e168159ec620b1da439c6ccb6c4d57a2adb33a0e113fd0d8acbff5c759bffa29b36e8416eba1b8f45285ef3f496f6946ee1dde798cf8f5bb78900e59785597101dac9ec5e5f5ce0f0d6b173b6418a75be30a84140fac4899c4eb8ddcf87a0f78f22e237806e0871cda9976da0e7e42c4ad73fa49d3f9c257ed1cc6c389806bb2c32b1f7744ddca53ba515237f1588f5fa7c636360b6b8d98dafa7175db320a1a3fd1b3a092d9e8a4466971b87e5b05189829ad8d3b407f3c5e4265026c8b801c391be0f9c9dbab2f56362f820384d859eae1ed9b291f5f03f14f12d0ff8addac128988a59707facbe23814873246c99db793099e6dc79712c612d41302f8b59 +447797e2899b72a356ba55bf4df3acca6cdb1041eb477bd1834a9f9acbc340a294d729f2f97df3a610be0ff15edb9c6d5db41644b9874360140fc64f52aa03f0286c8a640670067a84e017926a70438db1bb361defee7317021425f8821def26d1efd77fc853b818545d055adc9284796e583c76e6fe74c9ac2587aa46aa8f8804f2feb5836cc4b3ababab8429a5783e17d5999f32242eb59ef30cd7adabc16d72dbdb097623047c98989f88d14eaf02a7212be16ec2d07981aaa99949ddf89ecd90333a77bc4e1988a82abf7c7caf3291,939f4a4b5e37b675450782b0e8554bd6a2821ec805ce07fd4f5a3bc3816a2305f2353ffaf15883e760a3dea064df1583cff5ed83a97a62df9d174aa80958e7649460fb4880dfa21dd7c00f373aa9f010ebd1de7e1aa73f51f84df36bd2dce6b37d7a1112c6c69efb734cce2ab12517fae38f0f3592a4693251cb4f41af7e820f1e6f432cb9f88b82fcf579b2a5fd0e9a5b3c28542abdaa9c651ef1a05a385051682b3238262475aeeb53894b8274ef37b223f66a32c0d3df45f3f191414fc0e8878e3d58852b4cdbd826d236a7010ca49c43095786cde671070ede3f5bb74f34dffaceee281042eaf3d2b39e53c25a61f3b0b2d79e4305b9a17c47787747d3cca46e88be79464bdfd16bb44ec7d862503077d3e4e3c55ba1a1fcda217d53f5c22a35f883fbd0e786af38276b341733f82beebc4118d486c32a3e7a460e24951bfbe760556e36981805b40b837b514fac3e8213937ecb018449319ad3fe1c0ec19b502e8e0399398f3f8c74601f61a9ba3021f153ed45a99bc150aa886bf090b0134da25b2740ee5156cfe28151eda24a2c758303f505e465f9d6a409651d4705a80b3ff660b2d66ad061960a3c6b81fa8d831659830c5243aae26334917660ffff3b977fbda3730313753facf7e319cdfefc064f2072af7195a70ea74db24e5fbd36d6fa78c0d0d1085d05e81a62d3449f16007d3cca29e4403dce5de01d579b +9f2c18ade9b380c784e170fb763e9aa205f64303067eb1bcea93df5dac4bf5a2e00b78195f808df24fc76e26cb7be31dc35f0844cded1567bba29858cffc97fb29010331b01d6a3fb3159cc1b973d255da9843e34a0a4061cabdb9ed37f241bfabb3c20d32743f4026b59a4ccc385a2301f83c0b0a190b0f2d01acb8f0d41111e10f2f4e149379275599a52dc089b35fdd5234b0cfb7b6d8aebd563ca1fa653c5c021dfd6f5920e6f18bfafdbecbf0ab00281333ed50b9a999549c1c8f8c63d7626c48322e9791d5ff72294049bde91e73f8,3c78c3bd49493560231a71a867bbb666536b22562f1502245991e3ff28e6f058264b382bbd61f9a16d4dda0b3a72f84606f97e7ce53f4a57c132a920fe738f818e987095c1292d9873a772e12f74bf42ee1281f408dc2ed7bceeb2fa6fd856b7a01a955350582c111b2cfbb65e26b745939e1dd4781a0265ec5ad4bdafde1ea40ad504efb0e9f34e15e1526b1873f251d33c280f9cad71bca17c4925af9c3dbd4c6798bd393625017c5d3b03666fbc3aee276ae669af2e9e10ae2d608247f3dce876a8ea3bee6ee001c3d5f847fc92a2a9cd0fddead45c1f92414b23722005aaf8a7a0159d91b77f4a0e44debb9a0967977b04072633b4588df0d699c8f990d60ff5a2e09690a624dbe88b998424620b5634acdc02c75ded6dba9431aa7a0febc01cc5daa3094cdc818b2a6ca4d80890113408565a714558b6bdc3e1735bd1fc9fe84210d7d78e0c50e8961c39725f68f083094277b7b7ed3300a1fbf42f72ac9a79ff927e4f76abf0ba233a9e82e535c32d7054078a6a4a63f1ea454c6aa33c5a2299df7becb5f911c25bd74532edc882ff4312d2ae0add4d0f67958a520011851988f9d3846c0100b4c119ea818062a3c69401344cf94f49ab995c286f441d8241f60a73863628ad8ae1cc780ea99ceff0dc18a3d85e16ca00756627f6a1b754635945120890313ee136438e01a41593b6efd26926f48309122cf1dd806c8c +ae159f3fa33619002ae6bcce8cbbdd7d28e5ed9d61534595c4c9f43c402a9bb31f3b301cbfd4a43ce4c24cd5c9849cc6259eca90e2a79e01ffbac07ba0e147fa42676a1d668570e0396387b5bcd599e8e66aaed1b8a191c5a47547f61373021fa6deadcb55363d233c24440f2c73dbb519f7c9fa5a8962efd5f6252c0407f190dfefad707f3c7007d69ff36b8489a5b6b7c557e79dd4f50c06511f599f56c896b35c917b63ba35c6ff8092baf7d1658e77fc95d8a6a43eeb4c01f33f03877f92774be89c1114dd531c011e53a34dc248a2f0e6,1a73a838fbe2aeac592433b7caabfd17068510b165896f00217a1f9e2093591a77330e656fc53d1223bc9446c11d329673b4186a85dc6091140c070843760effa56918f414a9c6f2d198e7d0c19f44ad19d1e89e25365cef40890987d255a616524ad68574c3c284825a48c3bcb0b48d41ee284b53be97127decf90402e8fe1317263d179814177b79df92b9c71efe9c3c2f3cbf8329bd9711e6393457f076c8bcf16a70e854daf7bce58c31f55b4d0e9681b39fdc19d0703a795c234016c5879857f25a64eaf0700c681e590b6d29605311f1bdbea47762bbfb012bf103d34c2cab53d53e1962ba6850b779b8673ba280b0fb79cc387e2559105ddba2884fe493b85ee0f0747436013ced0ace7280854e9bed8a42fc98dcf1ae5f845b677f4b802d01aef9529fffb6acfba047429d4de3181fa959a3b74aeb5934e3f25498ccc850bfaed46738736db5e5bda73ac03162923d310a1f91658d15cfc5268fd5bcd9ae6f9d5652558f74c1dd85696233ab9efef5ceee75f0a3489f46867b0bb1344ce24e5be88abb706cb49a07fee3dd5911dcc0486b58ff2b024f844c3773a1c03ce35f02256157a6a2e6616569fb751ecc3e4cf01ef99bb0ea61e4aefebcc65450ef2999505427b23c7cb9278e27ab58c5fa2d5b0a432a6172cb1c23dac420c92631495dc30dbe0af3b6944f1e101d1566f0a1f4ba06b82c36a7cd068864fd3b +3b8e97c5ffc2d6a40fa7de7fcefc90f3b12c940e7ab415321e29ee692dfac799b009c99dcddb708fce5a178c5c35ee2b8617143edc4c40b4d313661f49abdd93cea79d117518805496fe6acf292c4c2a1f76b403a97d7c399daf85b46ad84e16246c67d6836757bde336c290d5d401e6c1386ab32797af6bb251e9b2d8fe754c47482b72e0b394eab76916126fd68ea7d65eb93d59f5b4c5ac40f7c3b37e7f3694f29424c24af8c8f0ef59cd9dbf1d28e0e10f799a6f78cad1d45b9db3d7dee4a7059abe99182714983b9c9d44d7f5643596d4f3,674343644b198da1cb0709f842239ca1559ab643e48f8eedb373671473ca24a99a74e20ac6368b661ba1824af92985b3e7f957f9c935c715531703a6b8b5113a364f52c7df7c5488997a3ff71873fdacb1a6f4ac3b631a3341bc36cb742f8100b28029ed6c44fcb41e93b6f171a064b0f13b2f83b1790330def22a387c52cef7f16d1e398123ca0231b76494d708cc694a28e281b34ed163b7931312daa56752080c4966f8638134680cb96c4f815ac678106fb243ed3b9c9a5599d3851bf3d89cb7ba463c71a868f74d07f0c6f9c6f940f53d88e18892ee6cfe5fe9c17b92569e5c1222fee87792987663757459c35630cb355f445630826807909bb5cbc4f5c8e0bc669be6c705c12bcb2b39552d4af42204d237fac5bec56ef9ae6f60ba836ad865983df2f25a1f8c3f5df93f87eb76472dbebdb20fdf894c0167287ef1a6355040c4d4a6949f488697498529217e4532a445cded47687cfaa14db98260de9321a16fe84e4d82d2b1b0c2ee639b2aba48d85e4d06a369cdd9b03a0a846ebf83ecd5ed257876bd5e3e7838108fb3b86b6558f8bb454f1e76fabe18f3b66ca1448c1b02dab1bcd485e709ca800d5271952602e9b1bd585f61936d8dd678c900407892756a08730b891c154b33d83bcd1b2f441f1dfa79af235316be9a3e20eceb4eb23ab76d9e9564c367bc27424dae397e35ba16a8cd4ba15cfb7d9eee2b82 +3434ec31b10fafdbfeec0dd6bd94e80f7ba9dca19ef075f7eb017512af66d6a4bcf7d16ba0819a1892a6372f9b35bcc7ca8155ee19e8428bc22d214856ed5fa9374c3c09bde169602cc219679f65a1566fc7316f4cc3b631a18fb4449fa6afa16a3db2bc4212eff539c67cf184680826535589c7111d73bffce431b4c40492e763d9279560aaa38eb2dc14a212d723f994a1fe656ff4dd14551ce4e7c621b2aa5604a10001b2878a897a28a08095c325e10a26d2fb1a75bfd64c250309bb55a44f23bbac0d5516a1c687d3b41ef2fbbf9cc56d4739,791be2551f426cd350322eb1ac0e6902996546d446c229e03d74e25cdfcad06cd99bdd3658026edbe8708ad18db913057702450baa457ee767b7f6085b0f1d35a86d8c5c62a35e5a11b81d409c12c8ad5777e245acc369abb5ea9d8d9517ae7fb4033efbbbcbb70fd6cc1e55187aa8a27c75e5116eba46de2c8378997504a82390e6b085a45c5fae52fc314e876da7a7f90226cedd3c4e985887f162513bddac323e85737f3954dc58d12e986bb1840d0eb046102c01381db2915981b23dece4987661b41b56d30c35a13da21c6d2ab0bb7951f04804986dc2127f7f33c4937d27427c7b7062ef7ede944efd0015681c2fa0c115b67652a7ef1aad03c0fc4542bade7cda11f0afc57d8e2c6df0e5bb5440c2b3ed2807c2798cadc6f371a2d6f2d647936b82936ba4b19a16f599689814ac4de20cc7cd05a3452d9286b345037abd23850f22a56bba707b1d9cf299ed3ea21943882669735f69d25f240f87f3b34cd794b0c6353681006aac5ad75cf46bc6464579bf5b715ac741cd1cc06cdca6e8d579f2ff839e263c94588ccd268b1d375e5df5bfc8b7a89fd72cfbf9bf5400efef53186b50497d942963eedcd6a7426784f38f8808c50f867d22c10fa4d7dedb4f5354fe1eb1484c9f645397582838f1c78076891c5e1e44959b5c74e28d7bcc3f6acee4e5393a5ce24e97cdbe1b22ae853c567068acee03cdb3157a3ef657 +7c7953d81c8d208fd1c97681d48f49dd003456de60475b84070ef4847c333b74575b1fc8d2a186964485a3b8634feaa3595aaa1a2f4595a7d6b6153563dee31bbac443c8a33eed6d5d956a980a68366c2527b550ee950250dfb691eacbd5d56ae14b970668be174c89df2fea43ae52f13142639c884fd62a3683c0c3792f0f24ab1318bcb27e21f4737fab62c77ea38bc8fd1cf41f7dab64c13febe7152bf5bb7ab5a78f5346d43cc741cb6f72b7b8980f268b68bf62abdfb1577a52438fe14b591498cc95f071228460c7c5d5ceb4a7bde588e7f21c,7c0247b191c924335d843b81614c0f1a6a9ab1adb6c286922397d8c1b26220a35c13c7151e35ff9b3653a086da339ea1f05881f414e7a16c61b1453287f924c48ea933995000a9c9b0ebd5e8bef2c92820ccf9bb6cb0f465aac124b5e794fdbcc60584b05cc3bad06d41cf9dd5d3d3b7fe1cef634de558b6642e591bc2f69abeae61ef5da27bedf291d2a4106b3da946fb57328e827c8d4ee1c3665af79f96cc290f924348c30205d75b01bb05aa9dfc317cfddeeb7e3764589c003e2aa1ddf60a3c98adde4517e40d08cf80646205ec9fc6e9a3e1b64b2ead561957c3e2710dff720bd7e5841481d9e1a048d1c76a3e1a08bf010428c8fd2a6f2dca4fde7c8cf59c826e6df246cde77d5823dd1e0c0759af8356e89ed4c03276a37ebba73dc196e7915b57baade13a7a276aaa4456e23e4454d44260d9eadd748d4e7e1857b6d2d9c301af6118270859acc43603c79a2f6d698871fd5384daf43b16fee4ece1146ed54e1ca28eaaf2d94306383609bfb26d6634df00198e0d19500215e178d77329f7504af80dc6b727ea7791305fb38fddb1cef7f626a49ac6e34c3a6ed630f9310f890392704a2cde00cc850ff7ce9f0e1f0cb4b1d0c161ca3b812309cb3c9e9d071024d61e5265a71e7adc58a3d47a567f5b19f9e13fdcdcd34f3deb12da3151fe817e5844f5fce12805b064895671f0c3767af5a3d203d095be306d4a26 +7a6a4f4fdc59a1d223381ae5af498d74b7252ecf59e389e49130c7eaee626e7bd9897effd92017f4ccde66b0440462cdedfd352d8153e6a4c8d7a0812f701cc737b5178c2556f07111200eb627dbc299caa792dfa58f35935299fa3a3519e9b03166dffa159103ffa35e8577f7c0a86c6b46fe13db8e2cdd9dcfba85bdddcce0a7a8e155f81f712d8e9fe646153d3d22c811bd39f830433b2213dd46301941b59293fd0a33e2b63adbd95239bc01315c46fdb678875b3c81e053a40f581cfbec24a1404b1671a1b88a6d06120229518fb13a74ca0ac5ae,73f5edf85cbe959cdfbeabbe2a96a1812134ec9d3ccb72d6039d4fcdef0b57bb72a782b76963c97ae0c2713ca657b9424851dc903cc0488a169538a0db3ec58e67c4eea1c18abdb2036c79381e76f5c9f6cf1f830e0dad77d2eb90f120efba42b20b15b8c8ce8532c5b668464ad4986a281e75e4fb2cbc59abf886a8540622c2458fefd190908a09fcd7f16b6e5bcc7e950917794fed485c82ceef7fe0fe4665e0922406ae1f8d34e5f77bfc0af8b4c881bf9f76c78a233898d120981be96f67d135723407ed252432928c7f2580fb80000cb51e3ee8db02d4ef4fcdbabb704db0cdb9e31fbe76930d285702d91a74db806daccc01a15c0129a7f7d4712668ed633462a6a036a9ec2c4a7e4aacd4d62df9da1fe959db9acd0fb6f01a75f95cd9768f408aab1760edad70e936eec344e9506a586b9d42db99ef828e58d281128fb0eac1185be704cc9d16e359ee3bc1361a776de4803132822f99f7e477764c9408b045745150ab8a7481d266995c91eaca7a9497f4ca1848828fb5ed127b7a4a5fa0f23614165a8e4de1e619a40d4e55ac28075ab2ff1bd42bee19f2f9d63630cac85eeca329a0a1877e848fb2a64176411a7fcc2dd63d6ca19452780bbe4eab208b0fa7b25f21f17be1cf7c5415a04fcab687b7d4ba2f657e39d5efc17f36a1a0e3de4610788ecc43cbe70ba2ddc33abf4c335940dd53891fb6dce20dd039ac +d9faa14cebe9b7de551b6c0765409a33938562013b5e8e0e1e0a6418df7399d0a6a771fb81c3ca9bd3bb8e2951b0bc792525a294ebd1083688806fe5e7f1e17fd4e3a41d00c89e8fcf4a363caedb1acb558e3d562f1302b3d83bb886ed27b76033798131dab05b4217381eaaa7ba15ec820bb5c13b516dd640eaec5a27d05fdfca0f35b3a5312146806b4c0275bcd0aaa3b2017f346975db566f9b4d137f4ee10644c2a2da66deeca5342e236495c3c6280528bfd32e90af4cd9bb908f34012b52b4bc56d48cc8a6b59bab014988eabd12e1a0a1c2e170e7,9f303deccea9369400c533ce2e162818957e18f65c05a675404cf8637fdb57f3251fdc2844ca194ed97cd021416e764e072598106e9d97d420087087dcf5f8acf1047a7b4518e683e5ac6df1ef1ba7ec7a418f12e386dfb7a4a5edd9898cae54d645ab3193982f4363da670f1fbc7aaa1194a03bb76391a78dae7e4fff733a6f19393e9c4cc5eb3f5503d8b1cefeeb7038b0565f29d6cd4460090fc63e3c4dbc7d5d3d107f8e905b21cc9b9ef3c535aa0d8ebcf787631744f80a05caca3e50968a05f85e9cb0d775dafcc714fd6d93c8b110e58f9ad1f8077cc80427515fc5c0cf081de5fd4cfe6ea6dd2f33a2df212918a3f86bbb8aba45d808bbc2cad8dd09e7b9af1c33b0e58b988268db39118b2b2090eabadec0b84fd836db6944e8e27b5f4f3b2876077d52b4648885ef55dfff266c7264c46ef5a3cb63588d1a86c82d19449e0c93d968619ca4d33bcadcb21e6787a5e41f0d4e95e2b47e422fcfe5bd7ebc65a3023479330e989b3edc8320edc868fb122df078470b0373732e187110d3964b6e7757e84f177106c2bfac5bcc43a13dc40ba8ad5c1e772c58df0f32ff0f10348686cf0662f2f30d41ba48b121e1a146c70e6131e13080cd8b63ab79869af74e64b9899855c81d20f753f22c67f1e4de2450740944cdf4fdeded59927f92a9568db95e5b8515c07bf4e9adf952d4ad498f3dc19a2205640a8378a0fd5f +2d8427433d0c61f2d96cfe80cf1e932265a191365c3b61aaa3d6dcc039f6ba2ad52a6a8cc30fc10f705e6b7705105977fa496c1c708a277a124304f1fc40911e7441d1b5e77b951aad7b01fd5db1b377d165b05bbf898042e39660caf8b279fe5229d1a8db86c0999ed65e53d01ccbc4b43173ccf992b3a14586f6ba42f5fe30afa8ae40c5df29966f9346da5f8b35f16a1de3ab6de0f477d8d8660918060e88b9b9e9ca6a4207033b87a812dbf5544d39e4882010f82b6ce005f8e8ff6fe3c3806bc2b73c2b83afb704345629304f9f86358712e9fae3ca3e,1cc30597732904c49c0f6eaf777f82b1c33b4cf00fa720c7db8473139266e7304d81999f322ae6803736d242e7408dbb8955d8f1c0b14c6f7678cacdf2f3cc2a17208033e8c70bc5141a072f41e759ad8eedff745df0162c2ea877a7d673bc63d80c0f1db765f9f5cdeb2eff214411f95ad7c3c41f6afec798e001d31ae22432a54badc751f7f713b4a3693267be3cdd3a1dde1a5e638143a2fae59a2a359e197cf4e5e1d933dad9f99773f164173e3e818987f19d122aab725af24497ca116ec201b2482f0539ec454292df4d018e286247f8c857b53816e9623d580d69faef60009fe72f25b4609e8dad73a06c006280edb0137a25d5462368b18b8f37525c2c74ffeb4a7942683b86aca6fb1d773e9c92311c4e197c5466ce90cf01c661ec2d928ee0d35a2fcf0ef1a87fa7d298747e44dbaa4c90c655348b8c2771f378fbaf0702ef9cb4b42cd5b26016d8f5fac1b79a49f8022a180f04f8988b5895822404d346a03622a5df8ad2e3f6841ab14644f6074a72dcda253d7c9423df9fc15d98f49e3b2a1df2011ceaa61bb7dceb3860b9b66df3926a1e79e73ef6c4429aa9f344adce7d9a7451ad97d0c9653b916b029c4971e6756fba775f191751416c3b0587c2fc5043f38d2b6205804c47da3e85a99b47f1aaf42d9c709f21bea94b8ca7340fbb8b262de6c47b79de5222afee7b1c994ed526ad4d5641136f5227a5bb +5e19d97887fcaac0387e22c6f803c34a3dacd2604172433f7a8a7a526ca4a2a1271ecfc5d5d7be5ac0d85d921095350dfc65997d443c21c8094e0a3fefd2961bcb94aed03291ae310ccda75d8ace4bc7d89e7d3e5d1650bda5d668b8b50bfc8e608e184f4d3a9a2badc4ff5f07e0c0bc8a9f2e0b2a26fd6d8c550008faaab75fd71af2a424bec9a7cd9d83fad4c8e9319115656a8717d3b523a68ff8004258b9990ed362308461804ba3e3a7e92d8f2ffae5c2fba55ba5a3c27c0a2f71bd711d2fe1799c2adb31b200035481e9ee5c4adf2ab9c0fa50b23975cf,6d96d224006dfbe8eec28892fd2bf888ff543501f2f8ae5b6beb67713173c88671e4b3804d695730fdd0cb04ffd873b0e401103dfae8f014ffb0ea382333e33985d1037403029f0c642323183ac8668907de791bdb0bf7112fd2c8ba5d3b933273b51082810c7515c78173dab93c7afc48b0a76d5488b76ca0e5da2226b669a2efa56f0a2041cc4a60212b2b4f4b02749b211856839868ccc0a935db1f7305ef356024fc78795690b69cbea01ec0b5aa8b3c4ac2d1815176b57062dc4742defa68081f21384fc875339f40985e85debf3ae9ef80cfca746375492614fe5e76a96e506403fe2cf5bcb43ae6e4e697e86237e825bdb16087eb32d3dbccf2af2b624acb4a960e0781e7c686b0b3a8a0e4beb1f904e0d84b00038788a02ce66baa59ef185e2678598013c60208e5ceb50b701bdd2694a24837f786931027ac0d64a229400b5783bf29ab39df9aeced0cc8b9d6fea52de3e9220575b4f3af6e2df155a20d87ff3f5ecdc0437cf7a8a648a0be9c81f0ec3457bba5d5948149c3ff2411053549ac24dffc65b54bb89b227499e35226fd9e1a85ebf5dd534852921beb63bf850edb495f9dc1876c6a481e9b774e6d4368974bd5a7ba7a16e90d078bd651f128ca7ac160eec05cb8f3ae3cee4bf998579b84418d7a70da95e65e4da9933ef8e399359d6d1993e5d9753cfd1b10737f6930ff0cba3510d3bd9cf78f5f79dd +c8e976ab4638909387ce3b8d4e510c3230e5690e02c45093b1d297910abc481e56eea0f296f98379dfc9080af69e73b2399d1c143bee80ae1328162ce1ba7f6a8374679b20aacd380eb4e61382c99998704d62701afa914f9a2705cdb065885f50d086c3eb5753700c387118bb142f3e6da1e988dfb31ac75d7368931e45d1391a274b22f83ceb072f9bcabc0b216685bfd789f5023971024b1878a205442522f9ea7d8797a4102a3df41703768251fd5e017c85d1200a464118aa35654e7ca39f3c375b8ef8cbe7534dbc64bc20befb417cf60ec92f63d9ee7397,e0335cbfa877da0ddd79072bd7f46ea6313144e633ba2c207cbd6948237cc32a39db06f951a1a4b9b0b91011158d38938adc1e42408a2d8a95c3eac579c922943155624f6318e12be7eb6a83679508e0910fb6e85a84998f0fbe06b087efc6ec91eee277b48d289dd6e12c820d0909e206750c82995db86031e71b0d005ce898f1cf7c782f10b8ced5370cf27b74c6822910b653bbdd328ae5a4921478a4072b8c7c89b446e057f6dc4692186cac39cf08e3c3f0c9457ff44da73b88ce131a1e2b4c6a235dd464e4777b069d39a9ee2a5877e07e8669b0d610513102b00f8e2a7ec210c403f2e398eff22e193a66376d0d08ab3013aea4d508ee88edd361fda5aa4e17ba899632cb7222eddd5b320af686c80f2777d94fa2a3428a47ae7340054d2dec1c42569a5eee01759846fd10af9d2ad2ae9f6fadff825d184eaf7e8ab9d7c7c64ae07cd5a95f2b24cc3857bb239f5c0824ea7ca0c84cccd9601580ea7a4c8937008617468b9122b466624d51af29ae1b66d14c332f2535bd7c3603de07a0b25c6a260e9e70ebd2da622acbca660d425de2e44b7e6242a83077bd24025abd5f0f2f21743f80d9a6f1552c3957b220088d861f3e25823548bdcb448d19b3cfa14fc8f11ceac5bb262364f100655d5099d564041f113503aec817bb03ccb9a6e02196706fbb836c28421afe0ab276772150fd0677ace7655ea6214f61d2a6 +7145fa124b7429a1fc2231237a949ba7201bcc1822d3272de005b682398196c25f7e5cc2f289fbf44415f699cb7fe6757791b1443410234ae061edf623359e2b4e32c19bf88450432dd01caa5eb16a1dc378f391ca5e3c4e5f356728bddd4975db7c890da8bbc84cc73ff244394d0d48954978765e4a00b593f70f2ca082673a261ed88dbcef1127728d8cd89bc2c597e9102ced6010f65fa75a14ebe467fa57ce3bd4948b6867d74a9df5c0ec6f530cbf2ee61ce6f06bc8f2864dff5583776b31df8c7ffcb61428a56bf7bd37188b4a5123bbf338393af46eda85e6,74b8e6a2245e18432db073b046fa0d6f63c85a05b9fb3b3098c8f2aaad938cec8a8232ac2cc4cd7ea85a29bbb4a2d03311cfa7f1ed8107da574e659358408c60b1cdae6a4ba6f3091574dff998c97ca31e410b4132013afae543076baca1989e7b5da17e654e664c856a00d7de43eb3a2c5b8e347ea3b18a94d534c0448671fe2c360034550f145f911acb7c245a99fe37ca167eb8ae0ff5e9d0b65f255d24de4239ba87c2e8b757192020b3a28d53861d29c845d4e4a21604ed2d5dc8e4c107cd47501847b50ce2452a31685012c5949e0cb630088178aaa5c9b0eaa6394e00096cdafdc781833f37c64ee2955db09f1c3b3767a0f0928863567513d5b02a3d24e66a79ea590d5dbef5e8b5d9953ed9f72610c0d4f5ead67b3421e90710138e09bb15959dfe9ae408afa9acffca19dd083bdf508d8fba9f75a18f6229a9850de36653a0a39987781eae3f740e2ce387c004d47811e3f8b5f8da9ecafe90c5af4ace449ff7af57b271b0c3059ae42180a1746eb3aaba944dba5bf3946907a18b1d94df4819872a24deedda3af7a3787ab6b3d5f128d0c3ccab6ad0c34371bb76daa321e36f6ff935fd58b590858f894b54bf9997df8b73939919af342d6593f31f76c3251ab3812e27f00f3aae0c0535a8cbf9c6a9d20e26e619d6899eca8a46526d7205a3f2f3971c60e432ce438f40c2cbef0f2ad7253b18ad53c3bd8f108b +7fdfadcc9d29bad23ae038c6c65cda1aef757221b8872ed3d75ff8df7da0627d266e224e812c39f7983e4558bfd0a1f2bef3feb56ba09120ef762917b9c093867948547aee98600d10d87b20106878a8d22c64378bf634f7f75900c03986b077b0bf8b740a82447b61b99fee5376c5eb6680ec9e3088f0bdd0c56883413d60c1357d3c811950e5890e7600103c916341b80c743c6a852b7b4fb60c3ba21f3bc15b8382437a68454779cf3cd7f9f90ccc8ef28d0b706535b1e4108eb5627bb45d719cb046839aee311ca1abdc8319e050d67972cb35a6b1601b25dbf487,10b27d45e1e91c3568b990f306d4d0338380c4a24c543db7905ad8c20b9c469a79e50f7fe705c03d2d1cff9e2c35fce1e6e2035d3f464b6d2861eed223c32e960bb223f21193cd4734f36422c1de6f0f81791d6a5e9db7ba8c2ca1f2b7fef2f94c53928695913471b5e1b02b75fb9b0da1feb46520f3e8558e03427bf371180ebacc91f3989f849b4eab233c529006ee02050d85b548344c09cc7a6c6c40fce5c55348e1beb801482ba70d6cc5a24b3b0c9a3258b0934c3a41fbf07ef50460e2bda507711954c83ffb91cf2b2827d5fcc6dae70df5882689c573f159a9b45694458d0fb8a5000b109bea868160fca781f50db7b5ee56ae55bae1fbeabdc155ec46c0eb16314851fe0446ac2bf171d99fbcfbe2adfbae4a6387b42fe41c5ee8e2ad1819d7f80bb1b4ec2dafcd1d06c2c9750a600ee6627f62089b2ee59ea461e0dcf47188d1a8dc80b0294479c7eb03953c425d6eb3cac6ffc34e484a35127b605cabfa59712141c4fa0840fb520a1d0a8db4b298d24de2a7246f28e036b511db91794e35b75daebcb3b8833794b764f936200e7784348ae50b95363c027f3af85762f3b8e6f31b7c2d8bd18814a723c0de517f7b3937af574a3fb5f52de8a10a2055e8eb4281d383797df4b8d5dd5266c5d438a10de4bad00e4c0b252110cf368707aa2fe785f518cc2f3da5221634b52118348f231aae0712de096d70a43929 +988638219fd3095421f826f56e4f09e356296b628c3ce6930c9f2e758fd1a80c8273f2f61e4daae65c4f110d3e7ca0965ac7d24e34c0dc4ba2d6ff0bf5bbe93b3585f354d7543cb542a1aa54674d375077f2d360a8f4d42f3db131c3b7ab7306267ba107659864a90c8c909460a73621d1f5d9d3fd95beb19b23db1cb6c0d0fba91d36891529b8bd8263caa1bab56a4affaed44962df096d8d5b1eb845ef31188b3e10f1af811a13f156beb7a288aae593ebd1471b624aa1a7c6adf01e2200b3d72d88a3aed3100c88231e41efc376906f0b580dc895f080fda5741db1cb,69304677315720d586605521e24d32745dfab082d2bc23a3165c419831c19468a088d972ac672d7baab907005a0ae3910d4f06f0bc5adf6aaf9e1d8cd7cb85dd166d0fb9703cdc7d45dafac4805612137d4720fb3fce90d69864403e6c456fbd87677312ed7cad9a28f7a98753265294f4820fa50868cfea157eba50dc5763e223238fb2032dbc6dc00c3710b6976f16034a9d851cd1baddec6071cadf10c8f9fa123fc0eb81ecaf4c16b8d52a6c1ffe330d114d71ceade28bb0422855aa1e7e838a93523315bd0f8384361a58529a2264d66d65806659c49b7f80d95474a7965a0733d3da4fe317c5ae6180746bd8dc70589f97b15e0fef29d34d6be4416acb3f9eba2f3e34f8e636a6b111dfd4aceb2c9de051b942ef021c78e0671f771058c4b59d34991dd2efc6943c6e0156cc0e3fead10968f77bf4da82b9fd3ab73b43e2890bc8aeb02d7178faeb2fe1a0a194b1581f6322d817aff2de7daa96f4a725ebbd8c9fc9c815d0a8e9fac425f278f121084ad98af9bb119235fffdf1751ab6a805fa80f43a5682c2fd5bf9241fca866de6b5efd36e692313f51fa8dd64b52dc2fc33c56687417c942680676143a459068401690df9213e18604058e74011b111f1410531fbed32567af7a0319b5a4a717f580d16d9e9341e78f717e27258a84a2cdbbb9ca118fd0f81568639f40176a1754c743b4b5e377dbb0175d160b414 +5aab62756d307a669d146aba988d9074c5a159b3de85151a819b117ca1ff6597f6156e80fdd28c9c3176835164d37da7da11d94e09add770b68a6e081cd22ca0c004bfe7cd283bf43a588da91f509b27a6584c474a4a2f3ee0f1f56447379240a5ab1fb77fdca49b305f07ba86b62756fb9efb4fc225c86845f026ea542076b91a0bc2cdd136e122c659be259d98e5841df4c2f60330d4d8cdee7bf1a0a244524eecc68ff2aef5bf0069c9e87a11c6e519de1a4062a10c83837388f7ef58598a3846f49d499682b683c4a062b421594fafbc1383c943ba83bdef515efcf10d,b32e9585694532b1018b05b9dfdb23b8924025786f5733769b4913b73b0fc35513d4c0fa1a1a5019db5fc807abadcd4589b4c5658a854fc919105a5f08799f7cba3b8dfe72de84027b341cb1946d6a4a907d6ffbc15b6a00805abe25047476b99d53a6aabe9c758b3bf4476dfefef2e366617a1407853b0d0278df42fb7003bb1610da2ad52422a0eccc74818ebb4df264d0adb9623b9ee0c5371e9f0e73d7fd31a2b41f9da8c9955310166fcae6be9aa75d3f7c532f1502beacfcd81a034b5d4a87647a5b9e2c49b7bf055a0f4bc3f555fef5147bb7b9bd75772878fddcffd58ff2b09a61d6067c0f3498efbb5fcb736813f798e213102e47a3dd61a6bf99db2834db63befda6e290ea953a8b96fa37650df510082294891c86892215850a34af1ee0659694431da636c9bdc854ab98fc796c28bd6272c9c5df1d199ce9f55bb575786ebcd6851dac97924aafb102491bf4b80351afd26ef027c745f98607c19acf96b66ecfacd4c512bcc9a8e609de5ffcde0df0e77760d8d44f12301336247f53cbed8894831765d12221c902127b65dd549e6c32124e0ca555586fca8043097b9ae3d9bcf899fa06ee5d0a17ec0a2e657e37cf5d4a55cf4c99e9f10691602412d27f9b8db5c4c2644fc822e11833b32168ac89f2d591748d12b527fd5eab2291f201579a48aa9c370979dc2265b873ad65266e98ff668579b0f4274c73f9 +47b8216aa0fbb5d67966f2e82c17c07aa2d6327e96fcd83e3de7333689f3ee79994a1bf45082c4d725ed8d41205cb5bcdf5c341f77facb1da46a5b9b2cbc49eadf786bcd881f371a95fa17df73f606519aea0ff79d5a11427b98ee7f13a5c00637e2854134691059839121fea9abe2cd1bcbbbf27c74caf3678e05bfb1c949897ea01f56ffa4dafbe8644611685c617a3206c7a7036e4ac816799f693dafe7f19f303ce4eba09d21e03610201bfc665b72400a547a1e00fa9b7ad8d84f84b34aef118515e74def11b9188bd1e1f97d9a12c30132ec2806339bdadacda2fd8b78,e6bbddc5b154abab888f4e00c2bfc18a200db6ded8ebad70ece03d10d123c52d4b5124cdfde2d5a803b8be98c646e29f64f2bdd55492531b2741c6040fc51f7df18106d9aae62f1930bab26fd5167d516c4e4afd3035d6afddd06daa59b56be3f188cbc11529909f6ca0618c321349b1b918c1cee491c8d7996f10b02e0a085ce790648c586710d4916a528398fac1e1fa71971ec85b203b83721aa006d7026c2647cec53296e80ee3fbb6b880bd296d6b9dffdf40c5537551eb0dde86e85a72fd280888c08d67a9839ea61849b47fb010540baa15530495cc8bf941f82b4b3114f6ae055c852b0978ecaa67108aeceb12e78c339071ca058fa4a534558899d71ed36c2164de0c92612f07cf465f92c0a1987f7462ad303de358dc9c9929ac205f366fe564c0b32b1e4d65ef4e0b45b2aaea6a93c5626ed40c597b54a2074f255fc6c33f7de535b5041f32085274ebde9d7ace9b458e7e7cc47193428a8873560c561230b03a72d993100b73fdc24231a39c227b05630b328645349e0025ef02002c34e6a7ef07ac5f7e299cfe0ecccf01e1dfbdac9bbc95b09b2ea505d8e74c85b9bc8e939363f3f062260711c44c132e1f3663123ec0b0a253de7db1dc2a08481571f64bac3fcd9eac737bdb42aa4d392ddf9547126191ddcb2f88a5705bec9be7c8d88e9521ef7bf9753155f6f3a75acd4c9c913785cbff81761da8dd73b8 +8cff1f67fe53c098896d9136389bd8881816ccab34862bb67a656e3d98896f3ce6ffd4da73975809fcdf9666760d6e561c55238b205d8049c1cedeef374d1735daa533147bfa960b2cce4a4f254176bb4d1bd1e89654432b8dbe1a135c42115b394b024856a2a83dc85d6782be4b444239567ccec4b184d4548eae3ff6a192f343292ba2e32a0f267f31cc26719eb85245d415fb897ac2da433ee91a99424c9d7f1766a44171d1651001c38fc79294accc68ceb5665d36218454d3ba169ae058a831338c17743603f81ee173bfc0927464f9bd728dee94c6aeab7aae6ee3a627e8,f40b4a6a7d88482c5ba65d17038d68184e1aad676d3403003017a4348a7e3abfe89804ef65d96ea5a467caa9387020719184528944aad358960b66a0e78f2e4c19f244c82cb0d10bd1df49cfb89c24fbce8af1dc6b13dc61f40116ed3d1b51b80acf08a7a9badc6318da75eb4cabbf4798923d639c2c3c24778660089384de33f0ee7f957c78d4bf8d74ee1e3ea5e330c350584c319298166cdaffe0c7ace6a50d1551b30fa386a0ed5c20da31dc35fe2ddb7ff030aef1c0f2ecb0c1915554722ddd5a38df758e321048fc4643fdfaf54ae558f9b40eb38dbe516256e8d97701022b68e1f0983a14d7dbefb59dac5073062de8698beb9c94dae0a49fd51a661fa6aa84fe1088eb4e0f964953625a898b03993ecb248efd5e66380667c2ed185fc568ae58e15b5a57abfd84966094ee5c85284f3248c92e1300db80cd6ae08662412d01503d598a1fcdb0ef8ca773eadace543b867bade24efb25518e59e27fc921d8db6d3ac286bd1aba53d48983df63d493f95b88610cbcf6de2130ad63fb9860a839c3f98f5532b90225d1adad79b478f5c9d836435a9c9c0ebe229fa494b5f4253da92c7382ab388c4f052911e9ff28cc43415c8a82065433d8cdab9152cc13191f1729ea95693b4bbebc3b03f298ef6b3739a0f34a545198ff5d2b4292aa8d6a04271463df95145c99ec769167761690c97361984a665b0d5c2169added2 +eacd07971cff9b9939903f8c1d8cbb5d4db1b548a85d04e037514a583604e787f32992bf2111b97ac5e8a938233552731321522ab5e8583561260b7d13ebeef785b23a41fd8576a6da764a8ed6d822d4957a545d5244756c18aa80e1aad4d1f9c20d259dee1711e2cc8fd013169fb7cc4ce38b362f8e0936ae9198b7e838dcea4f7a5b9429bb3f6bbcf2dc92565e3676c1c5e6eb3dd2a0f86aa23edd3d0891f197447692794b3dfa269611ad97f72b795602b4fdb198f3fd3eb41b415064256e345e8d8c51c555dc8a21904a9b0f1ad0effab7786aac2da3b196507e9f33ca356427,92951eaa72195331acdd63572fe112e0df4b43ca1b67ba5c9184da5667a8439e3afd8784461010eb80178b07f278c0bd52582cef5b4d869d77e764342651ace52f1f5dbb5316a36cbe2d6fa455403a8ff0480a5df002396b8e444b9005a9a97d301529f5faef77c0fc04c3b01c7c4907f197927904bc56da2f850a0767e91c5b77d8a41cafcbdd5cc768e220e844786093ce425bcb3bf6cf3fe9cccbf6a5cb84d46aed8beb079ac0f12f68836a71d8c9d738f9be5a8311299eec2ae86ab774d0d8345c6fa7a341223a43dbb85ad5274806b23a3bbe312723bed548f4c64353ee2875a44a8a37153dafbe98e96efaa402e7a68bca09eda8a744c3bb8fcdaedd7ec54ca4066b69b4828afe6285b6909bc2ae96cd62f3a5238987279f206c2593fd2bf4d5a643484a5155fff290253650387c7bdc0b3fd749eb1a84f7a11790afcdd3fc72fae3bbb1c55596584b7246e77d0712562aeaff1c5316a698db9aa3524dc4af4aa4619c5f9cbbe41aa1ff2a0bad12f17ecf7c90e6fbc20ebf374d6335ef245bf449e3ee5870651587727d35bbed64885a8d375e43cc350e398c3d5de83ce92354c08e16a6ac69af10efaec2f0268cb7f998ceb45db988b193c8d35e89a387de6c212a2d2d5a9ffec3d4dff92d66992563c85e4e707730bdb669783357e5ed038acea7d8214313fc027733d51b2d21f47666dab6c6f3e50a335e83c72abd +23ac4e9a42c6ef45c3336ce6dfc2ff7de8884cd23dc912fef0f7756c09d335c189f3ad3a23697abda851a81881a0c8ccafc980ab2c702564c2be15fe4c4b9f10dfb2248d0d0cb2e2887fd4598a1d4acda897944a2ffc580ff92719c95cf2aa42dc584674cb5a9bc5765b9d6ddf5789791d15f8dd925aa12bffafbce60827b490bb7df3dda6f2a143c8bf96abc903d83d59a791e2d62814a89b8080a28060568cf24a80ae61179fe84e0ffad00388178cb6a617d37efd54cc01970a4a41d1a8d3ddce46edbba4ab7c90ad565398d376f431189ce8c1c33e132feae6a8cd17a61c630012,9107bc54f9ae29bd282c37cf4be15d2edc4b5a20fcd8c131620cee6c9326af25896bd25550cc3b46c19bb58d825a7156a4aac0ae72e38601aa6aaedc4ddc578d145ae8a0af4e630914b49fcd39c41924a19ed6e52ec150d1bdfbfe2717b9b46d6be9bd6378761f167c1133ee31981f9b681d674e267b3a01b0f455f9a0c86b7e6bb3ededc2dd86c8ef6f6bf736ba9cfc4a20e602779f0cc626e0f3513807c8bc71546dd1e0e5210a6abdbdb284f90eaebfae970cee9eb8c58a5f0f197feb3292aa8ee814df5d86d6b1f43ad787e82ab6d1c01cf44f3b32522609cc51967fa9d2417a8b91461b41a5390bdaee3763e152a2db2e8b7842a73f1e05a05f7a7d19fc88f576b049f87e85835ea4dbed141ac1321b47aedbfd285b6488b7613206e483559a8b0725d3091a04f10736ea1920fe234658aec2a5fd0f85f50bed9eea3e5513ee3b45f0caee09a1ca3dd8e96ebb408ec6a31f07acec024097c20038a6db8b5a10396c6f3532d8b356bd664a9c3c153d2248f9d8587d21ad3adb20d06c020f5aea40e96c776202a17740f59bac12195b49e19abb87f693ba0b1b414c4c83dd7474fb212f0f8015d0019d33250bb890079278e027f0191b1a92fc40004050c4e88d1cd3469b656a2f6d1ab9e49118b18701fa85a5b1497f1fd0d3c999567f99d05cd8f20dbc05333f547598615fee2452861af0cde27acc4d763074de840004 +0172df732282c9d488669c358e3492260cbe91c95cfbc1e3fea6c4b0ec129b45f242ace09f152fc6234e1bee8aab8cd56e8b486e1dcba9c05407c2f95da8d8f1c0af78ee2ed82a3a79ec0cb0709396ee62aadb84f8a4ee8a7ccca3c1ee84e302a09ea802204afecf04097e67d0f8e8a9d2651126c0a598a37081e42d168b0ae8a71951c524259e4e2054e535b779679bdade566fe55700858618e626b4a0faf895bcce9011504a49e05fd56127eae3d1f8917afb548ecadabda1020111fec9314c413498a360b08640549a22cb23c731ace743252a8227a0d2689d4c6001606678dfb921,02d21b8fee4bb59b4d39d88df91b675762640994d3a300bd7259a3e97ded831112d27339fc4f59c7f17dabeed310ee901d829a2193421c4d828df1248a68f6ab928ee87afd727ddc2766de071103b144040f9ef22592599a0fa6cedc2fcd9a774bef862d2d51c8e2538d1dece789a6756a1f9034c0949c3ff13190a141f3dd4f015a89de643d65e5ec4ab25300739892a81911e3c48d8a58239203c7e828e8867230e46bb8befd018e9ace92061e2baa09b0fb8c0cfa7fd5024cc65826aa96bdda6e21ecb7d0d77fe651cc25ec260c1c41f4d0dfa82963a2eeef0ac0c6123d9726a02396a0612e8ba6cd4988c132e7cab1b5097174b6bca798c7b04e5f7175a3a5bfaa9d23dfcf5e531557be9ba6f4b5d806287bcdf1cb5034ff94f709544e81d856cd8a1380774c5361710460d52cdfeae9af4af3e9daf7e6b679a6b881a378a1254de7105396db24497373430c36d24bd49425e7613faf651747217efc4e24a761cb4694a2ab3e0b43a8a4cda5ebc9d7299b27eb600122c7ef54703e48f51db2a5a8f3eb59a2c174df966ad728df0bc2e94418775e0186d3a527f86547980c8998b32f0365d9e430d33a92cf081a1525892fccf3d8fb4db1e0a728a856f2e2cc8ec4a08feff53db85c6620cc8b57106097a96b668f97c3bde8cfdc9600419b46ea24839d27a574bf63147a97b2b48cee1c6fda32f3b945e36fc03eab485b4b +3875b9240cf3e0a8b59c658540f26a701cf188496e2c2174788b126fd29402d6a75453ba0635284d08835f40051a2a9683dc92afb9383719191231170379ba6f4adc816fecbb0f9c446b785bf520796841e58878b73c58d3ebb097ce4761fdeabe15de2f319dfbaf1742cdeb389559c788131a6793e193856661376c81ce9568da19aa6925b47ffd77a43c7a0e758c37d69254909ff0fbd415ef8eb937bcd49f91468b49974c07dc819abd67395db0e05874ff83dddab895344abd0e7111b2df9e58d76d85ad98106b36295826be04d435615595605e4b4bb824b33c4afeb5e7bb0d19f909,76919b60d28a57717ec190fc9990e32020e6436828d90d8a2f4a7ad21f18a4f5f1ca753adcb0aa010d40334d1e58b8bd165b0151e631925055f4800dc01d466d11e88ae945545365b7f6072b36e11cb6f15da6ba3b53e12473beed09c5aa275cad795e03838aebf74a6b1a3371344c1e3104cde3c768026963de2acc8935f5162d1d09c966b5fe2943cc723e8007559c0537126400f1a4c3d9004df88126a23f9051630de9fcac524bf4a109cccf5cd7f7972b64fcb5a8e5a78a85ee82fe553ab90754cd12ec77e2e3cc09aa1f172963da44d29fc7f95f0c7c1207bdc858fe8b9785eab55b6ee33612863fcfd1668a2fb13715f7910968708f22a9a88d97f84ef4212551d8fcb05992670aafc9ef5cc34f0843246241c9ee011470131e0e6b56c9ef6a0e38423943ba502ec9d08c39f70797bd85f6d9207684022cadc282eed833b43ce450445075013f1b3270492aa6e412cce8e9d9534c0a380b45cad9328610ef3facea7ff5199f1e4d0342163b16961b0f98e46e8615ae2cd74d92e2df30a3df00bbba2ae43a67f51ec52cdb37e00d979ace6af3afa34a58b8cfc07ddc3c98fbe4a5e18539d03acfa18152f4cd32cbd84ac30a99c325ebd57ef2870f36c711900cc23539be7c19dc94f75457bdff28b9b5df876b5576cc37fb30b291dbf44904b36c3d96747dcd92a1550cf9323f358d15471fdfd35c2f4c4b104cc91fba +747cc1a59fefba94a9c75ba866c30dc5c1cb0c0f8e9361d98484956dd5d1a40f6184afbe3dac9f76028d1caeccfbf69199c6ce2b4c092a3f4d2a56fe5a33a00757f4d7dee5dfb0524311a97ae0668a47971b95766e2f6dd48c3f57841f91f04a00ad5ea70f2d479a2620dc5cd78eaab3a3b011719b7e78d19ddf70d9423798af77517ebc55392fcd01fc600d8d466b9e7a7a85bf33f9cc5419e9bd874ddfd60981150ddaf8d7febaa4374f0872a5628d318000311e2f5655365ad4d407c20e5c04df17a222e7deec79c5ab1116d8572f91cd06e1ccc7ced53736fc867fd49ecebe6bf8082e8a,72a343df2c1854005653e1ec9c8f9492af9ef7facf46df729ad910fa3a8b830971d22d5e017ecd515c0e972197c87968fd05d59c570634a3864dfea159229746a967a2847f0f4e3c48dbdb21ebfa400e18bf289a2b146758eaee64aa200287f7f55e57817ece0470c35531d35be824ad7e825e7a1fca07ce5325de6e27d6c6bf1602ec1069117e230ed9a0873d6538881992fdbce93a4e12013a56f4d22f5846b4e04bd15e9ae9590c703ee7ae346b860d1b4b181a963c1dcd36ad485aa484ce534138789c2874ab5888b70e278e30534acdf0d9798a44e1701d9447b5d6fd212344603a269a9d2e0437304f5153fbeb7bb5a1e437b63014ed6f01d4f6135ef189ee290e30c25dc2f63b7d8cf19e9d7959eb2f61703842e0c89ea487441b9c17fa6800a63c411f1d3ff4c35f1e89bb820d60b25cb1ad71e6583390e753934759a5467680405b1c9b6e391d6ddc4510ff24496559fe2604c038a5df6638fd7f7880e0847b880c1628f47bef49689d0c31c4867baf6fca08fea898056dcb1716c95341aca367bcd9bb372a93d2fce947b5cab707e744f15fbb85230fe7f86a9ef7c36069ca79d781d1cc76193d423229e51ce0612a2d61680d35cfd5aa482739442f94d205d72080bec7a259b23b8d9b4f76f2a75235cc3bbd6738fd870905fa21bfe1315b0c678d7db5f4df36f5d43d04c11f3bce3fb71b3b7ae410ad51cde033 +57af971fccaec97435dc2ec9ef0429bcedc6b647729ea168858a6e49ac1071e706f4a5a645ca14e8c7746d65511620682c906c8b86ec901f3dded4167b3f00b06cbfac6aee3728051b3e5ff10b4f9ed8bd0b8da94303c833755b3ca3aeddf0b54bc8d6632138b5d25bab03d17b3458a9d782108006f5bb7de75b5c0ba854b423d8bb801e701e99dc4feaad59bc1c7112453b04d33ea3635639fb802c73c2b71d58a56bbd671b18fe34ed2e3dca38827d63fdb1d4fb3285405004b2b3e26081a8ff08cd6d2b08f8e7b7e90a2ab1ed7a41b1d0128522c2f8bff56a7fe67969422ce839a9d4608f03,ad4dd99aa71dbdeabf22fc7c82bb839f910a22e4cebf8317899d0af87279ebb321c442dfb9083c4676c16506c4006f18e8bf84ea9024b1deee4abe6f90dbe0effcebf4cb7b94d8a8b107c5bc3198277bef87c9760ae2bea86ac50c39a666ab09f276f2fa4c1eb5b8c37adc3b4c9de4bdc28074ff4b997518b44fe49b0d4e4f83cfe9e12ef7389625766a54bea82db3fb57276f47c418bdd5f20c8146c792dcb8e42c7abf09331f599318265776cbb19c65bac6dc4a683956c052ae5cea02f1e4ea690f9e5d3bf3a06a726f0efb6dab5350753ffa7adc477e9ae454c5e18f9d64edef0157d1f01fa78bf281468f14d79c39405d2b5b604c0ee116731c52c2432488c45a3e56d3f999855631381b5ef3c99a0352c16b92812a4889c1b8a72c84273a90abf29c7ead82f2e7c6de67e7369dc02fb0f1d62bb8d245030a6d26e930476171547f33b9c9dbcd542f04c97b0a278d24e2bfeea0209fa83d634afe65ec9e7a5550774ededffa36250dc5a400ae5fd6696f20e5fc6afb15f54c7240a24cf11bf16730b8e676f948304d3eabf315e95b723ffbde6d931ecf3be6c69d8cc82f31d1f499bbad8ada9654630e7185bf6c1d882dd700f7f1b1abbf384f58994d55c9e831aca847b8f654b070f424267685103bb339a4cd43df94894e912b64acb15aac65fd496424fdf02be7a96e161cb6a0034997ddc918f6fb604d6dd55b4d92 +04e16dedc1227902baaf332d3d08923601bdd64f573faa1bb7201918cfe16b1e10151dae875da0c0d63c59c3dd050c4c6a874011b018421afc4623ab0381831b2da2a8ba42c96e4f70864ac44e106f94311051e74c77c1291bf5db9539e69567bf6a11cf6932bbbad33f8946bf5814c066d851633d1a513510039b349939bfd42b858c21827c8ff05f1d09b1b0765dc78a135b5ca4dfba0801bcaddfa175623c8b647eacfb4444b85a44f73890607d06d507a4f8393658788669f6ef4deb58d08c50ca0756d5e2f49d1a7ad73e0f0b3d3b5f090acf622b1878c59133e4a848e05153592ea81c6fbf,7623aea16ed0ac8af23a7911be015d44f93f3329ad1c0023bb9a6e486477d9cf5307b358527bf479fdaa473fe60cdce59c33c4d1db930057438cacb4006d2e6c327b3fb033be384ff07eb40a44ae4d39ea9794c29c9f3a91f679ef4690c41422b193929654d00d44d06fce9b35e5feea5c20cc02fd104a74764f3bbff273086023af4afb3a29f9f9836c17c5a883bfa0fc4d8fcc9808febd82df88f7dfc3f715c8b07db1f2b61403cb6f4f7b18f898fef9741e016ca0cb3a4b8f54f57db2f2bb63289aa38a7a9febde32089e4b479d9cf184f7d1c418b648cfe7e6079f7dc1cc35f22e31e620704736b44fe1e3a677caff61fd956883e6f6cb278284a05bf2b4cd9b832de2058fab356052c55b03d245baad53b86414441010767abea201e26f270649ea35b0479a66adb9439c57a77e84b754a7e328e4aed0618742cd49aef0af116462f3a5b24343e141fc51f6b9ff376a30989b17bf4ca9dc2acebd4f22d8eab082e62fff99cfc55ca5e7c4b86613356f1cf05a9a3e8fd79123fb19627a75810d3af44213dfda590245fb22b48e8ec5f58ee1d51beee4d6be0bdf7e8d18aeb37995d602e1ea1fc25d0d47d64d8a88b273fa8cc649c017a63f34c140a1d801f2558c8639fbeaacd1d961893e111450b85eca907cb3b66027587fe9b39d635d01c4c369589b9d8907d54a9b73fde7ffced9fd443b18892f29fdefd7b3e717b5 +7c815c384eee0f288ece27cced52a01603127b079c007378bc5d1e6c5e9e6d1c735723acbbd5801ac49854b2b569d4472d33f40bbb8882956245c366dc3582d71696a97a4e19557e41e54dee482a14229005f93afd2c4a7d8614d10a97a9dfa07f7cd946fa45263063ddd29db8f9e34db60daa32684f0072ea2a9426ecebfa5239fb67f29c18cbaa2af6ed4bf4283936823ac1790164fec5457a9cba7c767ca59392d94cab7448f50eb34e9a93a80027471ce59736f099c886dea1ab4cba4d89f5fc7ae2f21ccd27f611eca4626b2d08dc22382e92c1efb2f6afdc8fdc3d2172604f5035c46b8197d3,a2cd7ae2955e2c2cfdcc374ad99e46f29fce072e2c085e0f02281a4a85a822a2424546410466299cca501ba5a86c12085320d2d0116196cd31e67e175bfab909e279846c8fa2cda475b0c9d604942d6332f3ed46e81d3dca880527debabe55bcae22c98ec42822bd1874561e7f8e8cc8092dc461577f2ae548580faab59afdfebf359847dee5271c2e972c12d13424a50a9b3dc3de5fa6f5b190f3dc060481118a595a8859ecdac8c57fb16fd4db9802c7bf344a68a0a91ca8629dd0a8fbb26fba0e21c4d953626f66c0b33d30c2569d73bbef7ed708212b2f66ddb9aeac459a11c9862cb5674885619d240babe380bbf23564f6d946d03aa544e348943a488c0fd223b36db5b0efbbe5c4e1253c3ff6c058aa95a80925523749bd228d89bf99f5cc681237fdcc8c872f652dae6306a20d9422818a8de2fa68c5a334efe828a20a48cbc49eb6d7ed779b00df50751446d0c850ff1f096fc50a03a8c407b8362ce03690d2d5699c70313b4f2d39e18abe998ee73de38308dcbaca27b8f6cbb3305b35c98b620a811c94aae44b5dfa2f8664fb678fb1d73dddf9fc27cf693db9d5cf3b46c185b72c33e3bd0f6ffc01108c8a65772acfc13defaf21596f2c9b9512f369588f6f8767ff61436ac67eca3de25d6c5a9746afb3b3464a49f3a583740c432ed806bfd16eab27d59a12975d7d09f7eccd67c2527333fa95509f7209dfcc +e29d505158dbdd937d9e3d2145658ee6f5992a2fc790f4f608d9cdb44a091d5b94b88e81fac4fdf5c49442f13b911c55886469629551189eaff62488f1a479b7db11a1560e198ddccccf50159093425ff7f1cb8d1d1246d0978764087d6bac257026b090efae8cec5f22b6f21c59ace1ac7386f5b8837ca6a12b6fbf5534dd0560ef05ca78104d3b943ddb220feaec89aa5e692a00f822a2ab9a2fe60350d75e7be16ff2526dc643872502d01f42f188abed0a6e9a6f5fd0d1ce7d5755c9ffa66b0af0b20bd806f08e06156690d81ac811778ca3dac2c249b96002017fce93e507e3b953acf99964b847,a74b8704cca1f4234742a5c8ad6b138e58d56281c98d95f76bfc0a0ae309d3dc227543f9aee711c85021b89f259d002188f4e753dddc4340dca27b84445afa007a1e502a1903a857583796bb124ddfd64b5c91b69cd9b230f27dfa5d22a09b07fca1d860dcf316c22e57da3589fb0f07ecf671dcb150913ce8606da9ce39a5857b8382853056a5930f25e3647015b77b2df4954314f1f8b1c774de0bcd1842cad3bfcaf5dae8ab9d77290ddd2112ab060f5b017630c318a1a3df5c15e6f8aa348ee3f3c171c4e8b98cb4a2956fa240eb289561e7ca30eeaa9cf79683db7a2b0f28b3b1bf30bd5a62c96ecc8bd74d1f2d131295597c668838a8d3b20ce1a4ee4d1103de547ac21f6442df2ca10181319c76ae5827fd60eaba7c788cb369591e429b5dbbcd95049bfee2a5829ffa0417772db1bbfac2eaf112b9712a02c1ece830e17b22696aa6688e08bc705ea7f7010684d7006bc0a017bbaab1d6119b1b589b326f1936c82c470245298f2167d884398ed408814323d369bd1126031dfeb56a160f90359054400db3b3d267d42ffda5bb710643721871dd4de52446004af00ba55706c93beaf01f8d77664af27aad65c6d61fae24e65feb4310afe6ca5322ee4dd2a55ca5fd7e651ac8d3118c0fddae4b2e42862aaccd8cd2134340ddd760bc7918a461b16ecabb601861b58edee6e78ac3ff75055997aba8c0c57878aba5a7 +d85588696f576e65eca0155f395f0cfacd83f36a99111ed5768df2d116d2121e32357ba4f54ede927f189f297d3a97fad4e9a0f5b41d8d89dd7fe20156799c2b7b6bf9c957ba0d6763f5c3bc5129747bbb53652b49290cff1c87e2cdf2c4b95d8aaee09bc8fbfa6883e62d237885810491bfc101f1d8c636e3d0ede838ad05c207a3df4fad76452979eb99f29afaecedd1c63b8d36cf378454a1bb67a741c77ac6b6b3f95f4f02b64dabc15438613ea49750df42ee90101f115aa9abb9ff64324dde9dabbb01054e1bd6b4bcdc7930a44c2300d87ca78c06924d0323ad7887e46c90e8c4d100acd9eed21e,4e12a03995768c80408869a5c45b174783ea2fb5e4c153a2c014a3fb8ab968d74c9b835d9c4c5fc304b5e68cf9aa72c2adfc2de961cc9a90e1d515a3234bb79da1d5fa330c03deff46d304f0f0378324be4fec285758b2de3788e71edcd05754366c71b783a26d105a48bbf51c4f4e769bdd19ca477d80fa55695a04b06a0970b98be48ef1e861f17b9540e63f54b6156fc2996b2d2ca69326e0cb7a4a5761b39fe089017322bf23b7b5ddba1490541843bf703508f5512117370253248f23f30dccf27061b8f81c1090cc8ed866263fb50ad6f3a027efbdaad7760eafcec0928ba40173a50c61596b75aa4d72986a8bacba61dadda139374d17843735136c8dc0e14c2ebcbc9eb110a682cb77a72e790c68e11848431441ff70cbbc513a9d389d349a63aad6a948a42dd798f1a576df57ed0613fff5f569ce5d24061a386b2a5b4b1fde6e3359ce4125241628b9a882ccfd34f266bd8b7806392d52dc8cced80c52ecb6321cf3b3c911d206809faf8fda3f918f93ff507089ca4bd647ad4b5498f0ffcc7563fe5db7bcd613b84edf4a95a4f8d29e3abe0c39c8a76b6fb5db51db09a21a48d3e2c0786b6a13351715f8dca25ef288c46631b25d55a7473e5059d6a16661f948d8a7c1b4d7a21b531f915fc5a18305b6fdaadbc1f201c9a09de221ada6de8baedfa4614e578156137fbf43896cb61ce38ef386fb68d55311c63c +3a12f8508b40c32c74492b66323375dcfe49184c78f73179f3314b79e63376b8ac683f5a51f1534bd729b02b04d002f55cbd8e8fc9b5ec1ea6bbe6a0d0e7431518e6ba45d124035f9d3dce0a8bb7bf1430a9f657e0b4ea9f20eb20c786a58181a1e20a96f1628f8728a13bdf7a4b4b32fc8aa7054cc4881ae7fa19afa65c6c3ee1b3ade3192af42054a8a911b8ec1826865d46d93f1e7c5e2b7813c92a506e53886f3d4701bb93d2a681ad109c845904bb861af8af0646b6e399b38b614051d34f6842563a0f37ec00cb3d865fc5d746c4987de2a65071100883a2a9c7a2bfe1e2dd603d9ea24dc7c5fd06be,8bb1e121fc89ea0f3d79ea823d876eaa74b6ccfab369e7e4783cbcd3701875f1be59b0f8b48c2587e7001b6e7ed1821e2649069e84201583b2562e5945af5cf734e2f0c6090dc8281969cc95c861ecaeecb1cda78e8fe119b60b05c54484bac951b7784ed025fb878e29215916c5886b85b24bb2521feebec3b8766ba14fe47ee0e81dad68b238905377afdbd55e41364a12181d46d2e272bbf1fbf41a83c29ed88361435396614a23730d84684d3f5a622a233ff1ad5583fa707db008e3eed5a9716219ebf3571fb1ce9842d4a37b519767b7392f008193de676f0cd192cd6d0cf651ee5f8331b0982f150a7dcc264c1465177ab98cc590bca81e981ad2e98e47d2d855c0a74895970a96994700a5d55cbbaea2472c4160da0ef3aede987a99065948adc558e7cb9a952495f70cede70ce0e3deccb798eb58941f38c4b13c28b2e5ca4fe3a7cf3c973eb3391b705b9e9e7689e264f878396f438c393eb49e70d6a2bb0a6a92f80fdc2c2f70afbb2a1df1ec4634bc0cfdc9d1239182dfcffd30096e11fc4a32bb44cf510a44d35ec3cbfc354e088e0b53932d0de4df83a963d902971392b74d95c475d26184559f6f9f5f91502a07011b9070f8e9be5f5d1e599634e3bced756a49ac7cb273396f7acdffb3be1e441e8d8ed0588d0931353736dc1d9e889650b503a4fdbf5df7b5708d4218404306b0e11aa08067b7dbe63e8c +1861edce46fa5ad17e1ff1deae084dec580f97d0a67885dfe834b9dfac1ae076742ce9e267512ca51f6df5a455af0c5fd6abf94acea103a3370c354485a7846fb84f3ac7c2904b5b2fbf227002ce512133bb7e1c4e50057bfd1e44db33c7cdb969a99e284b184f50a14b068a1fc5009d9b298dbe92239572a7627aac02abe8f3e3b473417f36d4d2505d16b7577f4526c9d94a270a2dfe450d06da8f6fa956879a0a55cfe99e742ea555ea477ba3e9b44ccd508c375423611af92e55345dc215779b2d5119eba49c71d49b9fe3f1569fa24e5ca3e332d042422a8b8158d3ec66a80012976f31ffdf305f0c9c5e,1887576149594f7fcd27145b5f535219bbc4313e62e7abb6393d6015e8e45b48a211300f8303fb9bf370fe0a117d268624bb741e0bc343487015872e14f84b1ec1e2faeb828f521ece9e7e5efb281dfef05d86bd8eb0b51cf4c46d94ee0afc72da29c3d77eaee07e24035a68792e8eab1e0b96282e1d95b1b9d36b09d6a2e0edd37227b0d29f9e490f1d6156dfce1554e69a49b7660d288ccb6faef9a40f656a90a825a07c5ee0730926cee14ff2694a3bd105d889c88a8ca1d271727dd0fcc0ddd1ca2ee955d02cf8cda7f9e3a00b4362c69ac631523345dabd396354ad862458736d1befc4bc35ef4775f02f017ba2eb9fff9229292432ab5603ba20342e627d380824050ff61c23b5e789df2e835fd56c65febd001ee6960c782b627f90a7087ee24d32a85d0d780a8911945f3719c5ceeb9c7024dcb112c0fcdd72237040c5e964ca57ee504849e3015c200c44ca3a0eec097bf718f6959c4d3e39455976f98db5fd84f01eacbc1b2b57b6483c9e3d58ef76e18f8fbfa341e6399a3d986834e315a2762d239dbb6d1efbd60ba4ee974523d2ec7a9f0a171484d3f09d59019fcbb6a480abebfc06a21dc5af8fbf1b5388278cf84311e56329a6fc3a9426517c3cc581c8c8eada1c656e568bf108f66287fb66a405eb307eda530c18db2cdee78d8de9dcb8e93f195f54086f875935f7736c7c85eaac106f00d28d6753843c +08d0ffde3a6e4ef65608ea672e4830c12943d7187ccff08f4941cfc13e545f3b9c7ad5eebbe2b01642b486caf855c2c73f58c1e4e3391da8e2d63d96e15fd84953ae5c231911b00ad6050cd7aafdaac9b0f663ae6aab45519d0f5391a541707d479034e73a6ad805ae3598096af078f1393301493d663dd71f83869ca27ba508b7e91e81e128c1716dc3acfe3084b2201e04cf8006617eecf1b640474a5d45cfde9f4d3ef92d6d055b909892194d8a8218db6d8203a84261d200d71473d7488f3427416b6896c137d455f231071cacbc86e0415ab88aec841d96b7b8af41e05bb461a40645bf176601f1e760de5f,ea520b7cea0750c8f1ae4d7e5c80e95140d5a980d68f48807e0408a0d17dd084575191ec17a8d5b3d7a458774c453124509aee866183dfca7636d743b6b5798c4d62951d7db5640d1f4467d8703e08411270f3493241aef38fb757f00f0ee6a66c732f138294076de25f0811e8e1baf602e9f38cf92e96acf630ebeccd62c2837dc0f361c014698b3ccf586d372bb0591aafe68d138e1fbf05d205a6124b0ae5f483bbb429eb1bd517c799fbd2b9a154fdb7f687dd320106793d95d2acecfcb4811c627b3287490116c5f5a3082b0c2bb3b703fb2bd92b65e1cc07c61e1ad67c0f5b45c33c981e56cebd6c12d00d9d33c5dac18a41c1025ad24798de28518e5faa6ceca295cd13254367f04cac72fe0a0fe87214103fbdcd9af3fde362d6b7c0997b86cddab824210d1896deb7c75a3eb92be415f450cd62caa1fe4d7a9da2e8b57f2c31999f81ca8a22936684133ddde9fbec522c92b928191220e75f8fd20c29a1da662455fe7b94a2292006052b354db4f03375acb65044c2fdaeb977ca8e81318d2ea95c3981ce76dd9292678bc5f05351d2b4a4a410dec6790dcfa90ab7d9f8d7fe71b1a1e22bfc3ef06f21c7c99f01e11060abd9122dd3ffa6f0c2b402d15c6d4e8f8524a5ae6f1248b6878170f8b4a7d95c85b04587066e340156d80b20e708f5470801f4a5f46a74dee3332fb0adf0472ccd592b2462eae969ac5140 +d782abb72a5be3392757be02d3e45be6e2099d6f000d042c8a543f50ed6ebc055a7f133b0dd8e9bc348536edcaae2e12ec18e8837df7a1b3c87ec46d50c241dee820fd586197552dc20beea50f445a07a38f1768a39e2b2ff05dddedf751f1def612d2e4d810daa3a0cc904516f9a43af660315385178a529e51f8aae141808c8bc5d7b60cac26bb984ac1890d0436ef780426c547e94a7b08f01acbfc4a3825eae04f520a9016f2fb8bf5165ed12736fc71e36a49a73614739eaa3ec834069b1b40f1350c2b3ab885c02c640b9f7686ed5f99527e41cfcd796fe4c256c9173186c226169ff257954ebda81c0e5f99,aa38a2aa24d83c0055c05a4d8e5fd6e538ddecddbc6876d816900f4329a5e6d00a25b14ca626f3c9185590a151e438cec7164bd7135bf60afb78aa0c4148febb606c50a0449360952c1bd6c4654804102521315e457afdfa185565d96b6b230a4b36e0dbf215b19fb9b0bb3cfd6a8cc2e4abd6a1a50d978ebb5d351f7a65d39855e9ae57d7343e8ff7eb6fe7974791edf14861f30a428cfa9fa08e3ec4c4f1c6c5cf29a06d777459aecc379bf17e89a54b753fcbf3846835cee9fa834cb294ae3699893adc7de63d96f1f7cb60739e7d672a9d70078f9903f6617ead83ec5847424ebdb89b9a07762887f3a4ce8b7a839f0ffdee21822ddf92a73e85f112d2a6e023c620056e97e3435ccc172e768a195ba50f0238ad3a474fddad6ecd5b90262170dd026826f69cc2ace1d7d9aaba9f14c73c6f114ed5e5f75679679b7a2ecc81432bcba993c4e1caad6db7d9908b56e1404ee5080641a4d261d488457a1da7d5e1f09bfe9db23e3cd4be23b8fa84c93011958d57588a06d8df433428aa13cefd6ec348a52e0076564f0dc849058a601137835f90478b41bd58d24ed9b5e4ee5940a0963bb4fd7a2f5817be1903ab7d960f58ef88a310675ac0452ac6d1ee0cd65e2114865c4adf78b983eb7e894f28a716abbc766a1bab1858641c8cba3a18ba55584a1fdc2f80a61c36a9a56cd0289257ca0402ed99bc680aadcb29287119 +5fce8109a358570e40983e1184e541833bb9091e280f258cfb144387b05d190e431cb19baa67273ba0c58abe91308e1844dcd0b3678baa42f335f2fa05267a0240b3c718a5942b3b3e3bfa98a55c25a1466e8d7a603722cb2bbf03afa54cd769a99f310735ee5a05dae2c22d397bd95635f58c48a67f90e1b73aafcd3f82117f0166657838691005b18da6f341d6e90fc1cdb352b30fae45d348294e501b63252de14740f2b85ae5299ddec3172de8b6d0ba219a20a23bb5e10ff434d39db3f583305e9f5c039d98569e377b75a70ab837d1df269b8a4b566f40bb91b577455fd3c356c914fa06b9a7ce24c7317a172d,42db17a940111f1a93b0d583f6173991252286bc5098e136d27196697ae45b878767e17aa8e826dcde186cd76f2024e6772a0dec4c4a8db71959d75cfef0f20cbccd85f15ab5960c0ccda5f14ba0f02958752a0494d4b50e2cc67c554196bfc061f651440c6812cf5319639f93df1fe51d1511df6a3a6aa6538f46ea2d00a3a0f64b25cc9ee8ad05e321649987c36387e2d31da77edc1afa9632d77ee2d4ed54992bd51490a34dd743dcec567de957d55505d1d8dd43be3309f25ae61275203bd9743f3027b9f34b34db7504c2d7fd1aa99b936e7284f9e252df2e3359d868c0c83ab140e14c01b4b650d99ac6dc54ab35dd825116ea96c5fe88822b2d7182fbe9b3f3cfbedee129ef0814c171a207fc9793e1eb72edcd605c3e3b1534106093aa550bc8cff8de3c5d7152f18c87e161da0fc90594161f03b0ff9f9edd41f360db7347b067d8fe1e901d78a77f1ec44e33ed7aadd463c7d676e50b03a92b5417628cf986d5f93197333bfeb5d7b6a7c7863707b7ec032e3f5c62ca6a02938313140e62479842f4cf68a54a14ae0ab35538025920f317039169636f35f02a8e05c344e15492ea02164c62392b0795d4889f7ab68ac969b3b096c21cfe179833ba5fb857751c4713fc928b4623db593c9458aa36ba3b3693e07c3c5c84470f77e5cbdfd9770877a0999dcf8ff1ae27f51b65aaef9754e8a71739ac00be0f9458e0 +6172f1971a6e1e4e6170afbad95d5fec99bf69b24b674bc17dd78011615e502de6f56b86b1a71d3f4348087218ac7b7d09302993be272e4a591968aef18a1262d665610d1070ee91cc8da36e1f841a69a7a682c580e836941d21d909a3afc1f0b963e1ca5ab193e124a1a53df1c587470e5881fb54dae1b0d840f0c8f9d1b04c645ba1041c7d8dbf22030a623aa15638b3d99a2c400ff76f3252079af88d2b37f35ee66c1ad7801a28d3d388ac450b97d5f0f79e4541755356b3b1a5696b023f39ab7ab5f28df4202936bc97393b93bc915cb159ea1bd7a0a414cb4b7a1ac3af68f50d79f0c9c7314e750f7d02faa58bfa,82f8c16b8487e008284598fed9c5670c86fe35c8dea51ac59d38722829c94094bb2766aa4cda3139a15dd2ac0309253ec1a15b2969f84899637d3e2a5d55ed1e87561a546a2a7c190008bcf3bec233ebd1dd55242d7fac3a522c6016e62670f66edb6290afe801630e2bccabb450e4d44a9bd8f63d4b04e9f280a2a0972ab229351906f5f32de714867e8f04d276488f2aa5e62db8b634287404a73723abb7e152107a6da60f0c7efaa953db706398a09835e5edd99393db5a162fe3e564298395fcdaae8fa7e7a9081b8e14fa0e99e433e0d44326dc2e9e33378ea719ef780d303589f0a63841b5d5d74ec6e2bb073b55287a6419bc6af759d13f8c8875c372c12d392d7f80608412eb9a92a786048bf9a6f03d11c48f48b96fbe8bba329268242a5463c49b112ad71b8ec42a9a7f272f25819509e5c7a10d9c9f1a386e034be2a89ae28917cf014156211c795d9d6efb267d8f2bc48b5aa767cf8269a6e349701e77ef69f03fbb56c8e2a0c90905f1fda649b75d716c67894e932c63b13911c80339a1df4b7ae2035c7572bbb599e66e7cd9cf447f4f1f1deb63f64508ebe19485db3eb98607f3c87dea60faa331310fb4ba5730ce4024e07b4b134286472bc7b6c816c3f680618941f96539b81df82cd15edd426206f363a9e487c9fadbbb9db90da8f2d73e940c515a7b4ffa07443d35caa0c89ee9e511d66c2c8fe2f0ff +5668ecd99dfbe215c4118398ac9c9eaf1a1433fab4ccdd3968064752b625ea944731f75d48a27d047d67547f14dd0ffaa55fa5e29f7af0d161d85eafc4f2029b717c918eab9d304543290bdba7158b68020c0ba4e079bc95b5bc0fc044a992b94b4ccd3bd66d0eabb5dbbab904d62e00752c4e3b0091d773bcf4c14b4377da3efff824b1cb2fa01b32d1e46c909e626ed2dae920f4c7dbeb635bc754facbd8d49beba3f23c1c41ccbfcd0ee0c114e69737f5597c0bf1d859f0c767e18002ae8e39c26261ffde2920d3d0baf0e906138696cfe5b7e32b600f45df3aaa39932f3a7df95b60fa8712a2271fcaf3911ce7b511b1,706ca15167517d46c47844d044d0fc94cac5d23b90bdb64ce0a2df052ab37c967e57a476fa23c4d3c160c47371cbadc07a48d6a7c0e0b8ce8b337cac62e74e10b68c6fbb109b03547ce998780b605429d6e3061334c702b218c1d6686e3e8c7fcc2c4dec034b9fe68572b45e58de9661216d6a232d13a0eddda45892a4abab666cb528694de50a50d1368be99d257bc8c245429fe55000d3c9cc861fe9228e6ebfb7ddc53148b530e2ffe153b8f40007ed321b4464c0bd5de00c9791073b199ad57f6c242f7cb772ff05a06d010d156ad35dd0ed74c9593855576b1c7a4360770aa88bbf56b65395b163471e4057d27b59b554eeccd9ab8f24f457e400150c5f83b55d703620d68ecd7a01a9b3fec468b75c0f8bbbb08388318d50d38becdcd30f8644a2ebd11fd8e1d103af5f9b64d92bec64fddeffc73d9932871ccd1dc62515f0efa438393109c638f5c11405fd923d784b217f3417bec855a7ca290253cdd902802ebf400015cc2af646aef63684abb39bb98aa598ab767ac4df96cdf631d0500bc61dc822f2c54d761f0c926e023310ac11f3748e8a75564fbdb7039cdd3a42b601339be64bbda4b3f70899700fbda55d1337f5e33f5b00df97e6ca218d212eb771ecfe27b265a8ee8ac9d9f34baf279c49b318ebfba497ce77233cac4a9146ef5df7b93672a553a3ec46dafe8b7f93f233161fb91f5bca89db4d5f2c42 +03d625488354df30e3f875a68edfcf340e8366a8e1ab67f9d5c5486a96829dfac0578289082b2a62117e1cf418b43b90e0adc881fc6ae8105c888e9ecd21aea1c9ae1a4038dfd17378fed71d02ae492087d7cdcd98f746855227967cb1ab4714261ee3bead3f4db118329d3ebef4bc48a875c19ba763966da0ebea800e01b2f50b00e9dd4caca6dcb314d00184ef71ea2391d760c950710db4a70f9212ffc54861f9dc752ce18867b8ad0c48df8466ef7231e7ac567f0eb55099e622ebb86cb237520190a61c66ad34f1f4e289cb3282ae3eaac6152ed24d2c92bae5a7658252a53c49b7b02dfe54fdb2e90074b6cf310ac661,a90a149c4b7ba649888f90721e9ff91cc3589e2094b07909959c9a15ff010c610824f7a49ad3ca2864089e93ad7075c1966033ab55e9263871ddd56943d568fe0867221034994b74a3f855544e77e313a29efba367f309243db8a3027eb4da5371439cf39c21eb57823e1e6c73c0707356b68828aac6c8fd05f222f4c58b33cea1aa6344dc33fa88d9a5becc263b7cbf00045378910814c77c2224e56d913d2cbdc48ea6700de0e0306b499a3888f535274069e7ed493c12d46d23b7344cdc11b3433e39ed9cfaea6787704ffd63bee0072ba60f526fb52daddb41ec7e8216ac2a79bbe27e315a2e2824e1dd0bc2943f92393550aa6dc75f1c9755e5d8f811cedbc2139805d5599c1e1f6d4f56aad38e91ffb529a4820f260d752a93d7be57bc2f75234fa615ac72afec7619e0f26071d8a3c90f1fb486497d5af0ee45fd9d0b4aa0e07201b9e5f277e73d48edfbf75df8c3f1a635a733591615c392ce37738851d2ae847c6eb9ab5d91dcda7e953041cc6cf02f0e6604e8ae5756de528645feaa0e8f1c5f6f0c53abb72f84d0397a39a7fa3c7e8bc72b237e0d8b81c91ed18e09273ca20b763d34b779bb79d95c3749aaa703de53fd7fcfb361e2d3e13068fa076021c1373ce99dda0ddf931d2bedd095a3f95e41a0b09c56d01253f29558348d6f841908984e3096a7a0da6de77a5db124aa442edc394126c2f67b1b4a0dee +2edc282ffb90b97118dd03aaa03b145f363905e3cbd2d50ecd692b37bf000185c651d3e9726c690d3773ec1e48510e42b17742b0b0377e7de6b8f55e00a8a4db4740cee6db0830529dd19617501dc1e9359aa3bcf147e0a76b3ab70c4984c13e339e6806bb35e683af8527093670859f3d8a0fc7d493bcba6bb12b5f65e71e705ca5d6c948d66ed3d730b26db395b3447737c26fad089aa0ad0e306cb28bf0acf106f89af3745f0ec72d534968cca543cd2ca50c94b1456743254e358c1317c07a07bf2b0eca438a709367fafc89a57239028fc5fecfd53b8ef958ef10ee0608b7f5cb9923ad97058ec067700cc746c127a61ee3,fcd5fef0de750c6be7615bcb850676e9e83299c522bdc14fbac162f927b0aa4ea6dd76e43b1500c72be0d569566b57054b9340216904d518ecdb25ef39a62891290a1034f262a5e2c0fb37333bbd24323730cfd40fc161edc37eeb7c69769d3ab1f1454560ca78fb96cf133689ef8e75f57c2442e2cbae4f5c648666bfc7fa5da87e7c0dd4816292dfd56b2bcb383b3ff971185b724430f9596f3509c767e159873614b1d4ec45fa8586ec2321b791560785e5e3ce13ad5e8e1550a3290175acf2d78cdd17c0ea205ed7c1396bf9dc0844168ba3a66b4cb01c22629c80577de68d72edb44b419b13a2db6d67877d9cc0a0201c14dad69f25c88c3418ac45ea0d7ada58a02bb7dd0c276dfab29164e1844bad901acb6374ab75e21bfe2f3591b2c8f111a4606c8c52d85b4c073fdbbf25fc81758214ca172fbfe1c6b14476532f35f981c312739ce435f7ad3d0785dcd648e2a5391b64525a8785f3e06446c6bc1e09bfa19c7ce52651bfe1a2e355cd7c1c9ced6540d33194a2212b2a8768e7347042b560f68b4e22e42ed8f51c38375f9fa45c133a90d4f6f17cd5bf19dc9e1035df78f7e0077411bfd0fda23e6759388afc45485bf271c8fdb316a32b898c3d6dcc0738b3aa043acd1848fb7c6fe86a844fc764953d392569520e78fa11bcd6b0af3be8e7bcb0006f56881889cdde27870fe7c9e703f57b6cbe0d6372f2322b +90b28a6aa1fe533915bcb8e81ed6cacdc10962b7ff82474f845eeb86977600cf70b07ba8e3796141ee340e3fce842a38a50afbe90301a3bdcc591f2e7d9de53e495525560b908c892439990a2ca2679c5539ffdf636777ad9c1cdef809cda9e8dcdb451abb9e9c17efa4379abd24b182bd981cafc792640a183b61694301d04c5b3eaad694a6bd4cc06ef5da8fa23b4fa2a64559c5a68397930079d250c51bcf00e2b16a6c49171433b0aadfd80231276560b80458dd77089b7a1bbcc9e7e4b9f881eacd6c92c4318348a13f4914eb27115a1cfc5d16d7fd94954c3532efaca2cab025103b2d02c6fd71da3a77f417d7932685888a,d4c1f39098d123b0dd88504ff6ab424e31f5d3726efbf86500ce730bae87ec671c97f768f9593c8411b57e306b0cb394f33b866493bbfc3f089fa4e875858fbce814debb905fa7249f7dbe737f5f6725cf76d2a50b319d96bfcd55e03a6e923b01003e6d5976a66aa5250c337c9c4c402b9733c8f626789fb23ff1043494a73960297ca9110d23def1d72b601f6c42cf83938003b3a386cdded4a70b24975c958597894fd6e2c412cdc6e32ea7f398242f84d4f4bd469dee9ad10b717ebaa26f2481224f47135219231279c36867751a476af60ac4af8f151f301cacf5d7890d62a135b44149cc7405208212b7547ec0617abf96a7741eb2e08d18aaa17357b4f2ddab92257e893cfcb91bdd73dff3f8e6c28fdf38dc89094c719e69508af7abee4d1403e0f139348632a45708aab27d4403f5d5b85a81ac72ede9e2448f1fb87571cca3631bda9f9d0dc060000b03450fbc7d98af74f0b0a8a1bbdeed01c4c8300b05e05cf7af7824b246666eb53119fcfaad3c7aaeefe0274a55abc01abf0a38189e46cd3ce56f0a4db8e9b498eec68e03db7fdc9177230dfc72f45a41a7064f42f3c527a5e5473b2f68d1c8ba960bd3b458be2bef2c3623b38a66266eacea3cc93c09f4cf566327e78ec39ce5541e48142fef380af5161ed9c63724fa16384f574b1d1cbc3f1c852028cb9a8d1f411d6ac119e11e6202e566b49341d40d19 +2969447d175490f2aa9bb055014dbef2e6854c95f8d60950bfe8c0be8de254c26b2d31b9e4de9c68c9adf49e4ee9b1c2850967f29f5d08738483b417bb96b2a56f0c8aca632b552059c59aac3f61f7b45c966b75f1d9931ff4e596406378cee91aaa726a3a84c33f37e9cdbe626b5745a0b06064a8a8d56e53aaf102d23dd9df0a3fdf7a638509a6761a33fa42fa8ddbd8e16159c93008b53765019c3f0e9f10b144ce2ac57f5d7297f9c9949e4ff68b70d339f87501ce8550b772f32c6da8ad2ce2100a895d8b08fa1eead7c376b407709703c510b50f87e73e43f8e7348f87c3832a547ef2bbe5799abedcf5e1f372ea809233f006,d6fc1e61d2bc27ca5dd5acd290c2831070e66c38f03d2dc91184aa9eaeaf03a28e009a1ae1c775f4274b3ae6b5491c9b0c838cf90d185fe94c49ef46ababa62d6ed1f550d83466efc6b97789ca36ad1a6a3e6703a5da9764e47f29c8096e3d317fc7aff0b79b1c278610afe3f5e7fa7fd52fd36cc9e7000da809346281eeba1ee9bb06aad61f3e02cf4a5bb7b211e2437ed21437fae78378f28b14184b7de7e80e845837a483c0c6df8e233687f71f0f9745d585411f103356a0c474f9238403e40960f63a3418199325ea6e8eada31c94f78cff1b83a2efa4e49045e0ce34a5c61025399328cd7f79a1e4cc792d8ae9f1aa954235b515158be5f4064b889c14a3a83ab59cf26945dbbf70f3a5f3bdbe8674546d6df384c40d56b286d309a114871bc18e144d2334c88c32f141f6dfa70859a9ff7d4996bd3faba0299794e861db8be8a324822c4b1dfbfa70f8d9149c3dc01e0e556dc744c98fc2f92c8600c856bd174759af467d6618c4347366ce04d06a0ee4feb9a27b79bed01beb7dee41859c1306939d55b0e319dd2e0e001f6174361cb804cd3ac3332b8d8a1d8204d5255f81faa0bdc29ae71693586c987e35c81e314a3848b03cf7b37eaee2ad6ed4736e1f20a098ddaec612aee17294313da16453d7901cf80fc729962206ad4820b00e8ef0d999857832256e5b784e8a89dfddd38f6e15de081a82e19a2a05d417 +721645633a44a2c78b19024eaecf58575ab23c27190833c26875dc0f0d50b46aea9c343d82ea7d5b3e50ec700545c615daeaea64726a0f05607576dcd396d812b03fb6551c641087856d050b10e6a4d5577b82a98afb89cee8594c9dc19e79feff0382fcfd127f1b803a4b9946f4ac9a4378e1e6e041b1389a53e3450cd32d9d2941b0cbabdb50da8ea2513145164c3ab6bcbd251c448d2d4b087ac57a59c2285d564f16da4ed5e607ed979592146ffb0ef3f3db308fb342df5eb5924a48256fc763141a278814c82d6d6348577545870ae3a83c7230ac02a1540fe1798f7ef09e335a865a2ae0949b21e4f748fb8a51f44750e213a8fb,f61115ae2fd5442877d08e39a57df8d4a5f117d57c2688617a8da64f9482f5a817e0d3dfe41a9cff331f4d5e3240da38e43b7b87925fe378512cd83172fc3cc2396a8acdbf5010ca576603581bf7df6d7529423709b30db81620b9f660b5aa82ea6c98656da27b4709da85d364ec015c2eaaf2aadeda2c040badfab16f7c2ae39da6a1691057301b7c3252884cd9ee079e68857d6d3b7f4f85556140db03421f09e98b80a8422500a349b5c0d8ffb25433a4121b7682f8517500930e5f2766c687846553c9f76de38a0ee41f76d3a22696b95774bd5eb747f6445d8044147ee38b127892f4b0b1932470b454f8f1bb697a2f6659ab13f3e2003c97d292a7878e12ce47aa9619fcfe2135d8890710b2733df40fc75dad57b99042e4f54aea9332ed52cab8ffde5195eda05368b09e9fd55731da20012a7d255aaa33d74e22917e58bd546ee90947a16044b14dfffab05916c382d1f038b63d2f20dc09c117c8724a4db3970b7cb143b1522d010881fe6663410db3400db33b62a6e70dfd48c2fe773054e1494944b60fc5d3bc803027c4b12e6a230fe41ca4d072f3628d20782cd7de4e98a29df083fef503e46eefa787f8b0e9b1e7c884b9122977532bd71fb63120c1069156516d265fe3559b18965e968b9bbd653484866847e76262d0ccbee8fb0314a8c40b8c35725337ca4a241592e47d5b8981d3212c62ae7e25f27495 +6b860d39725a14b498bb714574b4d37ca787404768f64c648b1751b353ac92bac2c3a28ea909fdf0423336401a02e63ec24325300d823b6864bb701f9d7c7a1f8ec9d0ae3584aa6dd62ea1997cd831b4babd9a4da50932d4efda745c61e4130890e156aee6113716daf95764222a91187db2effea49d5d0596102d619bd26a616bbfda8335505fbb0d90b4c180d1a2335b91538e1668f9f9642790b4e55f9cab0fe2bdd2935d001ee6419abab5457880d0dbff20ed8758f4c20fe759efb33141cf0e892587fe8187e5fbc57786b7e8b089612c936dfc03d27efbbe7c8673f1606bd51d5ff386f4a7ab68edf59f385eb1291f117bfe717399,3bbf30faf9241c9e3e27ec2c17ab24aa3673799371528cb98a6d9b91e553553680505d7cd6590377ab54e5dc7d7c72035300af651ab0ea52aba9fe1d490ee5c95b146138f61f957c5cec8d4633175c99a00590ddb987d2e032547d99c691b32c12d7392742a5ae47d03b5a08a544548bbec45b9580de1cecb7b9f06a88614daa116d7200dc8e81ef3c7c5a716044133d2a66ffbfa35e1668fed9c1045da77df92564f60087d173f71b75f040bc6cc149234659c1213beef18c53cdefef2ff466a2f16823d7659e04ad61f6b23ddca8bf35af892bfb8a952df4ed254ffac52cf71f4c872ef15ef11fae9967fc8f1c218e7caba5382936f4cbbdf7f41aa2a239bcf36fe158b7d771becf8981ddaaac31f744d949396623cb3bb754189fb5e78dd94171c1bd6ad3953dda6d4dacd3b57d37b1b73fab0d2caa0b5b3f6a2c9f324f4b93c912991e50f8872bc276451969ff379aaefc3c710de16128136ae0d1268d106bbce2aa4d2db0c5edb171dff104df4f7d49fe017c82083dd1e9f7dee489bb38ce091c222c3a0898f17a0da1d4b2830c7b7c3c372fdf2a4e9cd7b468107513d6e3adcc91f662218a7364a7340966a4d692cf394443203dce8b33503aee6c1259bbcf36351af93ef01764be4863759ed0abca9e59ca6004f2e5738af7efc7be8f9a1e106551b77aefbff9dbe99ed5abb12207cf38f7fb9ba77d776fa0df3bfaac +6a01830af3889a25183244decb508bd01253d5b508ab490d3124afbf42626b2e70894e9b562b288d0a2450cfacf14a0ddae5c04716e5a0082c33981f6037d23d5e045ee1ef2283fb8b6378a914c5d9441627a722c282ff452e25a7ea608d69cee4393a0725d17963d0342684f255496d8a18c2961145315130549311fc07f0312fb78e6077334f87eaa873bee8aa95698996eb21375eb2b4ef53c14401207deb4568398e5dd9a7cf97e8c9663e23334b46912f8344c19efcf8c2ba6f04325f1a27e062b62a58d0766fc6db4d2c6a1928604b0175d872d16b7908ebc041761187cc785526c2a3873feac3a642bb39f5351550af9770c328af7b,32ffbc063291bd2c957dcdc76632dd1bce0dbfcac549228d277d81b6abba904d43330ef8081e164d8fcaf520e12b388c40168295a63d365b57a7694d4c50812b99c86e036116a07f0164b7088537688d4baf1e0fcdc84c6da8d92789466a606f1ee25ce7461fa65df04bdebc24a3a4bac3b02b469c8e85f53d9481dbe244dc67b8bce84cc7175113d4d7b2413601e9140b7802d9fb712938e9c5034ceea753b7c77c08bc1c03d511ed0b4d5007bbac38ee76b675b73aef8623ca9ccd579e28bae7d695be25fbdb673f3401a75d5a57d142034a7bee554ed30cc7f03cbb363c10a54f818937ae468f5845ada4f9a2a1bf6887105879da745aae64d87f26f489a622370405ada3d3688697db8f04557736c51725aca02e4b76f6a9e88dc6d52d5a63806bba1bd687faac522d7b5b0a8d6073283659056e784320822eaf70666180adfdba2675b4ead6f6b2ef826e7598bbd8c1956a15c1864d249368900d82498297c3e77a19ebe20a111d13fc03ca88d9332f919ea4ad15be8e397aba0a4e2ba85f3fa5999eb553780f0d2f35d76a63b0106406fc3b4550476572e1464c986870027849ada0f164b48b839ecd3ca9afeadee3f63aa6ca06c635990922995db0bb99a4ac4b7f3aac52069f3130660ae0f074fbaa1d103a086b59aee4da3188cca3227670fd43597abfc1a2f6cfa67fa24ef0b20b4aade9ce8e68cab34111d10464 +b3c5e74b69933c2533106c563b4ca20238f2b6e675e8681e34a389894785bdade59652d4a73d80a5c85bd454fd1e9ffdad1c3815f5038e9ef432aac5c3c4fe840cc370cf86580a6011778bbedaf511a51b56d1a2eb68394aa299e26da9ada6a2f39b9faff7fba457689b9c1a577b2a1e505fdf75c7a0a64b1df81b3a356001bf0df4e02a1fc59f651c9d585ec6224bb279c6beba2966e8882d68376081b987468e7aed1ef90ebd090ae825795cdca1b4f09a979c8dfc21a48d8a53cdbb26c4db547fc06efe2f9850edd2685a4661cb4911f165d4b63ef25b87d0a96d3dff6ab0758999aad214d07bd4f133a6734fde445fe474711b69a98f7e2b,ba2b1cec1bbb46ea19af7a869fdc73cb3791708defdf530dc9999e9510fcb02aef571b3c5e7258d86dc80edb53b71644110b9e82c239ff17ef523840e6af4d597d814d4e5ec2ea98e451c05318402d5bff6e6e573565ab640e00bf6f8c3646b3f6656047c60ed43393af7f2d8df8915a0f6f44d69fe193dd5617fe39bda638e4ddda771b0e771318a53adecbdbff07d6cfeaa04a837034c6ea0e70c8fc244304804e0e890f31f951007a2f897bf3f00221b63ea3dd8d9d1dd3608596ef7817190d56d36eb99266f83b7f1a2080f7a5405cde86017948bf977c6cc78565b3eec570b36fc06566909951f31cad6094f296f759e858bf7aa9298b2f4f7f5c3167c145ec126c40f6e5dccd87c82489400ff8b9b79b19e472596618eed3fbc6fe5545bb3276ed710ca128a3c2fa9b831fa6fa3b126380c4baed23d9186fac830891f98c81d401a6513e139f6546f065e8af6e1a9595218a025d8292176f8acc4acaee6308c08db5215fc0064d7279ff6165033e0946fb7c10bf5dec2d26950b2abdf71ae2b5bab856386a25117214d5830b7d5e250fdf200cc5eea0085648fa2aab6eec363da41afd82e14eda957ea3ab7c65100f4a8071aca6f1891b5465b7c46caa9612ccb0875369cec4bcf9d99be35e03ae57c83fc80903afe25ecf23d016cf6989eda5b900efcf59c529fd299cf155a1310b239cd364301f520d16c74e270d0d +83af34279ccb5430febec07a81950d30f4b66f484826afee7456f0071a51e1bbc55570b5cc7ec6f9309c17bf5befdd7c6ba6e968cf218a2b34bd5cf927ab846e38a40bbd81759e9e33381016a755f699df35d660007b5eadf292feefb735207ebf70b5bd17834f7bfa0e16cb219ad4af524ab1ea37334aa66435e5d397fc0a065c411ebbce32c240b90476d307ce802ec82c1c49bc1bec48c0675ec2a6c6f3ed3e5b741d13437095707c565e10d8a20b8c20468ff9514fcf31b4249cd82dcee58c0a2af538b291a87e3390d737191a07484a5d3f3fb8c8f15ce056e5e5f8febe5e1fb59d6740980aa06ca8a0c20f5712b4cde5d032e92ab89f0ae1,481cf76e2ed1a1eb74050e9632a3bce4913d2d516e251816a2d55706314d6483b955b87b0a6ee013f248e2ab4517b800e23c8ad85926c36eabab1f2c36625d0492c7f001760e3715eba80aa912f5e3e1a7918d1ede2fa7fdcbbae23ff75adb2bd88527bce6f02fef73175487781f26c7c7dbfd04143b70d636217abf7ef69364b8b7c493c64434dd1ccb523e5cbcc81211a64fefa9f41ffdb38d9d8d5e0a9e51be38dcce5225652cab5a0ef8d8ee7dd175b929aba19480299176d7122ce1a763345a091aeb8c5df8ab37cd4d96c3230e8ea847c1d28986d3398dea80f2c48c3b4406524bcd4850dc02621b470ac7df27372d95822795e8a2d81aaccd72f535110fa01fdf0cabd7d848960603b80758406ffa78fb6c68db4fdf40c146318c2d296cd1a5bd7c1e11ea967b72792a3a7fbac9089588d3fb555f122f7afb499aa3b3c43e07bd3d8f9fe980213c174d37db9fbc8ecd318cc207689766a327614ed6b01bb0a5a2cf04f5b54edd97be72e5f894328ee86a1c9d2ffb65c9fd0fea4ba865d0ea4f16def67ce1d6d42095c1c8488376a4326396fe3448484754153b2d4a94c442bde7cf67e8b9994e958d3cc17d5b0fd7a4f203024ec29cebf40b549f2936cc6c196ab83ec8c4585d28e31d3ecf5bb59ab24b2cc6908e51a9bcd5bbcfa92c02e61b08ca7e3aaaed73c450909c8b9bdb422ccab0a86c5a5c3c10a634b17332 +a7ed84749ccc56bb1dfba57119d279d412b8a986886d810f067af349e8749e9ea746a60b03742636c464fc1ee233acc52c1983914692b64309edfdf29f1ab912ec3e8da074d3f1d231511f5756f0b6eead3e89a6a88fe330a10face267bffbfc3e3090c7fd9a850561f363ad75ea881e7244f80ff55802d5ef7a1a4e7b89fcfa80f16df54d1b056ee637e6964b9e0ffd15b6196bdd7db270c56b47251485348e49813b4eb9ed122a01b3ea45ad5e1a929df61d5c0f3e77e1fdc356b63883a60e9cbb9fc3e00c2f32dbd469659883f690c6772e335f617bc33f161d6f6984252ee12e62b6000ac5231e0c9bc65be223d8dfd94c5004a101af9fd6c0fb,47929c7d0c4db7f9ebaef5ea93bbc7b255c8e249edf893257c7aeb996cc8eeab1a6ca4520f4d4257144cd5a9a850a372bd00dcca339c4781479e976b7508688dc63783ca9ec7a9fb8196721c8c24aff5bf9385453e9b85a1f7fc75a029e09d45910dc24f1304d1e51ec702e79dc731b6120596bf3df30dc0f756834ac0bb94f99243eac8910015d10dc618252a77d8b900c4141cff2461c408c19b978d1b58e690815c0c07b901137a45f045abbd85428acf51410135eb27128ec6725062665d1e6a6b8ebad3b81d36770b0cd14303b9264d25dfee14b27798e22b46a77adf456fdafeb6d597f7e3152aad40e29ab7e7808a4e46f43e18856518ce6d716062029024afe0ef0a7f3783f755977f8b10eec658aabc20b2ee0e8d3ade73e2a7e78e4cec3c09ada3089247c678238580891ada460d60da297a4eb7ddba67d117e21e7461bce7cfc7573352696b4643d6d9c9ec97eb431f6159ac438479bc6547ba04552748171f4aeaaa2ef0dd7eccb4abdb2e07ab536f0183516b1dcbf0e12fd134f9ad85b854afdcce14c1c52d0bf1ee1e52a12fdd63632d9df1b78e7899b03527da8597124ae3c8797e6832138508ab89069bf692a9e5d102ca20807a4bd5033d7bf7c918998d3d52b240b8449d12b402ee7f50b211f597f1bd39b69a4dff9a0e6dbe347ac1137b3631dd15f97217a5bfe2c6579bc3c44f8789ded23efec51a64 +a6fe30dcfcda1a329e82ab50e32b5f50eb25c873c5d2305860a835aecee6264aa36a47429922c4b8b3afd00da16035830edb897831c4e7b00f2c23fc0b15fdc30d85fb70c30c431c638e1a25b51caf1d7e8b050b7f89bfb30f59f0f20fecff3d639abc4255b3868fc45dd81e47eb12ab40f2aac735df5d1dc1ad997cefc4d836b854cee9ac02900036f3867fe0d84afff37bde3308c2206c62c4743375094108877c73b87b2546fe05ea137bedfc06a2796274099a0d554da8f7d7223a48cbf31b7decaa1ebc8b145763e3673168c1b1b715c1cd99ecd3ddb238b06049885ecad9347c2436dff32c771f34a38587a44a82c5d3d137a03caa27e66c8ff6,401a2897fca682a6949d88f939ecf943140eca42f90d86d2dc301efea2dbd4c03998d686dcec124334f0c5ba7674f25cdbf36fb9480e8db2111ba4e78221d1855893a526f97535936aac3d88d8908786bf5a9334eee1a4d9b346a95573993db7c9c7a75ce692df5118963083b778865396501845e12e4ddde82035b03a6c43697cdb2b1c5c4eb24d0d484acb105549290b9fcd5c8b4ee31d4eb542a2c9637d8e34687b18ab2dcf92a826877f9f1766ecbc43e3879e481c4b6ad994586f110818a20b6f93c8ced8c1fbc0b54572714ef722e83046a93ce23d118e494969d5bd1a9e9c744c5a56d193d2bc7054a4a0bb22987aa2ca672e69c2b733c860f292c4f218557b7b921c4367b611e1d7fe30cf454eebf09990c5acd7b43a174a92e0b8d8180dfd409261274ff09f55013a7f58242d29330426bd4d8ef8365e4de86469c436fc0fdc3b858eee3e29c2ed6f650266a7b34d2a0e5ed438e60891df92fe6b950d95bb99f90344fc5ef5b210692059e9f859a476a3aff4bb478f5dda80629e236afd3742e35f46046bdf1522590562c8337c39fd38b8f57cedd49198f8242d951330fc4d0bdf5413345bb7315eeb67e4b1d561d185fadf23c0979b036d885391643d7514b3fabcd16382ccc49e6b7c0707b90ac0f86176dcf9d7f1dcd270374d2ab8e1e9fafb7dec0f952fbd4456c9e7fcda80cf0a46ce98af6e9b588a370741 +83167ff53704c3aa19e9fb3303539759c46dd4091a52ddae9ad86408b69335989e61414bc20ab4d01220e35241eff5c9522b079fba597674c8d716fe441e566110b6211531ceccf8fd06bc8e511d00785e57788ed9a1c5c73524f01830d2e1148c92d0edc97113e3b7b5cd3049627abdb8b39dd4d6890e0ee91993f92b03354a88f52251c546e64434d9c3d74544f23fb93e5a2d2f1fb15545b4e1367c97335b0291944c8b730ad3d4789273fa44fb98d78a36c3c3764abeeac7c569c1e43a352e5b770c3504f87090dee075a1c4c85c0c39cf421bdcc615f9eff6cb4fe6468004aece5f30e1ecc6db22ad9939bb2b0ccc96521dfbf4ae008b5b46bc006e,8e756b09ee1679dfb957aebc5b55ccca4414aead58229106040a1a58f4768d241a0869a3a7d682dd937fb13352f635ec3d57838469ba6ab93a9dc86ef3598f53e044fea98301971a2182a1725c32bf5529fce04665c9f2c1275d484543e038e964d855e1d91983ea34f7d66e19e27b6f59b23e9690c291432793167a5e8a9b44aeb9ecbaa500e2616ac32af6b6acfb6c2b4a485be4fe5072bd1f0e08ae343bf0c5cb241111f894bfd4be6a26dbc7ed352d71744bd9a4d51f149ac4ea5ad323b063d93e56ae12b81d88eb083024d3d164c0fd7b4bce8a800f69cb7c66594d7ab20818dc79f01853fee81b345210cdf2964c3a25a0934ece6b13029b5fdc3b780cd85a46e54495328f0baa63078b3948172443b57d8571a82c717a4d93a6fd9ada3a1efc41f3697600d02fcb555eef1d5162b346d892eabc60251b048979f49e3855fd5a49520a60d099ed2f5a5c8764875a4ea242407856b5dc393ba1e71fd04c53181572ad90e0184934d7b65e0ea56a8521a284e6a5b98bc704ad92e658a8b4c64cf67157ac0673159b9e2a9ea9d94c6fb3e5bd963dfcaad484cf06be75e3f23a11287b82bc6618b6eda760d29d1d8400c41ec3b42a24ec1e070bce0eec7dc6c6f19e2a6ba7faab72dd81f31814a18ce984c7aae6d9caaa800318418f56871c8cfd8778faa7dad3426849e10b041d6190eb445410f5f5e476068579fedc5869 +3a3a819c48efde2ad914fbf00e18ab6bc4f14513ab27d0c178a188b61431e7f5623cb66b23346775d386b50e982c493adbbfc54b9a3cd383382336a1a0b2150a15358f336d03ae18f666c7573d55c4fd181c29e6ccfde63ea35f0adf5885cfc0a3d84a2b2e4dd24496db789e663170cef74798aa1bbcd4574ea0bba40489d764b2f83aadc66b148b4a0cd95246c127d5871c4f11418690a5ddf01246a0c80a43c70088b6183639dcfda4125bd113a8f49ee23ed306faac576c3fb0c1e256671d817fc2534a52f5b439f72e424de376f4c565cca82307dd9ef76da5b7c4eb7e085172e328807c02d011ffbf33785378d79dc266f6a5be6bb0e4a92eceebaeb1,8a5199b4a7e133e264a86202720655894d48cff344a928cf8347f48379cef347dfc5bcffab99b27b1f89aa2735e23d30088ffa03b9edb02b9635470ab9f1038985d55f9ca774572dd006470ea65145469609f9fa0831bf1ffd842dc24acade27bd9816e3b5bf2876cb112232a0eb4475f1dff9f5c713d9ffd4ccb89ae5607fe35731df06317949eef646e9591cf3be53add6b7dd2b6096e2b3fb06e662ec8b2d77422daad9463cd155204acdbd38e319613f39f99b6dfb35ca9365160066db19835888c2241ff9a731a4acbb5663727aac34a401247fbaa7499e7d5ee5b69d31025e63d04c35c798bca1262d5673a9cf0930b5ad89bd485599dc184528da4790f088ebd170b635d9581632d2ff90db79665ced430089af13c9f21f6d443a818064f17aec9e9c5457001fa8dc6afbadbe3138f388d89d0e6f22f66671255b210754ed63d81dce75ce8f189b534e6d6b3539aa51e837c42df9df59c71e6171cd4902fe1bdc73fb1775b5c754a1ed4ea7f3105fc543ee0418dad256f3f6118ea77114a16c15355b42877a1db2a7df0e155ae1d8670abcec3450f4e2eec9838f895423ef63d261138baaf5d9f104cb5a957aea06c0b9b8c78b0d441796dc0350ddeabb78a33b6f1f9e68ede3d1805c7b7e2cfd54e0fad62f0d8ca67a775dc4546af9096f2edb221db42843d65327861282dc946a0ba01a11863ab2d1dfd16e3973d4 +# EOF diff --git a/Modules/_sha3/cleanup.py b/Modules/_sha3/cleanup.py new file mode 100755 index 0000000000000000000000000000000000000000..17c56b34b261abd5d50869911e75af4145cd76c2 --- /dev/null +++ b/Modules/_sha3/cleanup.py @@ -0,0 +1,50 @@ +#!/usr/bin/env python +# Copyright (C) 2012 Christian Heimes (christian@python.org) +# Licensed to PSF under a Contributor Agreement. +# +# cleanup Keccak sources + +import os +import re + +CPP1 = re.compile("^//(.*)") +CPP2 = re.compile("\ //(.*)") + +STATICS = ("void ", "int ", "HashReturn ", + "const UINT64 ", "UINT16 ", " int prefix##") + +HERE = os.path.dirname(os.path.abspath(__file__)) +KECCAK = os.path.join(HERE, "kcp") + +def getfiles(): + for name in os.listdir(KECCAK): + name = os.path.join(KECCAK, name) + if os.path.isfile(name): + yield name + +def cleanup(f): + buf = [] + for line in f: + # mark all functions and global data as static + #if line.startswith(STATICS): + # buf.append("static " + line) + # continue + # remove UINT64 typedef, we have our own + if line.startswith("typedef unsigned long long int"): + buf.append("/* %s */\n" % line.strip()) + continue + ## remove #include "brg_endian.h" + if "brg_endian.h" in line: + buf.append("/* %s */\n" % line.strip()) + continue + # transform C++ comments into ANSI C comments + line = CPP1.sub(r"/*\1 */\n", line) + line = CPP2.sub(r" /*\1 */\n", line) + buf.append(line) + return "".join(buf) + +for name in getfiles(): + with open(name) as f: + res = cleanup(f) + with open(name, "w") as f: + f.write(res) diff --git a/Modules/_sha3/clinic/sha3module.c.h b/Modules/_sha3/clinic/sha3module.c.h new file mode 100644 index 0000000000000000000000000000000000000000..bfd95cd6ef0ba7806f16a71b4bd029f2bdc0a403 --- /dev/null +++ b/Modules/_sha3/clinic/sha3module.c.h @@ -0,0 +1,148 @@ +/*[clinic input] +preserve +[clinic start generated code]*/ + +PyDoc_STRVAR(py_sha3_new__doc__, +"sha3_224(string=None)\n" +"--\n" +"\n" +"Return a new SHA3 hash object with a hashbit length of 28 bytes."); + +static PyObject * +py_sha3_new_impl(PyTypeObject *type, PyObject *data); + +static PyObject * +py_sha3_new(PyTypeObject *type, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + static char *_keywords[] = {"string", NULL}; + PyObject *data = NULL; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|O:sha3_224", _keywords, + &data)) + goto exit; + return_value = py_sha3_new_impl(type, data); + +exit: + return return_value; +} + +PyDoc_STRVAR(_sha3_sha3_224_copy__doc__, +"copy($self, /)\n" +"--\n" +"\n" +"Return a copy of the hash object."); + +#define _SHA3_SHA3_224_COPY_METHODDEF \ + {"copy", (PyCFunction)_sha3_sha3_224_copy, METH_NOARGS, _sha3_sha3_224_copy__doc__}, + +static PyObject * +_sha3_sha3_224_copy_impl(SHA3object *self); + +static PyObject * +_sha3_sha3_224_copy(SHA3object *self, PyObject *Py_UNUSED(ignored)) +{ + return _sha3_sha3_224_copy_impl(self); +} + +PyDoc_STRVAR(_sha3_sha3_224_digest__doc__, +"digest($self, /)\n" +"--\n" +"\n" +"Return the digest value as a string of binary data."); + +#define _SHA3_SHA3_224_DIGEST_METHODDEF \ + {"digest", (PyCFunction)_sha3_sha3_224_digest, METH_NOARGS, _sha3_sha3_224_digest__doc__}, + +static PyObject * +_sha3_sha3_224_digest_impl(SHA3object *self); + +static PyObject * +_sha3_sha3_224_digest(SHA3object *self, PyObject *Py_UNUSED(ignored)) +{ + return _sha3_sha3_224_digest_impl(self); +} + +PyDoc_STRVAR(_sha3_sha3_224_hexdigest__doc__, +"hexdigest($self, /)\n" +"--\n" +"\n" +"Return the digest value as a string of hexadecimal digits."); + +#define _SHA3_SHA3_224_HEXDIGEST_METHODDEF \ + {"hexdigest", (PyCFunction)_sha3_sha3_224_hexdigest, METH_NOARGS, _sha3_sha3_224_hexdigest__doc__}, + +static PyObject * +_sha3_sha3_224_hexdigest_impl(SHA3object *self); + +static PyObject * +_sha3_sha3_224_hexdigest(SHA3object *self, PyObject *Py_UNUSED(ignored)) +{ + return _sha3_sha3_224_hexdigest_impl(self); +} + +PyDoc_STRVAR(_sha3_sha3_224_update__doc__, +"update($self, obj, /)\n" +"--\n" +"\n" +"Update this hash object\'s state with the provided string."); + +#define _SHA3_SHA3_224_UPDATE_METHODDEF \ + {"update", (PyCFunction)_sha3_sha3_224_update, METH_O, _sha3_sha3_224_update__doc__}, + +PyDoc_STRVAR(_sha3_shake_128_digest__doc__, +"digest($self, /, length)\n" +"--\n" +"\n" +"Return the digest value as a string of binary data."); + +#define _SHA3_SHAKE_128_DIGEST_METHODDEF \ + {"digest", (PyCFunction)_sha3_shake_128_digest, METH_VARARGS|METH_KEYWORDS, _sha3_shake_128_digest__doc__}, + +static PyObject * +_sha3_shake_128_digest_impl(SHA3object *self, unsigned long length); + +static PyObject * +_sha3_shake_128_digest(SHA3object *self, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + static char *_keywords[] = {"length", NULL}; + unsigned long length; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "k:digest", _keywords, + &length)) + goto exit; + return_value = _sha3_shake_128_digest_impl(self, length); + +exit: + return return_value; +} + +PyDoc_STRVAR(_sha3_shake_128_hexdigest__doc__, +"hexdigest($self, /, length)\n" +"--\n" +"\n" +"Return the digest value as a string of hexadecimal digits."); + +#define _SHA3_SHAKE_128_HEXDIGEST_METHODDEF \ + {"hexdigest", (PyCFunction)_sha3_shake_128_hexdigest, METH_VARARGS|METH_KEYWORDS, _sha3_shake_128_hexdigest__doc__}, + +static PyObject * +_sha3_shake_128_hexdigest_impl(SHA3object *self, unsigned long length); + +static PyObject * +_sha3_shake_128_hexdigest(SHA3object *self, PyObject *args, PyObject *kwargs) +{ + PyObject *return_value = NULL; + static char *_keywords[] = {"length", NULL}; + unsigned long length; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, "k:hexdigest", _keywords, + &length)) + goto exit; + return_value = _sha3_shake_128_hexdigest_impl(self, length); + +exit: + return return_value; +} +/*[clinic end generated code: output=2eb6db41778eeb50 input=a9049054013a1b77]*/ diff --git a/Modules/_sha3/kcp/KeccakHash.c b/Modules/_sha3/kcp/KeccakHash.c new file mode 100644 index 0000000000000000000000000000000000000000..e09fb43cacea1d099a2b1eb1422e4e762cc36f4c --- /dev/null +++ b/Modules/_sha3/kcp/KeccakHash.c @@ -0,0 +1,82 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#include +#include "KeccakHash.h" + +/* ---------------------------------------------------------------- */ + +HashReturn Keccak_HashInitialize(Keccak_HashInstance *instance, unsigned int rate, unsigned int capacity, unsigned int hashbitlen, unsigned char delimitedSuffix) +{ + HashReturn result; + + if (delimitedSuffix == 0) + return FAIL; + result = (HashReturn)KeccakWidth1600_SpongeInitialize(&instance->sponge, rate, capacity); + if (result != SUCCESS) + return result; + instance->fixedOutputLength = hashbitlen; + instance->delimitedSuffix = delimitedSuffix; + return SUCCESS; +} + +/* ---------------------------------------------------------------- */ + +HashReturn Keccak_HashUpdate(Keccak_HashInstance *instance, const BitSequence *data, DataLength databitlen) +{ + if ((databitlen % 8) == 0) + return (HashReturn)KeccakWidth1600_SpongeAbsorb(&instance->sponge, data, databitlen/8); + else { + HashReturn ret = (HashReturn)KeccakWidth1600_SpongeAbsorb(&instance->sponge, data, databitlen/8); + if (ret == SUCCESS) { + /* The last partial byte is assumed to be aligned on the least significant bits */ + + unsigned char lastByte = data[databitlen/8]; + /* Concatenate the last few bits provided here with those of the suffix */ + + unsigned short delimitedLastBytes = (unsigned short)((unsigned short)lastByte | ((unsigned short)instance->delimitedSuffix << (databitlen % 8))); + if ((delimitedLastBytes & 0xFF00) == 0x0000) { + instance->delimitedSuffix = delimitedLastBytes & 0xFF; + } + else { + unsigned char oneByte[1]; + oneByte[0] = delimitedLastBytes & 0xFF; + ret = (HashReturn)KeccakWidth1600_SpongeAbsorb(&instance->sponge, oneByte, 1); + instance->delimitedSuffix = (delimitedLastBytes >> 8) & 0xFF; + } + } + return ret; + } +} + +/* ---------------------------------------------------------------- */ + +HashReturn Keccak_HashFinal(Keccak_HashInstance *instance, BitSequence *hashval) +{ + HashReturn ret = (HashReturn)KeccakWidth1600_SpongeAbsorbLastFewBits(&instance->sponge, instance->delimitedSuffix); + if (ret == SUCCESS) + return (HashReturn)KeccakWidth1600_SpongeSqueeze(&instance->sponge, hashval, instance->fixedOutputLength/8); + else + return ret; +} + +/* ---------------------------------------------------------------- */ + +HashReturn Keccak_HashSqueeze(Keccak_HashInstance *instance, BitSequence *data, DataLength databitlen) +{ + if ((databitlen % 8) != 0) + return FAIL; + return (HashReturn)KeccakWidth1600_SpongeSqueeze(&instance->sponge, data, databitlen/8); +} diff --git a/Modules/_sha3/kcp/KeccakHash.h b/Modules/_sha3/kcp/KeccakHash.h new file mode 100644 index 0000000000000000000000000000000000000000..bbd3dc64a2285be577123bc84913d8793eb7e66b --- /dev/null +++ b/Modules/_sha3/kcp/KeccakHash.h @@ -0,0 +1,114 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifndef _KeccakHashInterface_h_ +#define _KeccakHashInterface_h_ + +#ifndef KeccakP1600_excluded + +#include "KeccakSponge.h" +#include + +typedef unsigned char BitSequence; +typedef size_t DataLength; +typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHLEN = 2 } HashReturn; + +typedef struct { + KeccakWidth1600_SpongeInstance sponge; + unsigned int fixedOutputLength; + unsigned char delimitedSuffix; +} Keccak_HashInstance; + +/** + * Function to initialize the Keccak[r, c] sponge function instance used in sequential hashing mode. + * @param hashInstance Pointer to the hash instance to be initialized. + * @param rate The value of the rate r. + * @param capacity The value of the capacity c. + * @param hashbitlen The desired number of output bits, + * or 0 for an arbitrarily-long output. + * @param delimitedSuffix Bits that will be automatically appended to the end + * of the input message, as in domain separation. + * This is a byte containing from 0 to 7 bits + * formatted like the @a delimitedData parameter of + * the Keccak_SpongeAbsorbLastFewBits() function. + * @pre One must have r+c=1600 and the rate a multiple of 8 bits in this implementation. + * @return SUCCESS if successful, FAIL otherwise. + */ +HashReturn Keccak_HashInitialize(Keccak_HashInstance *hashInstance, unsigned int rate, unsigned int capacity, unsigned int hashbitlen, unsigned char delimitedSuffix); + +/** Macro to initialize a SHAKE128 instance as specified in the FIPS 202 standard. + */ +#define Keccak_HashInitialize_SHAKE128(hashInstance) Keccak_HashInitialize(hashInstance, 1344, 256, 0, 0x1F) + +/** Macro to initialize a SHAKE256 instance as specified in the FIPS 202 standard. + */ +#define Keccak_HashInitialize_SHAKE256(hashInstance) Keccak_HashInitialize(hashInstance, 1088, 512, 0, 0x1F) + +/** Macro to initialize a SHA3-224 instance as specified in the FIPS 202 standard. + */ +#define Keccak_HashInitialize_SHA3_224(hashInstance) Keccak_HashInitialize(hashInstance, 1152, 448, 224, 0x06) + +/** Macro to initialize a SHA3-256 instance as specified in the FIPS 202 standard. + */ +#define Keccak_HashInitialize_SHA3_256(hashInstance) Keccak_HashInitialize(hashInstance, 1088, 512, 256, 0x06) + +/** Macro to initialize a SHA3-384 instance as specified in the FIPS 202 standard. + */ +#define Keccak_HashInitialize_SHA3_384(hashInstance) Keccak_HashInitialize(hashInstance, 832, 768, 384, 0x06) + +/** Macro to initialize a SHA3-512 instance as specified in the FIPS 202 standard. + */ +#define Keccak_HashInitialize_SHA3_512(hashInstance) Keccak_HashInitialize(hashInstance, 576, 1024, 512, 0x06) + +/** + * Function to give input data to be absorbed. + * @param hashInstance Pointer to the hash instance initialized by Keccak_HashInitialize(). + * @param data Pointer to the input data. + * When @a databitLen is not a multiple of 8, the last bits of data must be + * in the least significant bits of the last byte (little-endian convention). + * @param databitLen The number of input bits provided in the input data. + * @pre In the previous call to Keccak_HashUpdate(), databitlen was a multiple of 8. + * @return SUCCESS if successful, FAIL otherwise. + */ +HashReturn Keccak_HashUpdate(Keccak_HashInstance *hashInstance, const BitSequence *data, DataLength databitlen); + +/** + * Function to call after all input blocks have been input and to get + * output bits if the length was specified when calling Keccak_HashInitialize(). + * @param hashInstance Pointer to the hash instance initialized by Keccak_HashInitialize(). + * If @a hashbitlen was not 0 in the call to Keccak_HashInitialize(), the number of + * output bits is equal to @a hashbitlen. + * If @a hashbitlen was 0 in the call to Keccak_HashInitialize(), the output bits + * must be extracted using the Keccak_HashSqueeze() function. + * @param state Pointer to the state of the sponge function initialized by Init(). + * @param hashval Pointer to the buffer where to store the output data. + * @return SUCCESS if successful, FAIL otherwise. + */ +HashReturn Keccak_HashFinal(Keccak_HashInstance *hashInstance, BitSequence *hashval); + + /** + * Function to squeeze output data. + * @param hashInstance Pointer to the hash instance initialized by Keccak_HashInitialize(). + * @param data Pointer to the buffer where to store the output data. + * @param databitlen The number of output bits desired (must be a multiple of 8). + * @pre Keccak_HashFinal() must have been already called. + * @pre @a databitlen is a multiple of 8. + * @return SUCCESS if successful, FAIL otherwise. + */ +HashReturn Keccak_HashSqueeze(Keccak_HashInstance *hashInstance, BitSequence *data, DataLength databitlen); + +#endif + +#endif diff --git a/Modules/_sha3/kcp/KeccakP-1600-64.macros b/Modules/_sha3/kcp/KeccakP-1600-64.macros new file mode 100644 index 0000000000000000000000000000000000000000..1f11fe3e79fbbaebd7fc6af61c0ea831f2786617 --- /dev/null +++ b/Modules/_sha3/kcp/KeccakP-1600-64.macros @@ -0,0 +1,2208 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#define declareABCDE \ + UINT64 Aba, Abe, Abi, Abo, Abu; \ + UINT64 Aga, Age, Agi, Ago, Agu; \ + UINT64 Aka, Ake, Aki, Ako, Aku; \ + UINT64 Ama, Ame, Ami, Amo, Amu; \ + UINT64 Asa, Ase, Asi, Aso, Asu; \ + UINT64 Bba, Bbe, Bbi, Bbo, Bbu; \ + UINT64 Bga, Bge, Bgi, Bgo, Bgu; \ + UINT64 Bka, Bke, Bki, Bko, Bku; \ + UINT64 Bma, Bme, Bmi, Bmo, Bmu; \ + UINT64 Bsa, Bse, Bsi, Bso, Bsu; \ + UINT64 Ca, Ce, Ci, Co, Cu; \ + UINT64 Da, De, Di, Do, Du; \ + UINT64 Eba, Ebe, Ebi, Ebo, Ebu; \ + UINT64 Ega, Ege, Egi, Ego, Egu; \ + UINT64 Eka, Eke, Eki, Eko, Eku; \ + UINT64 Ema, Eme, Emi, Emo, Emu; \ + UINT64 Esa, Ese, Esi, Eso, Esu; \ + +#define prepareTheta \ + Ca = Aba^Aga^Aka^Ama^Asa; \ + Ce = Abe^Age^Ake^Ame^Ase; \ + Ci = Abi^Agi^Aki^Ami^Asi; \ + Co = Abo^Ago^Ako^Amo^Aso; \ + Cu = Abu^Agu^Aku^Amu^Asu; \ + +#ifdef UseBebigokimisa +/* --- Code for round, with prepare-theta (lane complementing pattern 'bebigokimisa') */ + +/* --- 64-bit lanes mapped to 64-bit words */ + +#define thetaRhoPiChiIotaPrepareTheta(i, A, E) \ + Da = Cu^ROL64(Ce, 1); \ + De = Ca^ROL64(Ci, 1); \ + Di = Ce^ROL64(Co, 1); \ + Do = Ci^ROL64(Cu, 1); \ + Du = Co^ROL64(Ca, 1); \ +\ + A##ba ^= Da; \ + Bba = A##ba; \ + A##ge ^= De; \ + Bbe = ROL64(A##ge, 44); \ + A##ki ^= Di; \ + Bbi = ROL64(A##ki, 43); \ + A##mo ^= Do; \ + Bbo = ROL64(A##mo, 21); \ + A##su ^= Du; \ + Bbu = ROL64(A##su, 14); \ + E##ba = Bba ^( Bbe | Bbi ); \ + E##ba ^= KeccakF1600RoundConstants[i]; \ + Ca = E##ba; \ + E##be = Bbe ^((~Bbi)| Bbo ); \ + Ce = E##be; \ + E##bi = Bbi ^( Bbo & Bbu ); \ + Ci = E##bi; \ + E##bo = Bbo ^( Bbu | Bba ); \ + Co = E##bo; \ + E##bu = Bbu ^( Bba & Bbe ); \ + Cu = E##bu; \ +\ + A##bo ^= Do; \ + Bga = ROL64(A##bo, 28); \ + A##gu ^= Du; \ + Bge = ROL64(A##gu, 20); \ + A##ka ^= Da; \ + Bgi = ROL64(A##ka, 3); \ + A##me ^= De; \ + Bgo = ROL64(A##me, 45); \ + A##si ^= Di; \ + Bgu = ROL64(A##si, 61); \ + E##ga = Bga ^( Bge | Bgi ); \ + Ca ^= E##ga; \ + E##ge = Bge ^( Bgi & Bgo ); \ + Ce ^= E##ge; \ + E##gi = Bgi ^( Bgo |(~Bgu)); \ + Ci ^= E##gi; \ + E##go = Bgo ^( Bgu | Bga ); \ + Co ^= E##go; \ + E##gu = Bgu ^( Bga & Bge ); \ + Cu ^= E##gu; \ +\ + A##be ^= De; \ + Bka = ROL64(A##be, 1); \ + A##gi ^= Di; \ + Bke = ROL64(A##gi, 6); \ + A##ko ^= Do; \ + Bki = ROL64(A##ko, 25); \ + A##mu ^= Du; \ + Bko = ROL64(A##mu, 8); \ + A##sa ^= Da; \ + Bku = ROL64(A##sa, 18); \ + E##ka = Bka ^( Bke | Bki ); \ + Ca ^= E##ka; \ + E##ke = Bke ^( Bki & Bko ); \ + Ce ^= E##ke; \ + E##ki = Bki ^((~Bko)& Bku ); \ + Ci ^= E##ki; \ + E##ko = (~Bko)^( Bku | Bka ); \ + Co ^= E##ko; \ + E##ku = Bku ^( Bka & Bke ); \ + Cu ^= E##ku; \ +\ + A##bu ^= Du; \ + Bma = ROL64(A##bu, 27); \ + A##ga ^= Da; \ + Bme = ROL64(A##ga, 36); \ + A##ke ^= De; \ + Bmi = ROL64(A##ke, 10); \ + A##mi ^= Di; \ + Bmo = ROL64(A##mi, 15); \ + A##so ^= Do; \ + Bmu = ROL64(A##so, 56); \ + E##ma = Bma ^( Bme & Bmi ); \ + Ca ^= E##ma; \ + E##me = Bme ^( Bmi | Bmo ); \ + Ce ^= E##me; \ + E##mi = Bmi ^((~Bmo)| Bmu ); \ + Ci ^= E##mi; \ + E##mo = (~Bmo)^( Bmu & Bma ); \ + Co ^= E##mo; \ + E##mu = Bmu ^( Bma | Bme ); \ + Cu ^= E##mu; \ +\ + A##bi ^= Di; \ + Bsa = ROL64(A##bi, 62); \ + A##go ^= Do; \ + Bse = ROL64(A##go, 55); \ + A##ku ^= Du; \ + Bsi = ROL64(A##ku, 39); \ + A##ma ^= Da; \ + Bso = ROL64(A##ma, 41); \ + A##se ^= De; \ + Bsu = ROL64(A##se, 2); \ + E##sa = Bsa ^((~Bse)& Bsi ); \ + Ca ^= E##sa; \ + E##se = (~Bse)^( Bsi | Bso ); \ + Ce ^= E##se; \ + E##si = Bsi ^( Bso & Bsu ); \ + Ci ^= E##si; \ + E##so = Bso ^( Bsu | Bsa ); \ + Co ^= E##so; \ + E##su = Bsu ^( Bsa & Bse ); \ + Cu ^= E##su; \ +\ + +/* --- Code for round (lane complementing pattern 'bebigokimisa') */ + +/* --- 64-bit lanes mapped to 64-bit words */ + +#define thetaRhoPiChiIota(i, A, E) \ + Da = Cu^ROL64(Ce, 1); \ + De = Ca^ROL64(Ci, 1); \ + Di = Ce^ROL64(Co, 1); \ + Do = Ci^ROL64(Cu, 1); \ + Du = Co^ROL64(Ca, 1); \ +\ + A##ba ^= Da; \ + Bba = A##ba; \ + A##ge ^= De; \ + Bbe = ROL64(A##ge, 44); \ + A##ki ^= Di; \ + Bbi = ROL64(A##ki, 43); \ + A##mo ^= Do; \ + Bbo = ROL64(A##mo, 21); \ + A##su ^= Du; \ + Bbu = ROL64(A##su, 14); \ + E##ba = Bba ^( Bbe | Bbi ); \ + E##ba ^= KeccakF1600RoundConstants[i]; \ + E##be = Bbe ^((~Bbi)| Bbo ); \ + E##bi = Bbi ^( Bbo & Bbu ); \ + E##bo = Bbo ^( Bbu | Bba ); \ + E##bu = Bbu ^( Bba & Bbe ); \ +\ + A##bo ^= Do; \ + Bga = ROL64(A##bo, 28); \ + A##gu ^= Du; \ + Bge = ROL64(A##gu, 20); \ + A##ka ^= Da; \ + Bgi = ROL64(A##ka, 3); \ + A##me ^= De; \ + Bgo = ROL64(A##me, 45); \ + A##si ^= Di; \ + Bgu = ROL64(A##si, 61); \ + E##ga = Bga ^( Bge | Bgi ); \ + E##ge = Bge ^( Bgi & Bgo ); \ + E##gi = Bgi ^( Bgo |(~Bgu)); \ + E##go = Bgo ^( Bgu | Bga ); \ + E##gu = Bgu ^( Bga & Bge ); \ +\ + A##be ^= De; \ + Bka = ROL64(A##be, 1); \ + A##gi ^= Di; \ + Bke = ROL64(A##gi, 6); \ + A##ko ^= Do; \ + Bki = ROL64(A##ko, 25); \ + A##mu ^= Du; \ + Bko = ROL64(A##mu, 8); \ + A##sa ^= Da; \ + Bku = ROL64(A##sa, 18); \ + E##ka = Bka ^( Bke | Bki ); \ + E##ke = Bke ^( Bki & Bko ); \ + E##ki = Bki ^((~Bko)& Bku ); \ + E##ko = (~Bko)^( Bku | Bka ); \ + E##ku = Bku ^( Bka & Bke ); \ +\ + A##bu ^= Du; \ + Bma = ROL64(A##bu, 27); \ + A##ga ^= Da; \ + Bme = ROL64(A##ga, 36); \ + A##ke ^= De; \ + Bmi = ROL64(A##ke, 10); \ + A##mi ^= Di; \ + Bmo = ROL64(A##mi, 15); \ + A##so ^= Do; \ + Bmu = ROL64(A##so, 56); \ + E##ma = Bma ^( Bme & Bmi ); \ + E##me = Bme ^( Bmi | Bmo ); \ + E##mi = Bmi ^((~Bmo)| Bmu ); \ + E##mo = (~Bmo)^( Bmu & Bma ); \ + E##mu = Bmu ^( Bma | Bme ); \ +\ + A##bi ^= Di; \ + Bsa = ROL64(A##bi, 62); \ + A##go ^= Do; \ + Bse = ROL64(A##go, 55); \ + A##ku ^= Du; \ + Bsi = ROL64(A##ku, 39); \ + A##ma ^= Da; \ + Bso = ROL64(A##ma, 41); \ + A##se ^= De; \ + Bsu = ROL64(A##se, 2); \ + E##sa = Bsa ^((~Bse)& Bsi ); \ + E##se = (~Bse)^( Bsi | Bso ); \ + E##si = Bsi ^( Bso & Bsu ); \ + E##so = Bso ^( Bsu | Bsa ); \ + E##su = Bsu ^( Bsa & Bse ); \ +\ + +#else /* UseBebigokimisa */ + +/* --- Code for round, with prepare-theta */ + +/* --- 64-bit lanes mapped to 64-bit words */ + +#define thetaRhoPiChiIotaPrepareTheta(i, A, E) \ + Da = Cu^ROL64(Ce, 1); \ + De = Ca^ROL64(Ci, 1); \ + Di = Ce^ROL64(Co, 1); \ + Do = Ci^ROL64(Cu, 1); \ + Du = Co^ROL64(Ca, 1); \ +\ + A##ba ^= Da; \ + Bba = A##ba; \ + A##ge ^= De; \ + Bbe = ROL64(A##ge, 44); \ + A##ki ^= Di; \ + Bbi = ROL64(A##ki, 43); \ + A##mo ^= Do; \ + Bbo = ROL64(A##mo, 21); \ + A##su ^= Du; \ + Bbu = ROL64(A##su, 14); \ + E##ba = Bba ^((~Bbe)& Bbi ); \ + E##ba ^= KeccakF1600RoundConstants[i]; \ + Ca = E##ba; \ + E##be = Bbe ^((~Bbi)& Bbo ); \ + Ce = E##be; \ + E##bi = Bbi ^((~Bbo)& Bbu ); \ + Ci = E##bi; \ + E##bo = Bbo ^((~Bbu)& Bba ); \ + Co = E##bo; \ + E##bu = Bbu ^((~Bba)& Bbe ); \ + Cu = E##bu; \ +\ + A##bo ^= Do; \ + Bga = ROL64(A##bo, 28); \ + A##gu ^= Du; \ + Bge = ROL64(A##gu, 20); \ + A##ka ^= Da; \ + Bgi = ROL64(A##ka, 3); \ + A##me ^= De; \ + Bgo = ROL64(A##me, 45); \ + A##si ^= Di; \ + Bgu = ROL64(A##si, 61); \ + E##ga = Bga ^((~Bge)& Bgi ); \ + Ca ^= E##ga; \ + E##ge = Bge ^((~Bgi)& Bgo ); \ + Ce ^= E##ge; \ + E##gi = Bgi ^((~Bgo)& Bgu ); \ + Ci ^= E##gi; \ + E##go = Bgo ^((~Bgu)& Bga ); \ + Co ^= E##go; \ + E##gu = Bgu ^((~Bga)& Bge ); \ + Cu ^= E##gu; \ +\ + A##be ^= De; \ + Bka = ROL64(A##be, 1); \ + A##gi ^= Di; \ + Bke = ROL64(A##gi, 6); \ + A##ko ^= Do; \ + Bki = ROL64(A##ko, 25); \ + A##mu ^= Du; \ + Bko = ROL64(A##mu, 8); \ + A##sa ^= Da; \ + Bku = ROL64(A##sa, 18); \ + E##ka = Bka ^((~Bke)& Bki ); \ + Ca ^= E##ka; \ + E##ke = Bke ^((~Bki)& Bko ); \ + Ce ^= E##ke; \ + E##ki = Bki ^((~Bko)& Bku ); \ + Ci ^= E##ki; \ + E##ko = Bko ^((~Bku)& Bka ); \ + Co ^= E##ko; \ + E##ku = Bku ^((~Bka)& Bke ); \ + Cu ^= E##ku; \ +\ + A##bu ^= Du; \ + Bma = ROL64(A##bu, 27); \ + A##ga ^= Da; \ + Bme = ROL64(A##ga, 36); \ + A##ke ^= De; \ + Bmi = ROL64(A##ke, 10); \ + A##mi ^= Di; \ + Bmo = ROL64(A##mi, 15); \ + A##so ^= Do; \ + Bmu = ROL64(A##so, 56); \ + E##ma = Bma ^((~Bme)& Bmi ); \ + Ca ^= E##ma; \ + E##me = Bme ^((~Bmi)& Bmo ); \ + Ce ^= E##me; \ + E##mi = Bmi ^((~Bmo)& Bmu ); \ + Ci ^= E##mi; \ + E##mo = Bmo ^((~Bmu)& Bma ); \ + Co ^= E##mo; \ + E##mu = Bmu ^((~Bma)& Bme ); \ + Cu ^= E##mu; \ +\ + A##bi ^= Di; \ + Bsa = ROL64(A##bi, 62); \ + A##go ^= Do; \ + Bse = ROL64(A##go, 55); \ + A##ku ^= Du; \ + Bsi = ROL64(A##ku, 39); \ + A##ma ^= Da; \ + Bso = ROL64(A##ma, 41); \ + A##se ^= De; \ + Bsu = ROL64(A##se, 2); \ + E##sa = Bsa ^((~Bse)& Bsi ); \ + Ca ^= E##sa; \ + E##se = Bse ^((~Bsi)& Bso ); \ + Ce ^= E##se; \ + E##si = Bsi ^((~Bso)& Bsu ); \ + Ci ^= E##si; \ + E##so = Bso ^((~Bsu)& Bsa ); \ + Co ^= E##so; \ + E##su = Bsu ^((~Bsa)& Bse ); \ + Cu ^= E##su; \ +\ + +/* --- Code for round */ + +/* --- 64-bit lanes mapped to 64-bit words */ + +#define thetaRhoPiChiIota(i, A, E) \ + Da = Cu^ROL64(Ce, 1); \ + De = Ca^ROL64(Ci, 1); \ + Di = Ce^ROL64(Co, 1); \ + Do = Ci^ROL64(Cu, 1); \ + Du = Co^ROL64(Ca, 1); \ +\ + A##ba ^= Da; \ + Bba = A##ba; \ + A##ge ^= De; \ + Bbe = ROL64(A##ge, 44); \ + A##ki ^= Di; \ + Bbi = ROL64(A##ki, 43); \ + A##mo ^= Do; \ + Bbo = ROL64(A##mo, 21); \ + A##su ^= Du; \ + Bbu = ROL64(A##su, 14); \ + E##ba = Bba ^((~Bbe)& Bbi ); \ + E##ba ^= KeccakF1600RoundConstants[i]; \ + E##be = Bbe ^((~Bbi)& Bbo ); \ + E##bi = Bbi ^((~Bbo)& Bbu ); \ + E##bo = Bbo ^((~Bbu)& Bba ); \ + E##bu = Bbu ^((~Bba)& Bbe ); \ +\ + A##bo ^= Do; \ + Bga = ROL64(A##bo, 28); \ + A##gu ^= Du; \ + Bge = ROL64(A##gu, 20); \ + A##ka ^= Da; \ + Bgi = ROL64(A##ka, 3); \ + A##me ^= De; \ + Bgo = ROL64(A##me, 45); \ + A##si ^= Di; \ + Bgu = ROL64(A##si, 61); \ + E##ga = Bga ^((~Bge)& Bgi ); \ + E##ge = Bge ^((~Bgi)& Bgo ); \ + E##gi = Bgi ^((~Bgo)& Bgu ); \ + E##go = Bgo ^((~Bgu)& Bga ); \ + E##gu = Bgu ^((~Bga)& Bge ); \ +\ + A##be ^= De; \ + Bka = ROL64(A##be, 1); \ + A##gi ^= Di; \ + Bke = ROL64(A##gi, 6); \ + A##ko ^= Do; \ + Bki = ROL64(A##ko, 25); \ + A##mu ^= Du; \ + Bko = ROL64(A##mu, 8); \ + A##sa ^= Da; \ + Bku = ROL64(A##sa, 18); \ + E##ka = Bka ^((~Bke)& Bki ); \ + E##ke = Bke ^((~Bki)& Bko ); \ + E##ki = Bki ^((~Bko)& Bku ); \ + E##ko = Bko ^((~Bku)& Bka ); \ + E##ku = Bku ^((~Bka)& Bke ); \ +\ + A##bu ^= Du; \ + Bma = ROL64(A##bu, 27); \ + A##ga ^= Da; \ + Bme = ROL64(A##ga, 36); \ + A##ke ^= De; \ + Bmi = ROL64(A##ke, 10); \ + A##mi ^= Di; \ + Bmo = ROL64(A##mi, 15); \ + A##so ^= Do; \ + Bmu = ROL64(A##so, 56); \ + E##ma = Bma ^((~Bme)& Bmi ); \ + E##me = Bme ^((~Bmi)& Bmo ); \ + E##mi = Bmi ^((~Bmo)& Bmu ); \ + E##mo = Bmo ^((~Bmu)& Bma ); \ + E##mu = Bmu ^((~Bma)& Bme ); \ +\ + A##bi ^= Di; \ + Bsa = ROL64(A##bi, 62); \ + A##go ^= Do; \ + Bse = ROL64(A##go, 55); \ + A##ku ^= Du; \ + Bsi = ROL64(A##ku, 39); \ + A##ma ^= Da; \ + Bso = ROL64(A##ma, 41); \ + A##se ^= De; \ + Bsu = ROL64(A##se, 2); \ + E##sa = Bsa ^((~Bse)& Bsi ); \ + E##se = Bse ^((~Bsi)& Bso ); \ + E##si = Bsi ^((~Bso)& Bsu ); \ + E##so = Bso ^((~Bsu)& Bsa ); \ + E##su = Bsu ^((~Bsa)& Bse ); \ +\ + +#endif /* UseBebigokimisa */ + + +#define copyFromState(X, state) \ + X##ba = state[ 0]; \ + X##be = state[ 1]; \ + X##bi = state[ 2]; \ + X##bo = state[ 3]; \ + X##bu = state[ 4]; \ + X##ga = state[ 5]; \ + X##ge = state[ 6]; \ + X##gi = state[ 7]; \ + X##go = state[ 8]; \ + X##gu = state[ 9]; \ + X##ka = state[10]; \ + X##ke = state[11]; \ + X##ki = state[12]; \ + X##ko = state[13]; \ + X##ku = state[14]; \ + X##ma = state[15]; \ + X##me = state[16]; \ + X##mi = state[17]; \ + X##mo = state[18]; \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + +#define copyToState(state, X) \ + state[ 0] = X##ba; \ + state[ 1] = X##be; \ + state[ 2] = X##bi; \ + state[ 3] = X##bo; \ + state[ 4] = X##bu; \ + state[ 5] = X##ga; \ + state[ 6] = X##ge; \ + state[ 7] = X##gi; \ + state[ 8] = X##go; \ + state[ 9] = X##gu; \ + state[10] = X##ka; \ + state[11] = X##ke; \ + state[12] = X##ki; \ + state[13] = X##ko; \ + state[14] = X##ku; \ + state[15] = X##ma; \ + state[16] = X##me; \ + state[17] = X##mi; \ + state[18] = X##mo; \ + state[19] = X##mu; \ + state[20] = X##sa; \ + state[21] = X##se; \ + state[22] = X##si; \ + state[23] = X##so; \ + state[24] = X##su; \ + +#define copyStateVariables(X, Y) \ + X##ba = Y##ba; \ + X##be = Y##be; \ + X##bi = Y##bi; \ + X##bo = Y##bo; \ + X##bu = Y##bu; \ + X##ga = Y##ga; \ + X##ge = Y##ge; \ + X##gi = Y##gi; \ + X##go = Y##go; \ + X##gu = Y##gu; \ + X##ka = Y##ka; \ + X##ke = Y##ke; \ + X##ki = Y##ki; \ + X##ko = Y##ko; \ + X##ku = Y##ku; \ + X##ma = Y##ma; \ + X##me = Y##me; \ + X##mi = Y##mi; \ + X##mo = Y##mo; \ + X##mu = Y##mu; \ + X##sa = Y##sa; \ + X##se = Y##se; \ + X##si = Y##si; \ + X##so = Y##so; \ + X##su = Y##su; \ + +#define copyFromStateAndAdd(X, state, input, laneCount) \ + if (laneCount < 16) { \ + if (laneCount < 8) { \ + if (laneCount < 4) { \ + if (laneCount < 2) { \ + if (laneCount < 1) { \ + X##ba = state[ 0]; \ + } \ + else { \ + X##ba = state[ 0]^input[ 0]; \ + } \ + X##be = state[ 1]; \ + X##bi = state[ 2]; \ + } \ + else { \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + if (laneCount < 3) { \ + X##bi = state[ 2]; \ + } \ + else { \ + X##bi = state[ 2]^input[ 2]; \ + } \ + } \ + X##bo = state[ 3]; \ + X##bu = state[ 4]; \ + X##ga = state[ 5]; \ + X##ge = state[ 6]; \ + } \ + else { \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + if (laneCount < 6) { \ + if (laneCount < 5) { \ + X##bu = state[ 4]; \ + } \ + else { \ + X##bu = state[ 4]^input[ 4]; \ + } \ + X##ga = state[ 5]; \ + X##ge = state[ 6]; \ + } \ + else { \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + if (laneCount < 7) { \ + X##ge = state[ 6]; \ + } \ + else { \ + X##ge = state[ 6]^input[ 6]; \ + } \ + } \ + } \ + X##gi = state[ 7]; \ + X##go = state[ 8]; \ + X##gu = state[ 9]; \ + X##ka = state[10]; \ + X##ke = state[11]; \ + X##ki = state[12]; \ + X##ko = state[13]; \ + X##ku = state[14]; \ + } \ + else { \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + X##ge = state[ 6]^input[ 6]; \ + X##gi = state[ 7]^input[ 7]; \ + if (laneCount < 12) { \ + if (laneCount < 10) { \ + if (laneCount < 9) { \ + X##go = state[ 8]; \ + } \ + else { \ + X##go = state[ 8]^input[ 8]; \ + } \ + X##gu = state[ 9]; \ + X##ka = state[10]; \ + } \ + else { \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]^input[ 9]; \ + if (laneCount < 11) { \ + X##ka = state[10]; \ + } \ + else { \ + X##ka = state[10]^input[10]; \ + } \ + } \ + X##ke = state[11]; \ + X##ki = state[12]; \ + X##ko = state[13]; \ + X##ku = state[14]; \ + } \ + else { \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]^input[ 9]; \ + X##ka = state[10]^input[10]; \ + X##ke = state[11]^input[11]; \ + if (laneCount < 14) { \ + if (laneCount < 13) { \ + X##ki = state[12]; \ + } \ + else { \ + X##ki = state[12]^input[12]; \ + } \ + X##ko = state[13]; \ + X##ku = state[14]; \ + } \ + else { \ + X##ki = state[12]^input[12]; \ + X##ko = state[13]^input[13]; \ + if (laneCount < 15) { \ + X##ku = state[14]; \ + } \ + else { \ + X##ku = state[14]^input[14]; \ + } \ + } \ + } \ + } \ + X##ma = state[15]; \ + X##me = state[16]; \ + X##mi = state[17]; \ + X##mo = state[18]; \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + X##so = state[23]; \ + X##su = state[24]; \ + } \ + else { \ + X##ba = state[ 0]^input[ 0]; \ + X##be = state[ 1]^input[ 1]; \ + X##bi = state[ 2]^input[ 2]; \ + X##bo = state[ 3]^input[ 3]; \ + X##bu = state[ 4]^input[ 4]; \ + X##ga = state[ 5]^input[ 5]; \ + X##ge = state[ 6]^input[ 6]; \ + X##gi = state[ 7]^input[ 7]; \ + X##go = state[ 8]^input[ 8]; \ + X##gu = state[ 9]^input[ 9]; \ + X##ka = state[10]^input[10]; \ + X##ke = state[11]^input[11]; \ + X##ki = state[12]^input[12]; \ + X##ko = state[13]^input[13]; \ + X##ku = state[14]^input[14]; \ + X##ma = state[15]^input[15]; \ + if (laneCount < 24) { \ + if (laneCount < 20) { \ + if (laneCount < 18) { \ + if (laneCount < 17) { \ + X##me = state[16]; \ + } \ + else { \ + X##me = state[16]^input[16]; \ + } \ + X##mi = state[17]; \ + X##mo = state[18]; \ + } \ + else { \ + X##me = state[16]^input[16]; \ + X##mi = state[17]^input[17]; \ + if (laneCount < 19) { \ + X##mo = state[18]; \ + } \ + else { \ + X##mo = state[18]^input[18]; \ + } \ + } \ + X##mu = state[19]; \ + X##sa = state[20]; \ + X##se = state[21]; \ + X##si = state[22]; \ + } \ + else { \ + X##me = state[16]^input[16]; \ + X##mi = state[17]^input[17]; \ + X##mo = state[18]^input[18]; \ + X##mu = state[19]^input[19]; \ + if (laneCount < 22) { \ + if (laneCount < 21) { \ + X##sa = state[20]; \ + } \ + else { \ + X##sa = state[20]^input[20]; \ + } \ + X##se = state[21]; \ + X##si = state[22]; \ + } \ + else { \ + X##sa = state[20]^input[20]; \ + X##se = state[21]^input[21]; \ + if (laneCount < 23) { \ + X##si = state[22]; \ + } \ + else { \ + X##si = state[22]^input[22]; \ + } \ + } \ + } \ + X##so = state[23]; \ + X##su = state[24]; \ + } \ + else { \ + X##me = state[16]^input[16]; \ + X##mi = state[17]^input[17]; \ + X##mo = state[18]^input[18]; \ + X##mu = state[19]^input[19]; \ + X##sa = state[20]^input[20]; \ + X##se = state[21]^input[21]; \ + X##si = state[22]^input[22]; \ + X##so = state[23]^input[23]; \ + if (laneCount < 25) { \ + X##su = state[24]; \ + } \ + else { \ + X##su = state[24]^input[24]; \ + } \ + } \ + } + +#define addInput(X, input, laneCount) \ + if (laneCount == 21) { \ + X##ba ^= input[ 0]; \ + X##be ^= input[ 1]; \ + X##bi ^= input[ 2]; \ + X##bo ^= input[ 3]; \ + X##bu ^= input[ 4]; \ + X##ga ^= input[ 5]; \ + X##ge ^= input[ 6]; \ + X##gi ^= input[ 7]; \ + X##go ^= input[ 8]; \ + X##gu ^= input[ 9]; \ + X##ka ^= input[10]; \ + X##ke ^= input[11]; \ + X##ki ^= input[12]; \ + X##ko ^= input[13]; \ + X##ku ^= input[14]; \ + X##ma ^= input[15]; \ + X##me ^= input[16]; \ + X##mi ^= input[17]; \ + X##mo ^= input[18]; \ + X##mu ^= input[19]; \ + X##sa ^= input[20]; \ + } \ + else if (laneCount < 16) { \ + if (laneCount < 8) { \ + if (laneCount < 4) { \ + if (laneCount < 2) { \ + if (laneCount < 1) { \ + } \ + else { \ + X##ba ^= input[ 0]; \ + } \ + } \ + else { \ + X##ba ^= input[ 0]; \ + X##be ^= input[ 1]; \ + if (laneCount < 3) { \ + } \ + else { \ + X##bi ^= input[ 2]; \ + } \ + } \ + } \ + else { \ + X##ba ^= input[ 0]; \ + X##be ^= input[ 1]; \ + X##bi ^= input[ 2]; \ + X##bo ^= input[ 3]; \ + if (laneCount < 6) { \ + if (laneCount < 5) { \ + } \ + else { \ + X##bu ^= input[ 4]; \ + } \ + } \ + else { \ + X##bu ^= input[ 4]; \ + X##ga ^= input[ 5]; \ + if (laneCount < 7) { \ + } \ + else { \ + X##ge ^= input[ 6]; \ + } \ + } \ + } \ + } \ + else { \ + X##ba ^= input[ 0]; \ + X##be ^= input[ 1]; \ + X##bi ^= input[ 2]; \ + X##bo ^= input[ 3]; \ + X##bu ^= input[ 4]; \ + X##ga ^= input[ 5]; \ + X##ge ^= input[ 6]; \ + X##gi ^= input[ 7]; \ + if (laneCount < 12) { \ + if (laneCount < 10) { \ + if (laneCount < 9) { \ + } \ + else { \ + X##go ^= input[ 8]; \ + } \ + } \ + else { \ + X##go ^= input[ 8]; \ + X##gu ^= input[ 9]; \ + if (laneCount < 11) { \ + } \ + else { \ + X##ka ^= input[10]; \ + } \ + } \ + } \ + else { \ + X##go ^= input[ 8]; \ + X##gu ^= input[ 9]; \ + X##ka ^= input[10]; \ + X##ke ^= input[11]; \ + if (laneCount < 14) { \ + if (laneCount < 13) { \ + } \ + else { \ + X##ki ^= input[12]; \ + } \ + } \ + else { \ + X##ki ^= input[12]; \ + X##ko ^= input[13]; \ + if (laneCount < 15) { \ + } \ + else { \ + X##ku ^= input[14]; \ + } \ + } \ + } \ + } \ + } \ + else { \ + X##ba ^= input[ 0]; \ + X##be ^= input[ 1]; \ + X##bi ^= input[ 2]; \ + X##bo ^= input[ 3]; \ + X##bu ^= input[ 4]; \ + X##ga ^= input[ 5]; \ + X##ge ^= input[ 6]; \ + X##gi ^= input[ 7]; \ + X##go ^= input[ 8]; \ + X##gu ^= input[ 9]; \ + X##ka ^= input[10]; \ + X##ke ^= input[11]; \ + X##ki ^= input[12]; \ + X##ko ^= input[13]; \ + X##ku ^= input[14]; \ + X##ma ^= input[15]; \ + if (laneCount < 24) { \ + if (laneCount < 20) { \ + if (laneCount < 18) { \ + if (laneCount < 17) { \ + } \ + else { \ + X##me ^= input[16]; \ + } \ + } \ + else { \ + X##me ^= input[16]; \ + X##mi ^= input[17]; \ + if (laneCount < 19) { \ + } \ + else { \ + X##mo ^= input[18]; \ + } \ + } \ + } \ + else { \ + X##me ^= input[16]; \ + X##mi ^= input[17]; \ + X##mo ^= input[18]; \ + X##mu ^= input[19]; \ + if (laneCount < 22) { \ + if (laneCount < 21) { \ + } \ + else { \ + X##sa ^= input[20]; \ + } \ + } \ + else { \ + X##sa ^= input[20]; \ + X##se ^= input[21]; \ + if (laneCount < 23) { \ + } \ + else { \ + X##si ^= input[22]; \ + } \ + } \ + } \ + } \ + else { \ + X##me ^= input[16]; \ + X##mi ^= input[17]; \ + X##mo ^= input[18]; \ + X##mu ^= input[19]; \ + X##sa ^= input[20]; \ + X##se ^= input[21]; \ + X##si ^= input[22]; \ + X##so ^= input[23]; \ + if (laneCount < 25) { \ + } \ + else { \ + X##su ^= input[24]; \ + } \ + } \ + } + +#ifdef UseBebigokimisa + +#define copyToStateAndOutput(X, state, output, laneCount) \ + if (laneCount < 16) { \ + if (laneCount < 8) { \ + if (laneCount < 4) { \ + if (laneCount < 2) { \ + state[ 0] = X##ba; \ + if (laneCount >= 1) { \ + output[ 0] = X##ba; \ + } \ + state[ 1] = X##be; \ + state[ 2] = X##bi; \ + } \ + else { \ + state[ 0] = X##ba; \ + output[ 0] = X##ba; \ + state[ 1] = X##be; \ + output[ 1] = ~X##be; \ + state[ 2] = X##bi; \ + if (laneCount >= 3) { \ + output[ 2] = ~X##bi; \ + } \ + } \ + state[ 3] = X##bo; \ + state[ 4] = X##bu; \ + state[ 5] = X##ga; \ + state[ 6] = X##ge; \ + } \ + else { \ + state[ 0] = X##ba; \ + output[ 0] = X##ba; \ + state[ 1] = X##be; \ + output[ 1] = ~X##be; \ + state[ 2] = X##bi; \ + output[ 2] = ~X##bi; \ + state[ 3] = X##bo; \ + output[ 3] = X##bo; \ + if (laneCount < 6) { \ + state[ 4] = X##bu; \ + if (laneCount >= 5) { \ + output[ 4] = X##bu; \ + } \ + state[ 5] = X##ga; \ + state[ 6] = X##ge; \ + } \ + else { \ + state[ 4] = X##bu; \ + output[ 4] = X##bu; \ + state[ 5] = X##ga; \ + output[ 5] = X##ga; \ + state[ 6] = X##ge; \ + if (laneCount >= 7) { \ + output[ 6] = X##ge; \ + } \ + } \ + } \ + state[ 7] = X##gi; \ + state[ 8] = X##go; \ + state[ 9] = X##gu; \ + state[10] = X##ka; \ + state[11] = X##ke; \ + state[12] = X##ki; \ + state[13] = X##ko; \ + state[14] = X##ku; \ + } \ + else { \ + state[ 0] = X##ba; \ + output[ 0] = X##ba; \ + state[ 1] = X##be; \ + output[ 1] = ~X##be; \ + state[ 2] = X##bi; \ + output[ 2] = ~X##bi; \ + state[ 3] = X##bo; \ + output[ 3] = X##bo; \ + state[ 4] = X##bu; \ + output[ 4] = X##bu; \ + state[ 5] = X##ga; \ + output[ 5] = X##ga; \ + state[ 6] = X##ge; \ + output[ 6] = X##ge; \ + state[ 7] = X##gi; \ + output[ 7] = X##gi; \ + if (laneCount < 12) { \ + if (laneCount < 10) { \ + state[ 8] = X##go; \ + if (laneCount >= 9) { \ + output[ 8] = ~X##go; \ + } \ + state[ 9] = X##gu; \ + state[10] = X##ka; \ + } \ + else { \ + state[ 8] = X##go; \ + output[ 8] = ~X##go; \ + state[ 9] = X##gu; \ + output[ 9] = X##gu; \ + state[10] = X##ka; \ + if (laneCount >= 11) { \ + output[10] = X##ka; \ + } \ + } \ + state[11] = X##ke; \ + state[12] = X##ki; \ + state[13] = X##ko; \ + state[14] = X##ku; \ + } \ + else { \ + state[ 8] = X##go; \ + output[ 8] = ~X##go; \ + state[ 9] = X##gu; \ + output[ 9] = X##gu; \ + state[10] = X##ka; \ + output[10] = X##ka; \ + state[11] = X##ke; \ + output[11] = X##ke; \ + if (laneCount < 14) { \ + state[12] = X##ki; \ + if (laneCount >= 13) { \ + output[12] = ~X##ki; \ + } \ + state[13] = X##ko; \ + state[14] = X##ku; \ + } \ + else { \ + state[12] = X##ki; \ + output[12] = ~X##ki; \ + state[13] = X##ko; \ + output[13] = X##ko; \ + state[14] = X##ku; \ + if (laneCount >= 15) { \ + output[14] = X##ku; \ + } \ + } \ + } \ + } \ + state[15] = X##ma; \ + state[16] = X##me; \ + state[17] = X##mi; \ + state[18] = X##mo; \ + state[19] = X##mu; \ + state[20] = X##sa; \ + state[21] = X##se; \ + state[22] = X##si; \ + state[23] = X##so; \ + state[24] = X##su; \ + } \ + else { \ + state[ 0] = X##ba; \ + output[ 0] = X##ba; \ + state[ 1] = X##be; \ + output[ 1] = ~X##be; \ + state[ 2] = X##bi; \ + output[ 2] = ~X##bi; \ + state[ 3] = X##bo; \ + output[ 3] = X##bo; \ + state[ 4] = X##bu; \ + output[ 4] = X##bu; \ + state[ 5] = X##ga; \ + output[ 5] = X##ga; \ + state[ 6] = X##ge; \ + output[ 6] = X##ge; \ + state[ 7] = X##gi; \ + output[ 7] = X##gi; \ + state[ 8] = X##go; \ + output[ 8] = ~X##go; \ + state[ 9] = X##gu; \ + output[ 9] = X##gu; \ + state[10] = X##ka; \ + output[10] = X##ka; \ + state[11] = X##ke; \ + output[11] = X##ke; \ + state[12] = X##ki; \ + output[12] = ~X##ki; \ + state[13] = X##ko; \ + output[13] = X##ko; \ + state[14] = X##ku; \ + output[14] = X##ku; \ + state[15] = X##ma; \ + output[15] = X##ma; \ + if (laneCount < 24) { \ + if (laneCount < 20) { \ + if (laneCount < 18) { \ + state[16] = X##me; \ + if (laneCount >= 17) { \ + output[16] = X##me; \ + } \ + state[17] = X##mi; \ + state[18] = X##mo; \ + } \ + else { \ + state[16] = X##me; \ + output[16] = X##me; \ + state[17] = X##mi; \ + output[17] = ~X##mi; \ + state[18] = X##mo; \ + if (laneCount >= 19) { \ + output[18] = X##mo; \ + } \ + } \ + state[19] = X##mu; \ + state[20] = X##sa; \ + state[21] = X##se; \ + state[22] = X##si; \ + } \ + else { \ + state[16] = X##me; \ + output[16] = X##me; \ + state[17] = X##mi; \ + output[17] = ~X##mi; \ + state[18] = X##mo; \ + output[18] = X##mo; \ + state[19] = X##mu; \ + output[19] = X##mu; \ + if (laneCount < 22) { \ + state[20] = X##sa; \ + if (laneCount >= 21) { \ + output[20] = ~X##sa; \ + } \ + state[21] = X##se; \ + state[22] = X##si; \ + } \ + else { \ + state[20] = X##sa; \ + output[20] = ~X##sa; \ + state[21] = X##se; \ + output[21] = X##se; \ + state[22] = X##si; \ + if (laneCount >= 23) { \ + output[22] = X##si; \ + } \ + } \ + } \ + state[23] = X##so; \ + state[24] = X##su; \ + } \ + else { \ + state[16] = X##me; \ + output[16] = X##me; \ + state[17] = X##mi; \ + output[17] = ~X##mi; \ + state[18] = X##mo; \ + output[18] = X##mo; \ + state[19] = X##mu; \ + output[19] = X##mu; \ + state[20] = X##sa; \ + output[20] = ~X##sa; \ + state[21] = X##se; \ + output[21] = X##se; \ + state[22] = X##si; \ + output[22] = X##si; \ + state[23] = X##so; \ + output[23] = X##so; \ + state[24] = X##su; \ + if (laneCount >= 25) { \ + output[24] = X##su; \ + } \ + } \ + } + +#define output(X, output, laneCount) \ + if (laneCount < 16) { \ + if (laneCount < 8) { \ + if (laneCount < 4) { \ + if (laneCount < 2) { \ + if (laneCount >= 1) { \ + output[ 0] = X##ba; \ + } \ + } \ + else { \ + output[ 0] = X##ba; \ + output[ 1] = ~X##be; \ + if (laneCount >= 3) { \ + output[ 2] = ~X##bi; \ + } \ + } \ + } \ + else { \ + output[ 0] = X##ba; \ + output[ 1] = ~X##be; \ + output[ 2] = ~X##bi; \ + output[ 3] = X##bo; \ + if (laneCount < 6) { \ + if (laneCount >= 5) { \ + output[ 4] = X##bu; \ + } \ + } \ + else { \ + output[ 4] = X##bu; \ + output[ 5] = X##ga; \ + if (laneCount >= 7) { \ + output[ 6] = X##ge; \ + } \ + } \ + } \ + } \ + else { \ + output[ 0] = X##ba; \ + output[ 1] = ~X##be; \ + output[ 2] = ~X##bi; \ + output[ 3] = X##bo; \ + output[ 4] = X##bu; \ + output[ 5] = X##ga; \ + output[ 6] = X##ge; \ + output[ 7] = X##gi; \ + if (laneCount < 12) { \ + if (laneCount < 10) { \ + if (laneCount >= 9) { \ + output[ 8] = ~X##go; \ + } \ + } \ + else { \ + output[ 8] = ~X##go; \ + output[ 9] = X##gu; \ + if (laneCount >= 11) { \ + output[10] = X##ka; \ + } \ + } \ + } \ + else { \ + output[ 8] = ~X##go; \ + output[ 9] = X##gu; \ + output[10] = X##ka; \ + output[11] = X##ke; \ + if (laneCount < 14) { \ + if (laneCount >= 13) { \ + output[12] = ~X##ki; \ + } \ + } \ + else { \ + output[12] = ~X##ki; \ + output[13] = X##ko; \ + if (laneCount >= 15) { \ + output[14] = X##ku; \ + } \ + } \ + } \ + } \ + } \ + else { \ + output[ 0] = X##ba; \ + output[ 1] = ~X##be; \ + output[ 2] = ~X##bi; \ + output[ 3] = X##bo; \ + output[ 4] = X##bu; \ + output[ 5] = X##ga; \ + output[ 6] = X##ge; \ + output[ 7] = X##gi; \ + output[ 8] = ~X##go; \ + output[ 9] = X##gu; \ + output[10] = X##ka; \ + output[11] = X##ke; \ + output[12] = ~X##ki; \ + output[13] = X##ko; \ + output[14] = X##ku; \ + output[15] = X##ma; \ + if (laneCount < 24) { \ + if (laneCount < 20) { \ + if (laneCount < 18) { \ + if (laneCount >= 17) { \ + output[16] = X##me; \ + } \ + } \ + else { \ + output[16] = X##me; \ + output[17] = ~X##mi; \ + if (laneCount >= 19) { \ + output[18] = X##mo; \ + } \ + } \ + } \ + else { \ + output[16] = X##me; \ + output[17] = ~X##mi; \ + output[18] = X##mo; \ + output[19] = X##mu; \ + if (laneCount < 22) { \ + if (laneCount >= 21) { \ + output[20] = ~X##sa; \ + } \ + } \ + else { \ + output[20] = ~X##sa; \ + output[21] = X##se; \ + if (laneCount >= 23) { \ + output[22] = X##si; \ + } \ + } \ + } \ + } \ + else { \ + output[16] = X##me; \ + output[17] = ~X##mi; \ + output[18] = X##mo; \ + output[19] = X##mu; \ + output[20] = ~X##sa; \ + output[21] = X##se; \ + output[22] = X##si; \ + output[23] = X##so; \ + if (laneCount >= 25) { \ + output[24] = X##su; \ + } \ + } \ + } + +#define wrapOne(X, input, output, index, name) \ + X##name ^= input[index]; \ + output[index] = X##name; + +#define wrapOneInvert(X, input, output, index, name) \ + X##name ^= input[index]; \ + output[index] = ~X##name; + +#define unwrapOne(X, input, output, index, name) \ + output[index] = input[index] ^ X##name; \ + X##name ^= output[index]; + +#define unwrapOneInvert(X, input, output, index, name) \ + output[index] = ~(input[index] ^ X##name); \ + X##name ^= output[index]; \ + +#else /* UseBebigokimisa */ + + +#define copyToStateAndOutput(X, state, output, laneCount) \ + if (laneCount < 16) { \ + if (laneCount < 8) { \ + if (laneCount < 4) { \ + if (laneCount < 2) { \ + state[ 0] = X##ba; \ + if (laneCount >= 1) { \ + output[ 0] = X##ba; \ + } \ + state[ 1] = X##be; \ + state[ 2] = X##bi; \ + } \ + else { \ + state[ 0] = X##ba; \ + output[ 0] = X##ba; \ + state[ 1] = X##be; \ + output[ 1] = X##be; \ + state[ 2] = X##bi; \ + if (laneCount >= 3) { \ + output[ 2] = X##bi; \ + } \ + } \ + state[ 3] = X##bo; \ + state[ 4] = X##bu; \ + state[ 5] = X##ga; \ + state[ 6] = X##ge; \ + } \ + else { \ + state[ 0] = X##ba; \ + output[ 0] = X##ba; \ + state[ 1] = X##be; \ + output[ 1] = X##be; \ + state[ 2] = X##bi; \ + output[ 2] = X##bi; \ + state[ 3] = X##bo; \ + output[ 3] = X##bo; \ + if (laneCount < 6) { \ + state[ 4] = X##bu; \ + if (laneCount >= 5) { \ + output[ 4] = X##bu; \ + } \ + state[ 5] = X##ga; \ + state[ 6] = X##ge; \ + } \ + else { \ + state[ 4] = X##bu; \ + output[ 4] = X##bu; \ + state[ 5] = X##ga; \ + output[ 5] = X##ga; \ + state[ 6] = X##ge; \ + if (laneCount >= 7) { \ + output[ 6] = X##ge; \ + } \ + } \ + } \ + state[ 7] = X##gi; \ + state[ 8] = X##go; \ + state[ 9] = X##gu; \ + state[10] = X##ka; \ + state[11] = X##ke; \ + state[12] = X##ki; \ + state[13] = X##ko; \ + state[14] = X##ku; \ + } \ + else { \ + state[ 0] = X##ba; \ + output[ 0] = X##ba; \ + state[ 1] = X##be; \ + output[ 1] = X##be; \ + state[ 2] = X##bi; \ + output[ 2] = X##bi; \ + state[ 3] = X##bo; \ + output[ 3] = X##bo; \ + state[ 4] = X##bu; \ + output[ 4] = X##bu; \ + state[ 5] = X##ga; \ + output[ 5] = X##ga; \ + state[ 6] = X##ge; \ + output[ 6] = X##ge; \ + state[ 7] = X##gi; \ + output[ 7] = X##gi; \ + if (laneCount < 12) { \ + if (laneCount < 10) { \ + state[ 8] = X##go; \ + if (laneCount >= 9) { \ + output[ 8] = X##go; \ + } \ + state[ 9] = X##gu; \ + state[10] = X##ka; \ + } \ + else { \ + state[ 8] = X##go; \ + output[ 8] = X##go; \ + state[ 9] = X##gu; \ + output[ 9] = X##gu; \ + state[10] = X##ka; \ + if (laneCount >= 11) { \ + output[10] = X##ka; \ + } \ + } \ + state[11] = X##ke; \ + state[12] = X##ki; \ + state[13] = X##ko; \ + state[14] = X##ku; \ + } \ + else { \ + state[ 8] = X##go; \ + output[ 8] = X##go; \ + state[ 9] = X##gu; \ + output[ 9] = X##gu; \ + state[10] = X##ka; \ + output[10] = X##ka; \ + state[11] = X##ke; \ + output[11] = X##ke; \ + if (laneCount < 14) { \ + state[12] = X##ki; \ + if (laneCount >= 13) { \ + output[12]= X##ki; \ + } \ + state[13] = X##ko; \ + state[14] = X##ku; \ + } \ + else { \ + state[12] = X##ki; \ + output[12]= X##ki; \ + state[13] = X##ko; \ + output[13] = X##ko; \ + state[14] = X##ku; \ + if (laneCount >= 15) { \ + output[14] = X##ku; \ + } \ + } \ + } \ + } \ + state[15] = X##ma; \ + state[16] = X##me; \ + state[17] = X##mi; \ + state[18] = X##mo; \ + state[19] = X##mu; \ + state[20] = X##sa; \ + state[21] = X##se; \ + state[22] = X##si; \ + state[23] = X##so; \ + state[24] = X##su; \ + } \ + else { \ + state[ 0] = X##ba; \ + output[ 0] = X##ba; \ + state[ 1] = X##be; \ + output[ 1] = X##be; \ + state[ 2] = X##bi; \ + output[ 2] = X##bi; \ + state[ 3] = X##bo; \ + output[ 3] = X##bo; \ + state[ 4] = X##bu; \ + output[ 4] = X##bu; \ + state[ 5] = X##ga; \ + output[ 5] = X##ga; \ + state[ 6] = X##ge; \ + output[ 6] = X##ge; \ + state[ 7] = X##gi; \ + output[ 7] = X##gi; \ + state[ 8] = X##go; \ + output[ 8] = X##go; \ + state[ 9] = X##gu; \ + output[ 9] = X##gu; \ + state[10] = X##ka; \ + output[10] = X##ka; \ + state[11] = X##ke; \ + output[11] = X##ke; \ + state[12] = X##ki; \ + output[12]= X##ki; \ + state[13] = X##ko; \ + output[13] = X##ko; \ + state[14] = X##ku; \ + output[14] = X##ku; \ + state[15] = X##ma; \ + output[15] = X##ma; \ + if (laneCount < 24) { \ + if (laneCount < 20) { \ + if (laneCount < 18) { \ + state[16] = X##me; \ + if (laneCount >= 17) { \ + output[16] = X##me; \ + } \ + state[17] = X##mi; \ + state[18] = X##mo; \ + } \ + else { \ + state[16] = X##me; \ + output[16] = X##me; \ + state[17] = X##mi; \ + output[17] = X##mi; \ + state[18] = X##mo; \ + if (laneCount >= 19) { \ + output[18] = X##mo; \ + } \ + } \ + state[19] = X##mu; \ + state[20] = X##sa; \ + state[21] = X##se; \ + state[22] = X##si; \ + } \ + else { \ + state[16] = X##me; \ + output[16] = X##me; \ + state[17] = X##mi; \ + output[17] = X##mi; \ + state[18] = X##mo; \ + output[18] = X##mo; \ + state[19] = X##mu; \ + output[19] = X##mu; \ + if (laneCount < 22) { \ + state[20] = X##sa; \ + if (laneCount >= 21) { \ + output[20] = X##sa; \ + } \ + state[21] = X##se; \ + state[22] = X##si; \ + } \ + else { \ + state[20] = X##sa; \ + output[20] = X##sa; \ + state[21] = X##se; \ + output[21] = X##se; \ + state[22] = X##si; \ + if (laneCount >= 23) { \ + output[22] = X##si; \ + } \ + } \ + } \ + state[23] = X##so; \ + state[24] = X##su; \ + } \ + else { \ + state[16] = X##me; \ + output[16] = X##me; \ + state[17] = X##mi; \ + output[17] = X##mi; \ + state[18] = X##mo; \ + output[18] = X##mo; \ + state[19] = X##mu; \ + output[19] = X##mu; \ + state[20] = X##sa; \ + output[20] = X##sa; \ + state[21] = X##se; \ + output[21] = X##se; \ + state[22] = X##si; \ + output[22] = X##si; \ + state[23] = X##so; \ + output[23] = X##so; \ + state[24] = X##su; \ + if (laneCount >= 25) { \ + output[24] = X##su; \ + } \ + } \ + } + +#define output(X, output, laneCount) \ + if (laneCount < 16) { \ + if (laneCount < 8) { \ + if (laneCount < 4) { \ + if (laneCount < 2) { \ + if (laneCount >= 1) { \ + output[ 0] = X##ba; \ + } \ + } \ + else { \ + output[ 0] = X##ba; \ + output[ 1] = X##be; \ + if (laneCount >= 3) { \ + output[ 2] = X##bi; \ + } \ + } \ + } \ + else { \ + output[ 0] = X##ba; \ + output[ 1] = X##be; \ + output[ 2] = X##bi; \ + output[ 3] = X##bo; \ + if (laneCount < 6) { \ + if (laneCount >= 5) { \ + output[ 4] = X##bu; \ + } \ + } \ + else { \ + output[ 4] = X##bu; \ + output[ 5] = X##ga; \ + if (laneCount >= 7) { \ + output[ 6] = X##ge; \ + } \ + } \ + } \ + } \ + else { \ + output[ 0] = X##ba; \ + output[ 1] = X##be; \ + output[ 2] = X##bi; \ + output[ 3] = X##bo; \ + output[ 4] = X##bu; \ + output[ 5] = X##ga; \ + output[ 6] = X##ge; \ + output[ 7] = X##gi; \ + if (laneCount < 12) { \ + if (laneCount < 10) { \ + if (laneCount >= 9) { \ + output[ 8] = X##go; \ + } \ + } \ + else { \ + output[ 8] = X##go; \ + output[ 9] = X##gu; \ + if (laneCount >= 11) { \ + output[10] = X##ka; \ + } \ + } \ + } \ + else { \ + output[ 8] = X##go; \ + output[ 9] = X##gu; \ + output[10] = X##ka; \ + output[11] = X##ke; \ + if (laneCount < 14) { \ + if (laneCount >= 13) { \ + output[12] = X##ki; \ + } \ + } \ + else { \ + output[12] = X##ki; \ + output[13] = X##ko; \ + if (laneCount >= 15) { \ + output[14] = X##ku; \ + } \ + } \ + } \ + } \ + } \ + else { \ + output[ 0] = X##ba; \ + output[ 1] = X##be; \ + output[ 2] = X##bi; \ + output[ 3] = X##bo; \ + output[ 4] = X##bu; \ + output[ 5] = X##ga; \ + output[ 6] = X##ge; \ + output[ 7] = X##gi; \ + output[ 8] = X##go; \ + output[ 9] = X##gu; \ + output[10] = X##ka; \ + output[11] = X##ke; \ + output[12] = X##ki; \ + output[13] = X##ko; \ + output[14] = X##ku; \ + output[15] = X##ma; \ + if (laneCount < 24) { \ + if (laneCount < 20) { \ + if (laneCount < 18) { \ + if (laneCount >= 17) { \ + output[16] = X##me; \ + } \ + } \ + else { \ + output[16] = X##me; \ + output[17] = X##mi; \ + if (laneCount >= 19) { \ + output[18] = X##mo; \ + } \ + } \ + } \ + else { \ + output[16] = X##me; \ + output[17] = X##mi; \ + output[18] = X##mo; \ + output[19] = X##mu; \ + if (laneCount < 22) { \ + if (laneCount >= 21) { \ + output[20] = X##sa; \ + } \ + } \ + else { \ + output[20] = X##sa; \ + output[21] = X##se; \ + if (laneCount >= 23) { \ + output[22] = X##si; \ + } \ + } \ + } \ + } \ + else { \ + output[16] = X##me; \ + output[17] = X##mi; \ + output[18] = X##mo; \ + output[19] = X##mu; \ + output[20] = X##sa; \ + output[21] = X##se; \ + output[22] = X##si; \ + output[23] = X##so; \ + if (laneCount >= 25) { \ + output[24] = X##su; \ + } \ + } \ + } + +#define wrapOne(X, input, output, index, name) \ + X##name ^= input[index]; \ + output[index] = X##name; + +#define wrapOneInvert(X, input, output, index, name) \ + X##name ^= input[index]; \ + output[index] = X##name; + +#define unwrapOne(X, input, output, index, name) \ + output[index] = input[index] ^ X##name; \ + X##name ^= output[index]; + +#define unwrapOneInvert(X, input, output, index, name) \ + output[index] = input[index] ^ X##name; \ + X##name ^= output[index]; + +#endif + +#define wrap(X, input, output, laneCount, trailingBits) \ + if (laneCount < 16) { \ + if (laneCount < 8) { \ + if (laneCount < 4) { \ + if (laneCount < 2) { \ + if (laneCount < 1) { \ + X##ba ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 0, ba) \ + X##be ^= trailingBits; \ + } \ + } \ + else { \ + wrapOne(X, input, output, 0, ba) \ + wrapOneInvert(X, input, output, 1, be) \ + if (laneCount < 3) { \ + X##bi ^= trailingBits; \ + } \ + else { \ + wrapOneInvert(X, input, output, 2, bi) \ + X##bo ^= trailingBits; \ + } \ + } \ + } \ + else { \ + wrapOne(X, input, output, 0, ba) \ + wrapOneInvert(X, input, output, 1, be) \ + wrapOneInvert(X, input, output, 2, bi) \ + wrapOne(X, input, output, 3, bo) \ + if (laneCount < 6) { \ + if (laneCount < 5) { \ + X##bu ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 4, bu) \ + X##ga ^= trailingBits; \ + } \ + } \ + else { \ + wrapOne(X, input, output, 4, bu) \ + wrapOne(X, input, output, 5, ga) \ + if (laneCount < 7) { \ + X##ge ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 6, ge) \ + X##gi ^= trailingBits; \ + } \ + } \ + } \ + } \ + else { \ + wrapOne(X, input, output, 0, ba) \ + wrapOneInvert(X, input, output, 1, be) \ + wrapOneInvert(X, input, output, 2, bi) \ + wrapOne(X, input, output, 3, bo) \ + wrapOne(X, input, output, 4, bu) \ + wrapOne(X, input, output, 5, ga) \ + wrapOne(X, input, output, 6, ge) \ + wrapOne(X, input, output, 7, gi) \ + if (laneCount < 12) { \ + if (laneCount < 10) { \ + if (laneCount < 9) { \ + X##go ^= trailingBits; \ + } \ + else { \ + wrapOneInvert(X, input, output, 8, go) \ + X##gu ^= trailingBits; \ + } \ + } \ + else { \ + wrapOneInvert(X, input, output, 8, go) \ + wrapOne(X, input, output, 9, gu) \ + if (laneCount < 11) { \ + X##ka ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 10, ka) \ + X##ke ^= trailingBits; \ + } \ + } \ + } \ + else { \ + wrapOneInvert(X, input, output, 8, go) \ + wrapOne(X, input, output, 9, gu) \ + wrapOne(X, input, output, 10, ka) \ + wrapOne(X, input, output, 11, ke) \ + if (laneCount < 14) { \ + if (laneCount < 13) { \ + X##ki ^= trailingBits; \ + } \ + else { \ + wrapOneInvert(X, input, output, 12, ki) \ + X##ko ^= trailingBits; \ + } \ + } \ + else { \ + wrapOneInvert(X, input, output, 12, ki) \ + wrapOne(X, input, output, 13, ko) \ + if (laneCount < 15) { \ + X##ku ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 14, ku) \ + X##ma ^= trailingBits; \ + } \ + } \ + } \ + } \ + } \ + else { \ + wrapOne(X, input, output, 0, ba) \ + wrapOneInvert(X, input, output, 1, be) \ + wrapOneInvert(X, input, output, 2, bi) \ + wrapOne(X, input, output, 3, bo) \ + wrapOne(X, input, output, 4, bu) \ + wrapOne(X, input, output, 5, ga) \ + wrapOne(X, input, output, 6, ge) \ + wrapOne(X, input, output, 7, gi) \ + wrapOneInvert(X, input, output, 8, go) \ + wrapOne(X, input, output, 9, gu) \ + wrapOne(X, input, output, 10, ka) \ + wrapOne(X, input, output, 11, ke) \ + wrapOneInvert(X, input, output, 12, ki) \ + wrapOne(X, input, output, 13, ko) \ + wrapOne(X, input, output, 14, ku) \ + wrapOne(X, input, output, 15, ma) \ + if (laneCount < 24) { \ + if (laneCount < 20) { \ + if (laneCount < 18) { \ + if (laneCount < 17) { \ + X##me ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 16, me) \ + X##mi ^= trailingBits; \ + } \ + } \ + else { \ + wrapOne(X, input, output, 16, me) \ + wrapOneInvert(X, input, output, 17, mi) \ + if (laneCount < 19) { \ + X##mo ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 18, mo) \ + X##mu ^= trailingBits; \ + } \ + } \ + } \ + else { \ + wrapOne(X, input, output, 16, me) \ + wrapOneInvert(X, input, output, 17, mi) \ + wrapOne(X, input, output, 18, mo) \ + wrapOne(X, input, output, 19, mu) \ + if (laneCount < 22) { \ + if (laneCount < 21) { \ + X##sa ^= trailingBits; \ + } \ + else { \ + wrapOneInvert(X, input, output, 20, sa) \ + X##se ^= trailingBits; \ + } \ + } \ + else { \ + wrapOneInvert(X, input, output, 20, sa) \ + wrapOne(X, input, output, 21, se) \ + if (laneCount < 23) { \ + X##si ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 22, si) \ + X##so ^= trailingBits; \ + } \ + } \ + } \ + } \ + else { \ + wrapOne(X, input, output, 16, me) \ + wrapOneInvert(X, input, output, 17, mi) \ + wrapOne(X, input, output, 18, mo) \ + wrapOne(X, input, output, 19, mu) \ + wrapOneInvert(X, input, output, 20, sa) \ + wrapOne(X, input, output, 21, se) \ + wrapOne(X, input, output, 22, si) \ + wrapOne(X, input, output, 23, so) \ + if (laneCount < 25) { \ + X##su ^= trailingBits; \ + } \ + else { \ + wrapOne(X, input, output, 24, su) \ + } \ + } \ + } + +#define unwrap(X, input, output, laneCount, trailingBits) \ + if (laneCount < 16) { \ + if (laneCount < 8) { \ + if (laneCount < 4) { \ + if (laneCount < 2) { \ + if (laneCount < 1) { \ + X##ba ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 0, ba) \ + X##be ^= trailingBits; \ + } \ + } \ + else { \ + unwrapOne(X, input, output, 0, ba) \ + unwrapOneInvert(X, input, output, 1, be) \ + if (laneCount < 3) { \ + X##bi ^= trailingBits; \ + } \ + else { \ + unwrapOneInvert(X, input, output, 2, bi) \ + X##bo ^= trailingBits; \ + } \ + } \ + } \ + else { \ + unwrapOne(X, input, output, 0, ba) \ + unwrapOneInvert(X, input, output, 1, be) \ + unwrapOneInvert(X, input, output, 2, bi) \ + unwrapOne(X, input, output, 3, bo) \ + if (laneCount < 6) { \ + if (laneCount < 5) { \ + X##bu ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 4, bu) \ + X##ga ^= trailingBits; \ + } \ + } \ + else { \ + unwrapOne(X, input, output, 4, bu) \ + unwrapOne(X, input, output, 5, ga) \ + if (laneCount < 7) { \ + X##ge ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 6, ge) \ + X##gi ^= trailingBits; \ + } \ + } \ + } \ + } \ + else { \ + unwrapOne(X, input, output, 0, ba) \ + unwrapOneInvert(X, input, output, 1, be) \ + unwrapOneInvert(X, input, output, 2, bi) \ + unwrapOne(X, input, output, 3, bo) \ + unwrapOne(X, input, output, 4, bu) \ + unwrapOne(X, input, output, 5, ga) \ + unwrapOne(X, input, output, 6, ge) \ + unwrapOne(X, input, output, 7, gi) \ + if (laneCount < 12) { \ + if (laneCount < 10) { \ + if (laneCount < 9) { \ + X##go ^= trailingBits; \ + } \ + else { \ + unwrapOneInvert(X, input, output, 8, go) \ + X##gu ^= trailingBits; \ + } \ + } \ + else { \ + unwrapOneInvert(X, input, output, 8, go) \ + unwrapOne(X, input, output, 9, gu) \ + if (laneCount < 11) { \ + X##ka ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 10, ka) \ + X##ke ^= trailingBits; \ + } \ + } \ + } \ + else { \ + unwrapOneInvert(X, input, output, 8, go) \ + unwrapOne(X, input, output, 9, gu) \ + unwrapOne(X, input, output, 10, ka) \ + unwrapOne(X, input, output, 11, ke) \ + if (laneCount < 14) { \ + if (laneCount < 13) { \ + X##ki ^= trailingBits; \ + } \ + else { \ + unwrapOneInvert(X, input, output, 12, ki) \ + X##ko ^= trailingBits; \ + } \ + } \ + else { \ + unwrapOneInvert(X, input, output, 12, ki) \ + unwrapOne(X, input, output, 13, ko) \ + if (laneCount < 15) { \ + X##ku ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 14, ku) \ + X##ma ^= trailingBits; \ + } \ + } \ + } \ + } \ + } \ + else { \ + unwrapOne(X, input, output, 0, ba) \ + unwrapOneInvert(X, input, output, 1, be) \ + unwrapOneInvert(X, input, output, 2, bi) \ + unwrapOne(X, input, output, 3, bo) \ + unwrapOne(X, input, output, 4, bu) \ + unwrapOne(X, input, output, 5, ga) \ + unwrapOne(X, input, output, 6, ge) \ + unwrapOne(X, input, output, 7, gi) \ + unwrapOneInvert(X, input, output, 8, go) \ + unwrapOne(X, input, output, 9, gu) \ + unwrapOne(X, input, output, 10, ka) \ + unwrapOne(X, input, output, 11, ke) \ + unwrapOneInvert(X, input, output, 12, ki) \ + unwrapOne(X, input, output, 13, ko) \ + unwrapOne(X, input, output, 14, ku) \ + unwrapOne(X, input, output, 15, ma) \ + if (laneCount < 24) { \ + if (laneCount < 20) { \ + if (laneCount < 18) { \ + if (laneCount < 17) { \ + X##me ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 16, me) \ + X##mi ^= trailingBits; \ + } \ + } \ + else { \ + unwrapOne(X, input, output, 16, me) \ + unwrapOneInvert(X, input, output, 17, mi) \ + if (laneCount < 19) { \ + X##mo ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 18, mo) \ + X##mu ^= trailingBits; \ + } \ + } \ + } \ + else { \ + unwrapOne(X, input, output, 16, me) \ + unwrapOneInvert(X, input, output, 17, mi) \ + unwrapOne(X, input, output, 18, mo) \ + unwrapOne(X, input, output, 19, mu) \ + if (laneCount < 22) { \ + if (laneCount < 21) { \ + X##sa ^= trailingBits; \ + } \ + else { \ + unwrapOneInvert(X, input, output, 20, sa) \ + X##se ^= trailingBits; \ + } \ + } \ + else { \ + unwrapOneInvert(X, input, output, 20, sa) \ + unwrapOne(X, input, output, 21, se) \ + if (laneCount < 23) { \ + X##si ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 22, si) \ + X##so ^= trailingBits; \ + } \ + } \ + } \ + } \ + else { \ + unwrapOne(X, input, output, 16, me) \ + unwrapOneInvert(X, input, output, 17, mi) \ + unwrapOne(X, input, output, 18, mo) \ + unwrapOne(X, input, output, 19, mu) \ + unwrapOneInvert(X, input, output, 20, sa) \ + unwrapOne(X, input, output, 21, se) \ + unwrapOne(X, input, output, 22, si) \ + unwrapOne(X, input, output, 23, so) \ + if (laneCount < 25) { \ + X##su ^= trailingBits; \ + } \ + else { \ + unwrapOne(X, input, output, 24, su) \ + } \ + } \ + } diff --git a/Modules/_sha3/kcp/KeccakP-1600-SnP-opt32.h b/Modules/_sha3/kcp/KeccakP-1600-SnP-opt32.h new file mode 100644 index 0000000000000000000000000000000000000000..6cf765e6ce11e14d0fae72156fad7138a122679d --- /dev/null +++ b/Modules/_sha3/kcp/KeccakP-1600-SnP-opt32.h @@ -0,0 +1,37 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifndef _KeccakP_1600_SnP_h_ +#define _KeccakP_1600_SnP_h_ + +/** For the documentation, see SnP-documentation.h. + */ + +#define KeccakP1600_implementation "in-place 32-bit optimized implementation" +#define KeccakP1600_stateSizeInBytes 200 +#define KeccakP1600_stateAlignment 8 + +#define KeccakP1600_StaticInitialize() +void KeccakP1600_Initialize(void *state); +void KeccakP1600_AddByte(void *state, unsigned char data, unsigned int offset); +void KeccakP1600_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length); +void KeccakP1600_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length); +void KeccakP1600_OverwriteWithZeroes(void *state, unsigned int byteCount); +void KeccakP1600_Permute_12rounds(void *state); +void KeccakP1600_Permute_24rounds(void *state); +void KeccakP1600_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length); +void KeccakP1600_ExtractAndAddBytes(const void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length); + +#endif diff --git a/Modules/_sha3/kcp/KeccakP-1600-SnP-opt64.h b/Modules/_sha3/kcp/KeccakP-1600-SnP-opt64.h new file mode 100644 index 0000000000000000000000000000000000000000..889a31a79444c5b68e541e5f2867857b5c12a215 --- /dev/null +++ b/Modules/_sha3/kcp/KeccakP-1600-SnP-opt64.h @@ -0,0 +1,49 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifndef _KeccakP_1600_SnP_h_ +#define _KeccakP_1600_SnP_h_ + +/** For the documentation, see SnP-documentation.h. + */ + +/* #include "brg_endian.h" */ +#include "KeccakP-1600-opt64-config.h" + +#define KeccakP1600_implementation "generic 64-bit optimized implementation (" KeccakP1600_implementation_config ")" +#define KeccakP1600_stateSizeInBytes 200 +#define KeccakP1600_stateAlignment 8 +#define KeccakF1600_FastLoop_supported + +#include + +#define KeccakP1600_StaticInitialize() +void KeccakP1600_Initialize(void *state); +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) +#define KeccakP1600_AddByte(state, byte, offset) \ + ((unsigned char*)(state))[(offset)] ^= (byte) +#else +void KeccakP1600_AddByte(void *state, unsigned char data, unsigned int offset); +#endif +void KeccakP1600_AddBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length); +void KeccakP1600_OverwriteBytes(void *state, const unsigned char *data, unsigned int offset, unsigned int length); +void KeccakP1600_OverwriteWithZeroes(void *state, unsigned int byteCount); +void KeccakP1600_Permute_12rounds(void *state); +void KeccakP1600_Permute_24rounds(void *state); +void KeccakP1600_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length); +void KeccakP1600_ExtractAndAddBytes(const void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length); +size_t KeccakF1600_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen); + +#endif diff --git a/Modules/_sha3/kcp/KeccakP-1600-SnP.h b/Modules/_sha3/kcp/KeccakP-1600-SnP.h new file mode 100644 index 0000000000000000000000000000000000000000..0b23f09a6a442fde84c6f360b6fc388040c96299 --- /dev/null +++ b/Modules/_sha3/kcp/KeccakP-1600-SnP.h @@ -0,0 +1,7 @@ +#if KeccakOpt == 64 + #include "KeccakP-1600-SnP-opt64.h" +#elif KeccakOpt == 32 + #include "KeccakP-1600-SnP-opt32.h" +#else + #error "No KeccakOpt" +#endif diff --git a/Modules/_sha3/kcp/KeccakP-1600-inplace32BI.c b/Modules/_sha3/kcp/KeccakP-1600-inplace32BI.c new file mode 100644 index 0000000000000000000000000000000000000000..886dc44197113a00c03f3b377c25ee824516d4df --- /dev/null +++ b/Modules/_sha3/kcp/KeccakP-1600-inplace32BI.c @@ -0,0 +1,1160 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#include +/* #include "brg_endian.h" */ +#include "KeccakP-1600-SnP.h" +#include "SnP-Relaned.h" + +typedef unsigned char UINT8; +typedef unsigned int UINT32; +/* WARNING: on 8-bit and 16-bit platforms, this should be replaced by: */ + +/*typedef unsigned long UINT32; */ + + +#define ROL32(a, offset) ((((UINT32)a) << (offset)) ^ (((UINT32)a) >> (32-(offset)))) + +/* Credit to Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 */ + +#define prepareToBitInterleaving(low, high, temp, temp0, temp1) \ + temp0 = (low); \ + temp = (temp0 ^ (temp0 >> 1)) & 0x22222222UL; temp0 = temp0 ^ temp ^ (temp << 1); \ + temp = (temp0 ^ (temp0 >> 2)) & 0x0C0C0C0CUL; temp0 = temp0 ^ temp ^ (temp << 2); \ + temp = (temp0 ^ (temp0 >> 4)) & 0x00F000F0UL; temp0 = temp0 ^ temp ^ (temp << 4); \ + temp = (temp0 ^ (temp0 >> 8)) & 0x0000FF00UL; temp0 = temp0 ^ temp ^ (temp << 8); \ + temp1 = (high); \ + temp = (temp1 ^ (temp1 >> 1)) & 0x22222222UL; temp1 = temp1 ^ temp ^ (temp << 1); \ + temp = (temp1 ^ (temp1 >> 2)) & 0x0C0C0C0CUL; temp1 = temp1 ^ temp ^ (temp << 2); \ + temp = (temp1 ^ (temp1 >> 4)) & 0x00F000F0UL; temp1 = temp1 ^ temp ^ (temp << 4); \ + temp = (temp1 ^ (temp1 >> 8)) & 0x0000FF00UL; temp1 = temp1 ^ temp ^ (temp << 8); + +#define toBitInterleavingAndXOR(low, high, even, odd, temp, temp0, temp1) \ + prepareToBitInterleaving(low, high, temp, temp0, temp1) \ + even ^= (temp0 & 0x0000FFFF) | (temp1 << 16); \ + odd ^= (temp0 >> 16) | (temp1 & 0xFFFF0000); + +#define toBitInterleavingAndAND(low, high, even, odd, temp, temp0, temp1) \ + prepareToBitInterleaving(low, high, temp, temp0, temp1) \ + even &= (temp0 & 0x0000FFFF) | (temp1 << 16); \ + odd &= (temp0 >> 16) | (temp1 & 0xFFFF0000); + +#define toBitInterleavingAndSet(low, high, even, odd, temp, temp0, temp1) \ + prepareToBitInterleaving(low, high, temp, temp0, temp1) \ + even = (temp0 & 0x0000FFFF) | (temp1 << 16); \ + odd = (temp0 >> 16) | (temp1 & 0xFFFF0000); + +/* Credit to Henry S. Warren, Hacker's Delight, Addison-Wesley, 2002 */ + +#define prepareFromBitInterleaving(even, odd, temp, temp0, temp1) \ + temp0 = (even); \ + temp1 = (odd); \ + temp = (temp0 & 0x0000FFFF) | (temp1 << 16); \ + temp1 = (temp0 >> 16) | (temp1 & 0xFFFF0000); \ + temp0 = temp; \ + temp = (temp0 ^ (temp0 >> 8)) & 0x0000FF00UL; temp0 = temp0 ^ temp ^ (temp << 8); \ + temp = (temp0 ^ (temp0 >> 4)) & 0x00F000F0UL; temp0 = temp0 ^ temp ^ (temp << 4); \ + temp = (temp0 ^ (temp0 >> 2)) & 0x0C0C0C0CUL; temp0 = temp0 ^ temp ^ (temp << 2); \ + temp = (temp0 ^ (temp0 >> 1)) & 0x22222222UL; temp0 = temp0 ^ temp ^ (temp << 1); \ + temp = (temp1 ^ (temp1 >> 8)) & 0x0000FF00UL; temp1 = temp1 ^ temp ^ (temp << 8); \ + temp = (temp1 ^ (temp1 >> 4)) & 0x00F000F0UL; temp1 = temp1 ^ temp ^ (temp << 4); \ + temp = (temp1 ^ (temp1 >> 2)) & 0x0C0C0C0CUL; temp1 = temp1 ^ temp ^ (temp << 2); \ + temp = (temp1 ^ (temp1 >> 1)) & 0x22222222UL; temp1 = temp1 ^ temp ^ (temp << 1); + +#define fromBitInterleaving(even, odd, low, high, temp, temp0, temp1) \ + prepareFromBitInterleaving(even, odd, temp, temp0, temp1) \ + low = temp0; \ + high = temp1; + +#define fromBitInterleavingAndXOR(even, odd, lowIn, highIn, lowOut, highOut, temp, temp0, temp1) \ + prepareFromBitInterleaving(even, odd, temp, temp0, temp1) \ + lowOut = lowIn ^ temp0; \ + highOut = highIn ^ temp1; + +void KeccakP1600_SetBytesInLaneToZero(void *state, unsigned int lanePosition, unsigned int offset, unsigned int length) +{ + UINT8 laneAsBytes[8]; + UINT32 low, high; + UINT32 temp, temp0, temp1; + UINT32 *stateAsHalfLanes = (UINT32*)state; + + memset(laneAsBytes, 0xFF, offset); + memset(laneAsBytes+offset, 0x00, length); + memset(laneAsBytes+offset+length, 0xFF, 8-offset-length); +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + low = *((UINT32*)(laneAsBytes+0)); + high = *((UINT32*)(laneAsBytes+4)); +#else + low = laneAsBytes[0] + | ((UINT32)(laneAsBytes[1]) << 8) + | ((UINT32)(laneAsBytes[2]) << 16) + | ((UINT32)(laneAsBytes[3]) << 24); + high = laneAsBytes[4] + | ((UINT32)(laneAsBytes[5]) << 8) + | ((UINT32)(laneAsBytes[6]) << 16) + | ((UINT32)(laneAsBytes[7]) << 24); +#endif + toBitInterleavingAndAND(low, high, stateAsHalfLanes[lanePosition*2+0], stateAsHalfLanes[lanePosition*2+1], temp, temp0, temp1); +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_Initialize(void *state) +{ + memset(state, 0, 200); +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_AddByte(void *state, unsigned char byte, unsigned int offset) +{ + unsigned int lanePosition = offset/8; + unsigned int offsetInLane = offset%8; + UINT32 low, high; + UINT32 temp, temp0, temp1; + UINT32 *stateAsHalfLanes = (UINT32*)state; + + if (offsetInLane < 4) { + low = (UINT32)byte << (offsetInLane*8); + high = 0; + } + else { + low = 0; + high = (UINT32)byte << ((offsetInLane-4)*8); + } + toBitInterleavingAndXOR(low, high, stateAsHalfLanes[lanePosition*2+0], stateAsHalfLanes[lanePosition*2+1], temp, temp0, temp1); +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_AddBytesInLane(void *state, unsigned int lanePosition, const unsigned char *data, unsigned int offset, unsigned int length) +{ + UINT8 laneAsBytes[8]; + UINT32 low, high; + UINT32 temp, temp0, temp1; + UINT32 *stateAsHalfLanes = (UINT32*)state; + + memset(laneAsBytes, 0, 8); + memcpy(laneAsBytes+offset, data, length); +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + low = *((UINT32*)(laneAsBytes+0)); + high = *((UINT32*)(laneAsBytes+4)); +#else + low = laneAsBytes[0] + | ((UINT32)(laneAsBytes[1]) << 8) + | ((UINT32)(laneAsBytes[2]) << 16) + | ((UINT32)(laneAsBytes[3]) << 24); + high = laneAsBytes[4] + | ((UINT32)(laneAsBytes[5]) << 8) + | ((UINT32)(laneAsBytes[6]) << 16) + | ((UINT32)(laneAsBytes[7]) << 24); +#endif + toBitInterleavingAndXOR(low, high, stateAsHalfLanes[lanePosition*2+0], stateAsHalfLanes[lanePosition*2+1], temp, temp0, temp1); +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_AddLanes(void *state, const unsigned char *data, unsigned int laneCount) +{ +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + const UINT32 * pI = (const UINT32 *)data; + UINT32 * pS = (UINT32*)state; + UINT32 t, x0, x1; + int i; + for (i = laneCount-1; i >= 0; --i) { +#ifdef NO_MISALIGNED_ACCESSES + UINT32 low; + UINT32 high; + memcpy(&low, pI++, 4); + memcpy(&high, pI++, 4); + toBitInterleavingAndXOR(low, high, *(pS++), *(pS++), t, x0, x1); +#else + toBitInterleavingAndXOR(*(pI++), *(pI++), *(pS++), *(pS++), t, x0, x1) +#endif + } +#else + unsigned int lanePosition; + for(lanePosition=0; lanePosition= 0; --i) { +#ifdef NO_MISALIGNED_ACCESSES + UINT32 low; + UINT32 high; + memcpy(&low, pI++, 4); + memcpy(&high, pI++, 4); + toBitInterleavingAndSet(low, high, *(pS++), *(pS++), t, x0, x1); +#else + toBitInterleavingAndSet(*(pI++), *(pI++), *(pS++), *(pS++), t, x0, x1) +#endif + } +#else + unsigned int lanePosition; + for(lanePosition=0; lanePosition> 8) & 0xFF; + laneAsBytes[2] = (low >> 16) & 0xFF; + laneAsBytes[3] = (low >> 24) & 0xFF; + laneAsBytes[4] = high & 0xFF; + laneAsBytes[5] = (high >> 8) & 0xFF; + laneAsBytes[6] = (high >> 16) & 0xFF; + laneAsBytes[7] = (high >> 24) & 0xFF; +#endif + memcpy(data, laneAsBytes+offset, length); +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_ExtractLanes(const void *state, unsigned char *data, unsigned int laneCount) +{ +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + UINT32 * pI = (UINT32 *)data; + const UINT32 * pS = ( const UINT32 *)state; + UINT32 t, x0, x1; + int i; + for (i = laneCount-1; i >= 0; --i) { +#ifdef NO_MISALIGNED_ACCESSES + UINT32 low; + UINT32 high; + fromBitInterleaving(*(pS++), *(pS++), low, high, t, x0, x1); + memcpy(pI++, &low, 4); + memcpy(pI++, &high, 4); +#else + fromBitInterleaving(*(pS++), *(pS++), *(pI++), *(pI++), t, x0, x1) +#endif + } +#else + unsigned int lanePosition; + for(lanePosition=0; lanePosition> 8) & 0xFF; + laneAsBytes[2] = (low >> 16) & 0xFF; + laneAsBytes[3] = (low >> 24) & 0xFF; + laneAsBytes[4] = high & 0xFF; + laneAsBytes[5] = (high >> 8) & 0xFF; + laneAsBytes[6] = (high >> 16) & 0xFF; + laneAsBytes[7] = (high >> 24) & 0xFF; + memcpy(data+lanePosition*8, laneAsBytes, 8); + } +#endif +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length) +{ + SnP_ExtractBytes(state, data, offset, length, KeccakP1600_ExtractLanes, KeccakP1600_ExtractBytesInLane, 8); +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_ExtractAndAddBytesInLane(const void *state, unsigned int lanePosition, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length) +{ + UINT32 *stateAsHalfLanes = (UINT32*)state; + UINT32 low, high, temp, temp0, temp1; + UINT8 laneAsBytes[8]; + unsigned int i; + + fromBitInterleaving(stateAsHalfLanes[lanePosition*2], stateAsHalfLanes[lanePosition*2+1], low, high, temp, temp0, temp1); +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + *((UINT32*)(laneAsBytes+0)) = low; + *((UINT32*)(laneAsBytes+4)) = high; +#else + laneAsBytes[0] = low & 0xFF; + laneAsBytes[1] = (low >> 8) & 0xFF; + laneAsBytes[2] = (low >> 16) & 0xFF; + laneAsBytes[3] = (low >> 24) & 0xFF; + laneAsBytes[4] = high & 0xFF; + laneAsBytes[5] = (high >> 8) & 0xFF; + laneAsBytes[6] = (high >> 16) & 0xFF; + laneAsBytes[7] = (high >> 24) & 0xFF; +#endif + for(i=0; i= 0; --i) { +#ifdef NO_MISALIGNED_ACCESSES + UINT32 low; + UINT32 high; + fromBitInterleaving(*(pS++), *(pS++), low, high, t, x0, x1); + *(pO++) = *(pI++) ^ low; + *(pO++) = *(pI++) ^ high; +#else + fromBitInterleavingAndXOR(*(pS++), *(pS++), *(pI++), *(pI++), *(pO++), *(pO++), t, x0, x1) +#endif + } +#else + unsigned int lanePosition; + for(lanePosition=0; lanePosition> 8) & 0xFF; + laneAsBytes[2] = (low >> 16) & 0xFF; + laneAsBytes[3] = (low >> 24) & 0xFF; + laneAsBytes[4] = high & 0xFF; + laneAsBytes[5] = (high >> 8) & 0xFF; + laneAsBytes[6] = (high >> 16) & 0xFF; + laneAsBytes[7] = (high >> 24) & 0xFF; + ((UINT32*)(output+lanePosition*8))[0] = ((UINT32*)(input+lanePosition*8))[0] ^ (*(const UINT32*)(laneAsBytes+0)); + ((UINT32*)(output+lanePosition*8))[1] = ((UINT32*)(input+lanePosition*8))[0] ^ (*(const UINT32*)(laneAsBytes+4)); + } +#endif +} +/* ---------------------------------------------------------------- */ + +void KeccakP1600_ExtractAndAddBytes(const void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length) +{ + SnP_ExtractAndAddBytes(state, input, output, offset, length, KeccakP1600_ExtractAndAddLanes, KeccakP1600_ExtractAndAddBytesInLane, 8); +} + +/* ---------------------------------------------------------------- */ + +static const UINT32 KeccakF1600RoundConstants_int2[2*24+1] = +{ + 0x00000001UL, 0x00000000UL, + 0x00000000UL, 0x00000089UL, + 0x00000000UL, 0x8000008bUL, + 0x00000000UL, 0x80008080UL, + 0x00000001UL, 0x0000008bUL, + 0x00000001UL, 0x00008000UL, + 0x00000001UL, 0x80008088UL, + 0x00000001UL, 0x80000082UL, + 0x00000000UL, 0x0000000bUL, + 0x00000000UL, 0x0000000aUL, + 0x00000001UL, 0x00008082UL, + 0x00000000UL, 0x00008003UL, + 0x00000001UL, 0x0000808bUL, + 0x00000001UL, 0x8000000bUL, + 0x00000001UL, 0x8000008aUL, + 0x00000001UL, 0x80000081UL, + 0x00000000UL, 0x80000081UL, + 0x00000000UL, 0x80000008UL, + 0x00000000UL, 0x00000083UL, + 0x00000000UL, 0x80008003UL, + 0x00000001UL, 0x80008088UL, + 0x00000000UL, 0x80000088UL, + 0x00000001UL, 0x00008000UL, + 0x00000000UL, 0x80008082UL, + 0x000000FFUL +}; + +#define KeccakAtoD_round0() \ + Cx = Abu0^Agu0^Aku0^Amu0^Asu0; \ + Du1 = Abe1^Age1^Ake1^Ame1^Ase1; \ + Da0 = Cx^ROL32(Du1, 1); \ + Cz = Abu1^Agu1^Aku1^Amu1^Asu1; \ + Du0 = Abe0^Age0^Ake0^Ame0^Ase0; \ + Da1 = Cz^Du0; \ +\ + Cw = Abi0^Agi0^Aki0^Ami0^Asi0; \ + Do0 = Cw^ROL32(Cz, 1); \ + Cy = Abi1^Agi1^Aki1^Ami1^Asi1; \ + Do1 = Cy^Cx; \ +\ + Cx = Aba0^Aga0^Aka0^Ama0^Asa0; \ + De0 = Cx^ROL32(Cy, 1); \ + Cz = Aba1^Aga1^Aka1^Ama1^Asa1; \ + De1 = Cz^Cw; \ +\ + Cy = Abo1^Ago1^Ako1^Amo1^Aso1; \ + Di0 = Du0^ROL32(Cy, 1); \ + Cw = Abo0^Ago0^Ako0^Amo0^Aso0; \ + Di1 = Du1^Cw; \ +\ + Du0 = Cw^ROL32(Cz, 1); \ + Du1 = Cy^Cx; \ + +#define KeccakAtoD_round1() \ + Cx = Asu0^Agu0^Amu0^Abu1^Aku1; \ + Du1 = Age1^Ame0^Abe0^Ake1^Ase1; \ + Da0 = Cx^ROL32(Du1, 1); \ + Cz = Asu1^Agu1^Amu1^Abu0^Aku0; \ + Du0 = Age0^Ame1^Abe1^Ake0^Ase0; \ + Da1 = Cz^Du0; \ +\ + Cw = Aki1^Asi1^Agi0^Ami1^Abi0; \ + Do0 = Cw^ROL32(Cz, 1); \ + Cy = Aki0^Asi0^Agi1^Ami0^Abi1; \ + Do1 = Cy^Cx; \ +\ + Cx = Aba0^Aka1^Asa0^Aga0^Ama1; \ + De0 = Cx^ROL32(Cy, 1); \ + Cz = Aba1^Aka0^Asa1^Aga1^Ama0; \ + De1 = Cz^Cw; \ +\ + Cy = Amo0^Abo1^Ako0^Aso1^Ago0; \ + Di0 = Du0^ROL32(Cy, 1); \ + Cw = Amo1^Abo0^Ako1^Aso0^Ago1; \ + Di1 = Du1^Cw; \ +\ + Du0 = Cw^ROL32(Cz, 1); \ + Du1 = Cy^Cx; \ + +#define KeccakAtoD_round2() \ + Cx = Aku1^Agu0^Abu1^Asu1^Amu1; \ + Du1 = Ame0^Ake0^Age0^Abe0^Ase1; \ + Da0 = Cx^ROL32(Du1, 1); \ + Cz = Aku0^Agu1^Abu0^Asu0^Amu0; \ + Du0 = Ame1^Ake1^Age1^Abe1^Ase0; \ + Da1 = Cz^Du0; \ +\ + Cw = Agi1^Abi1^Asi1^Ami0^Aki1; \ + Do0 = Cw^ROL32(Cz, 1); \ + Cy = Agi0^Abi0^Asi0^Ami1^Aki0; \ + Do1 = Cy^Cx; \ +\ + Cx = Aba0^Asa1^Ama1^Aka1^Aga1; \ + De0 = Cx^ROL32(Cy, 1); \ + Cz = Aba1^Asa0^Ama0^Aka0^Aga0; \ + De1 = Cz^Cw; \ +\ + Cy = Aso0^Amo0^Ako1^Ago0^Abo0; \ + Di0 = Du0^ROL32(Cy, 1); \ + Cw = Aso1^Amo1^Ako0^Ago1^Abo1; \ + Di1 = Du1^Cw; \ +\ + Du0 = Cw^ROL32(Cz, 1); \ + Du1 = Cy^Cx; \ + +#define KeccakAtoD_round3() \ + Cx = Amu1^Agu0^Asu1^Aku0^Abu0; \ + Du1 = Ake0^Abe1^Ame1^Age0^Ase1; \ + Da0 = Cx^ROL32(Du1, 1); \ + Cz = Amu0^Agu1^Asu0^Aku1^Abu1; \ + Du0 = Ake1^Abe0^Ame0^Age1^Ase0; \ + Da1 = Cz^Du0; \ +\ + Cw = Asi0^Aki0^Abi1^Ami1^Agi1; \ + Do0 = Cw^ROL32(Cz, 1); \ + Cy = Asi1^Aki1^Abi0^Ami0^Agi0; \ + Do1 = Cy^Cx; \ +\ + Cx = Aba0^Ama0^Aga1^Asa1^Aka0; \ + De0 = Cx^ROL32(Cy, 1); \ + Cz = Aba1^Ama1^Aga0^Asa0^Aka1; \ + De1 = Cz^Cw; \ +\ + Cy = Ago1^Aso0^Ako0^Abo0^Amo1; \ + Di0 = Du0^ROL32(Cy, 1); \ + Cw = Ago0^Aso1^Ako1^Abo1^Amo0; \ + Di1 = Du1^Cw; \ +\ + Du0 = Cw^ROL32(Cz, 1); \ + Du1 = Cy^Cx; \ + +void KeccakP1600_Permute_Nrounds(void *state, unsigned int nRounds) +{ + { + UINT32 Da0, De0, Di0, Do0, Du0; + UINT32 Da1, De1, Di1, Do1, Du1; + UINT32 Ca0, Ce0, Ci0, Co0, Cu0; + UINT32 Cx, Cy, Cz, Cw; + #define Ba Ca0 + #define Be Ce0 + #define Bi Ci0 + #define Bo Co0 + #define Bu Cu0 + const UINT32 *pRoundConstants = KeccakF1600RoundConstants_int2+(24-nRounds)*2; + UINT32 *stateAsHalfLanes = (UINT32*)state; + #define Aba0 stateAsHalfLanes[ 0] + #define Aba1 stateAsHalfLanes[ 1] + #define Abe0 stateAsHalfLanes[ 2] + #define Abe1 stateAsHalfLanes[ 3] + #define Abi0 stateAsHalfLanes[ 4] + #define Abi1 stateAsHalfLanes[ 5] + #define Abo0 stateAsHalfLanes[ 6] + #define Abo1 stateAsHalfLanes[ 7] + #define Abu0 stateAsHalfLanes[ 8] + #define Abu1 stateAsHalfLanes[ 9] + #define Aga0 stateAsHalfLanes[10] + #define Aga1 stateAsHalfLanes[11] + #define Age0 stateAsHalfLanes[12] + #define Age1 stateAsHalfLanes[13] + #define Agi0 stateAsHalfLanes[14] + #define Agi1 stateAsHalfLanes[15] + #define Ago0 stateAsHalfLanes[16] + #define Ago1 stateAsHalfLanes[17] + #define Agu0 stateAsHalfLanes[18] + #define Agu1 stateAsHalfLanes[19] + #define Aka0 stateAsHalfLanes[20] + #define Aka1 stateAsHalfLanes[21] + #define Ake0 stateAsHalfLanes[22] + #define Ake1 stateAsHalfLanes[23] + #define Aki0 stateAsHalfLanes[24] + #define Aki1 stateAsHalfLanes[25] + #define Ako0 stateAsHalfLanes[26] + #define Ako1 stateAsHalfLanes[27] + #define Aku0 stateAsHalfLanes[28] + #define Aku1 stateAsHalfLanes[29] + #define Ama0 stateAsHalfLanes[30] + #define Ama1 stateAsHalfLanes[31] + #define Ame0 stateAsHalfLanes[32] + #define Ame1 stateAsHalfLanes[33] + #define Ami0 stateAsHalfLanes[34] + #define Ami1 stateAsHalfLanes[35] + #define Amo0 stateAsHalfLanes[36] + #define Amo1 stateAsHalfLanes[37] + #define Amu0 stateAsHalfLanes[38] + #define Amu1 stateAsHalfLanes[39] + #define Asa0 stateAsHalfLanes[40] + #define Asa1 stateAsHalfLanes[41] + #define Ase0 stateAsHalfLanes[42] + #define Ase1 stateAsHalfLanes[43] + #define Asi0 stateAsHalfLanes[44] + #define Asi1 stateAsHalfLanes[45] + #define Aso0 stateAsHalfLanes[46] + #define Aso1 stateAsHalfLanes[47] + #define Asu0 stateAsHalfLanes[48] + #define Asu1 stateAsHalfLanes[49] + + do + { + /* --- Code for 4 rounds */ + + /* --- using factor 2 interleaving, 64-bit lanes mapped to 32-bit words */ + + KeccakAtoD_round0(); + + Ba = (Aba0^Da0); + Be = ROL32((Age0^De0), 22); + Bi = ROL32((Aki1^Di1), 22); + Bo = ROL32((Amo1^Do1), 11); + Bu = ROL32((Asu0^Du0), 7); + Aba0 = Ba ^((~Be)& Bi ); + Aba0 ^= *(pRoundConstants++); + Age0 = Be ^((~Bi)& Bo ); + Aki1 = Bi ^((~Bo)& Bu ); + Amo1 = Bo ^((~Bu)& Ba ); + Asu0 = Bu ^((~Ba)& Be ); + + Ba = (Aba1^Da1); + Be = ROL32((Age1^De1), 22); + Bi = ROL32((Aki0^Di0), 21); + Bo = ROL32((Amo0^Do0), 10); + Bu = ROL32((Asu1^Du1), 7); + Aba1 = Ba ^((~Be)& Bi ); + Aba1 ^= *(pRoundConstants++); + Age1 = Be ^((~Bi)& Bo ); + Aki0 = Bi ^((~Bo)& Bu ); + Amo0 = Bo ^((~Bu)& Ba ); + Asu1 = Bu ^((~Ba)& Be ); + + Bi = ROL32((Aka1^Da1), 2); + Bo = ROL32((Ame1^De1), 23); + Bu = ROL32((Asi1^Di1), 31); + Ba = ROL32((Abo0^Do0), 14); + Be = ROL32((Agu0^Du0), 10); + Aka1 = Ba ^((~Be)& Bi ); + Ame1 = Be ^((~Bi)& Bo ); + Asi1 = Bi ^((~Bo)& Bu ); + Abo0 = Bo ^((~Bu)& Ba ); + Agu0 = Bu ^((~Ba)& Be ); + + Bi = ROL32((Aka0^Da0), 1); + Bo = ROL32((Ame0^De0), 22); + Bu = ROL32((Asi0^Di0), 30); + Ba = ROL32((Abo1^Do1), 14); + Be = ROL32((Agu1^Du1), 10); + Aka0 = Ba ^((~Be)& Bi ); + Ame0 = Be ^((~Bi)& Bo ); + Asi0 = Bi ^((~Bo)& Bu ); + Abo1 = Bo ^((~Bu)& Ba ); + Agu1 = Bu ^((~Ba)& Be ); + + Bu = ROL32((Asa0^Da0), 9); + Ba = ROL32((Abe1^De1), 1); + Be = ROL32((Agi0^Di0), 3); + Bi = ROL32((Ako1^Do1), 13); + Bo = ROL32((Amu0^Du0), 4); + Asa0 = Ba ^((~Be)& Bi ); + Abe1 = Be ^((~Bi)& Bo ); + Agi0 = Bi ^((~Bo)& Bu ); + Ako1 = Bo ^((~Bu)& Ba ); + Amu0 = Bu ^((~Ba)& Be ); + + Bu = ROL32((Asa1^Da1), 9); + Ba = (Abe0^De0); + Be = ROL32((Agi1^Di1), 3); + Bi = ROL32((Ako0^Do0), 12); + Bo = ROL32((Amu1^Du1), 4); + Asa1 = Ba ^((~Be)& Bi ); + Abe0 = Be ^((~Bi)& Bo ); + Agi1 = Bi ^((~Bo)& Bu ); + Ako0 = Bo ^((~Bu)& Ba ); + Amu1 = Bu ^((~Ba)& Be ); + + Be = ROL32((Aga0^Da0), 18); + Bi = ROL32((Ake0^De0), 5); + Bo = ROL32((Ami1^Di1), 8); + Bu = ROL32((Aso0^Do0), 28); + Ba = ROL32((Abu1^Du1), 14); + Aga0 = Ba ^((~Be)& Bi ); + Ake0 = Be ^((~Bi)& Bo ); + Ami1 = Bi ^((~Bo)& Bu ); + Aso0 = Bo ^((~Bu)& Ba ); + Abu1 = Bu ^((~Ba)& Be ); + + Be = ROL32((Aga1^Da1), 18); + Bi = ROL32((Ake1^De1), 5); + Bo = ROL32((Ami0^Di0), 7); + Bu = ROL32((Aso1^Do1), 28); + Ba = ROL32((Abu0^Du0), 13); + Aga1 = Ba ^((~Be)& Bi ); + Ake1 = Be ^((~Bi)& Bo ); + Ami0 = Bi ^((~Bo)& Bu ); + Aso1 = Bo ^((~Bu)& Ba ); + Abu0 = Bu ^((~Ba)& Be ); + + Bo = ROL32((Ama1^Da1), 21); + Bu = ROL32((Ase0^De0), 1); + Ba = ROL32((Abi0^Di0), 31); + Be = ROL32((Ago1^Do1), 28); + Bi = ROL32((Aku1^Du1), 20); + Ama1 = Ba ^((~Be)& Bi ); + Ase0 = Be ^((~Bi)& Bo ); + Abi0 = Bi ^((~Bo)& Bu ); + Ago1 = Bo ^((~Bu)& Ba ); + Aku1 = Bu ^((~Ba)& Be ); + + Bo = ROL32((Ama0^Da0), 20); + Bu = ROL32((Ase1^De1), 1); + Ba = ROL32((Abi1^Di1), 31); + Be = ROL32((Ago0^Do0), 27); + Bi = ROL32((Aku0^Du0), 19); + Ama0 = Ba ^((~Be)& Bi ); + Ase1 = Be ^((~Bi)& Bo ); + Abi1 = Bi ^((~Bo)& Bu ); + Ago0 = Bo ^((~Bu)& Ba ); + Aku0 = Bu ^((~Ba)& Be ); + + KeccakAtoD_round1(); + + Ba = (Aba0^Da0); + Be = ROL32((Ame1^De0), 22); + Bi = ROL32((Agi1^Di1), 22); + Bo = ROL32((Aso1^Do1), 11); + Bu = ROL32((Aku1^Du0), 7); + Aba0 = Ba ^((~Be)& Bi ); + Aba0 ^= *(pRoundConstants++); + Ame1 = Be ^((~Bi)& Bo ); + Agi1 = Bi ^((~Bo)& Bu ); + Aso1 = Bo ^((~Bu)& Ba ); + Aku1 = Bu ^((~Ba)& Be ); + + Ba = (Aba1^Da1); + Be = ROL32((Ame0^De1), 22); + Bi = ROL32((Agi0^Di0), 21); + Bo = ROL32((Aso0^Do0), 10); + Bu = ROL32((Aku0^Du1), 7); + Aba1 = Ba ^((~Be)& Bi ); + Aba1 ^= *(pRoundConstants++); + Ame0 = Be ^((~Bi)& Bo ); + Agi0 = Bi ^((~Bo)& Bu ); + Aso0 = Bo ^((~Bu)& Ba ); + Aku0 = Bu ^((~Ba)& Be ); + + Bi = ROL32((Asa1^Da1), 2); + Bo = ROL32((Ake1^De1), 23); + Bu = ROL32((Abi1^Di1), 31); + Ba = ROL32((Amo1^Do0), 14); + Be = ROL32((Agu0^Du0), 10); + Asa1 = Ba ^((~Be)& Bi ); + Ake1 = Be ^((~Bi)& Bo ); + Abi1 = Bi ^((~Bo)& Bu ); + Amo1 = Bo ^((~Bu)& Ba ); + Agu0 = Bu ^((~Ba)& Be ); + + Bi = ROL32((Asa0^Da0), 1); + Bo = ROL32((Ake0^De0), 22); + Bu = ROL32((Abi0^Di0), 30); + Ba = ROL32((Amo0^Do1), 14); + Be = ROL32((Agu1^Du1), 10); + Asa0 = Ba ^((~Be)& Bi ); + Ake0 = Be ^((~Bi)& Bo ); + Abi0 = Bi ^((~Bo)& Bu ); + Amo0 = Bo ^((~Bu)& Ba ); + Agu1 = Bu ^((~Ba)& Be ); + + Bu = ROL32((Ama1^Da0), 9); + Ba = ROL32((Age1^De1), 1); + Be = ROL32((Asi1^Di0), 3); + Bi = ROL32((Ako0^Do1), 13); + Bo = ROL32((Abu1^Du0), 4); + Ama1 = Ba ^((~Be)& Bi ); + Age1 = Be ^((~Bi)& Bo ); + Asi1 = Bi ^((~Bo)& Bu ); + Ako0 = Bo ^((~Bu)& Ba ); + Abu1 = Bu ^((~Ba)& Be ); + + Bu = ROL32((Ama0^Da1), 9); + Ba = (Age0^De0); + Be = ROL32((Asi0^Di1), 3); + Bi = ROL32((Ako1^Do0), 12); + Bo = ROL32((Abu0^Du1), 4); + Ama0 = Ba ^((~Be)& Bi ); + Age0 = Be ^((~Bi)& Bo ); + Asi0 = Bi ^((~Bo)& Bu ); + Ako1 = Bo ^((~Bu)& Ba ); + Abu0 = Bu ^((~Ba)& Be ); + + Be = ROL32((Aka1^Da0), 18); + Bi = ROL32((Abe1^De0), 5); + Bo = ROL32((Ami0^Di1), 8); + Bu = ROL32((Ago1^Do0), 28); + Ba = ROL32((Asu1^Du1), 14); + Aka1 = Ba ^((~Be)& Bi ); + Abe1 = Be ^((~Bi)& Bo ); + Ami0 = Bi ^((~Bo)& Bu ); + Ago1 = Bo ^((~Bu)& Ba ); + Asu1 = Bu ^((~Ba)& Be ); + + Be = ROL32((Aka0^Da1), 18); + Bi = ROL32((Abe0^De1), 5); + Bo = ROL32((Ami1^Di0), 7); + Bu = ROL32((Ago0^Do1), 28); + Ba = ROL32((Asu0^Du0), 13); + Aka0 = Ba ^((~Be)& Bi ); + Abe0 = Be ^((~Bi)& Bo ); + Ami1 = Bi ^((~Bo)& Bu ); + Ago0 = Bo ^((~Bu)& Ba ); + Asu0 = Bu ^((~Ba)& Be ); + + Bo = ROL32((Aga1^Da1), 21); + Bu = ROL32((Ase0^De0), 1); + Ba = ROL32((Aki1^Di0), 31); + Be = ROL32((Abo1^Do1), 28); + Bi = ROL32((Amu1^Du1), 20); + Aga1 = Ba ^((~Be)& Bi ); + Ase0 = Be ^((~Bi)& Bo ); + Aki1 = Bi ^((~Bo)& Bu ); + Abo1 = Bo ^((~Bu)& Ba ); + Amu1 = Bu ^((~Ba)& Be ); + + Bo = ROL32((Aga0^Da0), 20); + Bu = ROL32((Ase1^De1), 1); + Ba = ROL32((Aki0^Di1), 31); + Be = ROL32((Abo0^Do0), 27); + Bi = ROL32((Amu0^Du0), 19); + Aga0 = Ba ^((~Be)& Bi ); + Ase1 = Be ^((~Bi)& Bo ); + Aki0 = Bi ^((~Bo)& Bu ); + Abo0 = Bo ^((~Bu)& Ba ); + Amu0 = Bu ^((~Ba)& Be ); + + KeccakAtoD_round2(); + + Ba = (Aba0^Da0); + Be = ROL32((Ake1^De0), 22); + Bi = ROL32((Asi0^Di1), 22); + Bo = ROL32((Ago0^Do1), 11); + Bu = ROL32((Amu1^Du0), 7); + Aba0 = Ba ^((~Be)& Bi ); + Aba0 ^= *(pRoundConstants++); + Ake1 = Be ^((~Bi)& Bo ); + Asi0 = Bi ^((~Bo)& Bu ); + Ago0 = Bo ^((~Bu)& Ba ); + Amu1 = Bu ^((~Ba)& Be ); + + Ba = (Aba1^Da1); + Be = ROL32((Ake0^De1), 22); + Bi = ROL32((Asi1^Di0), 21); + Bo = ROL32((Ago1^Do0), 10); + Bu = ROL32((Amu0^Du1), 7); + Aba1 = Ba ^((~Be)& Bi ); + Aba1 ^= *(pRoundConstants++); + Ake0 = Be ^((~Bi)& Bo ); + Asi1 = Bi ^((~Bo)& Bu ); + Ago1 = Bo ^((~Bu)& Ba ); + Amu0 = Bu ^((~Ba)& Be ); + + Bi = ROL32((Ama0^Da1), 2); + Bo = ROL32((Abe0^De1), 23); + Bu = ROL32((Aki0^Di1), 31); + Ba = ROL32((Aso1^Do0), 14); + Be = ROL32((Agu0^Du0), 10); + Ama0 = Ba ^((~Be)& Bi ); + Abe0 = Be ^((~Bi)& Bo ); + Aki0 = Bi ^((~Bo)& Bu ); + Aso1 = Bo ^((~Bu)& Ba ); + Agu0 = Bu ^((~Ba)& Be ); + + Bi = ROL32((Ama1^Da0), 1); + Bo = ROL32((Abe1^De0), 22); + Bu = ROL32((Aki1^Di0), 30); + Ba = ROL32((Aso0^Do1), 14); + Be = ROL32((Agu1^Du1), 10); + Ama1 = Ba ^((~Be)& Bi ); + Abe1 = Be ^((~Bi)& Bo ); + Aki1 = Bi ^((~Bo)& Bu ); + Aso0 = Bo ^((~Bu)& Ba ); + Agu1 = Bu ^((~Ba)& Be ); + + Bu = ROL32((Aga1^Da0), 9); + Ba = ROL32((Ame0^De1), 1); + Be = ROL32((Abi1^Di0), 3); + Bi = ROL32((Ako1^Do1), 13); + Bo = ROL32((Asu1^Du0), 4); + Aga1 = Ba ^((~Be)& Bi ); + Ame0 = Be ^((~Bi)& Bo ); + Abi1 = Bi ^((~Bo)& Bu ); + Ako1 = Bo ^((~Bu)& Ba ); + Asu1 = Bu ^((~Ba)& Be ); + + Bu = ROL32((Aga0^Da1), 9); + Ba = (Ame1^De0); + Be = ROL32((Abi0^Di1), 3); + Bi = ROL32((Ako0^Do0), 12); + Bo = ROL32((Asu0^Du1), 4); + Aga0 = Ba ^((~Be)& Bi ); + Ame1 = Be ^((~Bi)& Bo ); + Abi0 = Bi ^((~Bo)& Bu ); + Ako0 = Bo ^((~Bu)& Ba ); + Asu0 = Bu ^((~Ba)& Be ); + + Be = ROL32((Asa1^Da0), 18); + Bi = ROL32((Age1^De0), 5); + Bo = ROL32((Ami1^Di1), 8); + Bu = ROL32((Abo1^Do0), 28); + Ba = ROL32((Aku0^Du1), 14); + Asa1 = Ba ^((~Be)& Bi ); + Age1 = Be ^((~Bi)& Bo ); + Ami1 = Bi ^((~Bo)& Bu ); + Abo1 = Bo ^((~Bu)& Ba ); + Aku0 = Bu ^((~Ba)& Be ); + + Be = ROL32((Asa0^Da1), 18); + Bi = ROL32((Age0^De1), 5); + Bo = ROL32((Ami0^Di0), 7); + Bu = ROL32((Abo0^Do1), 28); + Ba = ROL32((Aku1^Du0), 13); + Asa0 = Ba ^((~Be)& Bi ); + Age0 = Be ^((~Bi)& Bo ); + Ami0 = Bi ^((~Bo)& Bu ); + Abo0 = Bo ^((~Bu)& Ba ); + Aku1 = Bu ^((~Ba)& Be ); + + Bo = ROL32((Aka0^Da1), 21); + Bu = ROL32((Ase0^De0), 1); + Ba = ROL32((Agi1^Di0), 31); + Be = ROL32((Amo0^Do1), 28); + Bi = ROL32((Abu0^Du1), 20); + Aka0 = Ba ^((~Be)& Bi ); + Ase0 = Be ^((~Bi)& Bo ); + Agi1 = Bi ^((~Bo)& Bu ); + Amo0 = Bo ^((~Bu)& Ba ); + Abu0 = Bu ^((~Ba)& Be ); + + Bo = ROL32((Aka1^Da0), 20); + Bu = ROL32((Ase1^De1), 1); + Ba = ROL32((Agi0^Di1), 31); + Be = ROL32((Amo1^Do0), 27); + Bi = ROL32((Abu1^Du0), 19); + Aka1 = Ba ^((~Be)& Bi ); + Ase1 = Be ^((~Bi)& Bo ); + Agi0 = Bi ^((~Bo)& Bu ); + Amo1 = Bo ^((~Bu)& Ba ); + Abu1 = Bu ^((~Ba)& Be ); + + KeccakAtoD_round3(); + + Ba = (Aba0^Da0); + Be = ROL32((Abe0^De0), 22); + Bi = ROL32((Abi0^Di1), 22); + Bo = ROL32((Abo0^Do1), 11); + Bu = ROL32((Abu0^Du0), 7); + Aba0 = Ba ^((~Be)& Bi ); + Aba0 ^= *(pRoundConstants++); + Abe0 = Be ^((~Bi)& Bo ); + Abi0 = Bi ^((~Bo)& Bu ); + Abo0 = Bo ^((~Bu)& Ba ); + Abu0 = Bu ^((~Ba)& Be ); + + Ba = (Aba1^Da1); + Be = ROL32((Abe1^De1), 22); + Bi = ROL32((Abi1^Di0), 21); + Bo = ROL32((Abo1^Do0), 10); + Bu = ROL32((Abu1^Du1), 7); + Aba1 = Ba ^((~Be)& Bi ); + Aba1 ^= *(pRoundConstants++); + Abe1 = Be ^((~Bi)& Bo ); + Abi1 = Bi ^((~Bo)& Bu ); + Abo1 = Bo ^((~Bu)& Ba ); + Abu1 = Bu ^((~Ba)& Be ); + + Bi = ROL32((Aga0^Da1), 2); + Bo = ROL32((Age0^De1), 23); + Bu = ROL32((Agi0^Di1), 31); + Ba = ROL32((Ago0^Do0), 14); + Be = ROL32((Agu0^Du0), 10); + Aga0 = Ba ^((~Be)& Bi ); + Age0 = Be ^((~Bi)& Bo ); + Agi0 = Bi ^((~Bo)& Bu ); + Ago0 = Bo ^((~Bu)& Ba ); + Agu0 = Bu ^((~Ba)& Be ); + + Bi = ROL32((Aga1^Da0), 1); + Bo = ROL32((Age1^De0), 22); + Bu = ROL32((Agi1^Di0), 30); + Ba = ROL32((Ago1^Do1), 14); + Be = ROL32((Agu1^Du1), 10); + Aga1 = Ba ^((~Be)& Bi ); + Age1 = Be ^((~Bi)& Bo ); + Agi1 = Bi ^((~Bo)& Bu ); + Ago1 = Bo ^((~Bu)& Ba ); + Agu1 = Bu ^((~Ba)& Be ); + + Bu = ROL32((Aka0^Da0), 9); + Ba = ROL32((Ake0^De1), 1); + Be = ROL32((Aki0^Di0), 3); + Bi = ROL32((Ako0^Do1), 13); + Bo = ROL32((Aku0^Du0), 4); + Aka0 = Ba ^((~Be)& Bi ); + Ake0 = Be ^((~Bi)& Bo ); + Aki0 = Bi ^((~Bo)& Bu ); + Ako0 = Bo ^((~Bu)& Ba ); + Aku0 = Bu ^((~Ba)& Be ); + + Bu = ROL32((Aka1^Da1), 9); + Ba = (Ake1^De0); + Be = ROL32((Aki1^Di1), 3); + Bi = ROL32((Ako1^Do0), 12); + Bo = ROL32((Aku1^Du1), 4); + Aka1 = Ba ^((~Be)& Bi ); + Ake1 = Be ^((~Bi)& Bo ); + Aki1 = Bi ^((~Bo)& Bu ); + Ako1 = Bo ^((~Bu)& Ba ); + Aku1 = Bu ^((~Ba)& Be ); + + Be = ROL32((Ama0^Da0), 18); + Bi = ROL32((Ame0^De0), 5); + Bo = ROL32((Ami0^Di1), 8); + Bu = ROL32((Amo0^Do0), 28); + Ba = ROL32((Amu0^Du1), 14); + Ama0 = Ba ^((~Be)& Bi ); + Ame0 = Be ^((~Bi)& Bo ); + Ami0 = Bi ^((~Bo)& Bu ); + Amo0 = Bo ^((~Bu)& Ba ); + Amu0 = Bu ^((~Ba)& Be ); + + Be = ROL32((Ama1^Da1), 18); + Bi = ROL32((Ame1^De1), 5); + Bo = ROL32((Ami1^Di0), 7); + Bu = ROL32((Amo1^Do1), 28); + Ba = ROL32((Amu1^Du0), 13); + Ama1 = Ba ^((~Be)& Bi ); + Ame1 = Be ^((~Bi)& Bo ); + Ami1 = Bi ^((~Bo)& Bu ); + Amo1 = Bo ^((~Bu)& Ba ); + Amu1 = Bu ^((~Ba)& Be ); + + Bo = ROL32((Asa0^Da1), 21); + Bu = ROL32((Ase0^De0), 1); + Ba = ROL32((Asi0^Di0), 31); + Be = ROL32((Aso0^Do1), 28); + Bi = ROL32((Asu0^Du1), 20); + Asa0 = Ba ^((~Be)& Bi ); + Ase0 = Be ^((~Bi)& Bo ); + Asi0 = Bi ^((~Bo)& Bu ); + Aso0 = Bo ^((~Bu)& Ba ); + Asu0 = Bu ^((~Ba)& Be ); + + Bo = ROL32((Asa1^Da0), 20); + Bu = ROL32((Ase1^De1), 1); + Ba = ROL32((Asi1^Di1), 31); + Be = ROL32((Aso1^Do0), 27); + Bi = ROL32((Asu1^Du0), 19); + Asa1 = Ba ^((~Be)& Bi ); + Ase1 = Be ^((~Bi)& Bo ); + Asi1 = Bi ^((~Bo)& Bu ); + Aso1 = Bo ^((~Bu)& Ba ); + Asu1 = Bu ^((~Ba)& Be ); + } + while ( *pRoundConstants != 0xFF ); + + #undef Aba0 + #undef Aba1 + #undef Abe0 + #undef Abe1 + #undef Abi0 + #undef Abi1 + #undef Abo0 + #undef Abo1 + #undef Abu0 + #undef Abu1 + #undef Aga0 + #undef Aga1 + #undef Age0 + #undef Age1 + #undef Agi0 + #undef Agi1 + #undef Ago0 + #undef Ago1 + #undef Agu0 + #undef Agu1 + #undef Aka0 + #undef Aka1 + #undef Ake0 + #undef Ake1 + #undef Aki0 + #undef Aki1 + #undef Ako0 + #undef Ako1 + #undef Aku0 + #undef Aku1 + #undef Ama0 + #undef Ama1 + #undef Ame0 + #undef Ame1 + #undef Ami0 + #undef Ami1 + #undef Amo0 + #undef Amo1 + #undef Amu0 + #undef Amu1 + #undef Asa0 + #undef Asa1 + #undef Ase0 + #undef Ase1 + #undef Asi0 + #undef Asi1 + #undef Aso0 + #undef Aso1 + #undef Asu0 + #undef Asu1 + } +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_Permute_12rounds(void *state) +{ + KeccakP1600_Permute_Nrounds(state, 12); +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_Permute_24rounds(void *state) +{ + KeccakP1600_Permute_Nrounds(state, 24); +} diff --git a/Modules/_sha3/kcp/KeccakP-1600-opt64-config.h b/Modules/_sha3/kcp/KeccakP-1600-opt64-config.h new file mode 100644 index 0000000000000000000000000000000000000000..9501c64b186aa94505419d3a180959e0c344c5a5 --- /dev/null +++ b/Modules/_sha3/kcp/KeccakP-1600-opt64-config.h @@ -0,0 +1,3 @@ +#define KeccakP1600_implementation_config "lane complementing, all rounds unrolled" +#define KeccakP1600_fullUnrolling +#define KeccakP1600_useLaneComplementing diff --git a/Modules/_sha3/kcp/KeccakP-1600-opt64.c b/Modules/_sha3/kcp/KeccakP-1600-opt64.c new file mode 100644 index 0000000000000000000000000000000000000000..c90010dd9256c14fe4a1619d91936773d8c7a7ed --- /dev/null +++ b/Modules/_sha3/kcp/KeccakP-1600-opt64.c @@ -0,0 +1,474 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#include +#include +/* #include "brg_endian.h" */ +#include "KeccakP-1600-opt64-config.h" + +#if NOT_PYTHON +typedef unsigned char UINT8; +/* typedef unsigned long long int UINT64; */ +#endif + +#if defined(KeccakP1600_useLaneComplementing) +#define UseBebigokimisa +#endif + +#if defined(_MSC_VER) +#define ROL64(a, offset) _rotl64(a, offset) +#elif defined(KeccakP1600_useSHLD) + #define ROL64(x,N) ({ \ + register UINT64 __out; \ + register UINT64 __in = x; \ + __asm__ ("shld %2,%0,%0" : "=r"(__out) : "0"(__in), "i"(N)); \ + __out; \ + }) +#else +#define ROL64(a, offset) ((((UINT64)a) << offset) ^ (((UINT64)a) >> (64-offset))) +#endif + +#include "KeccakP-1600-64.macros" +#ifdef KeccakP1600_fullUnrolling +#define FullUnrolling +#else +#define Unrolling KeccakP1600_unrolling +#endif +#include "KeccakP-1600-unrolling.macros" +#include "SnP-Relaned.h" + +static const UINT64 KeccakF1600RoundConstants[24] = { + 0x0000000000000001ULL, + 0x0000000000008082ULL, + 0x800000000000808aULL, + 0x8000000080008000ULL, + 0x000000000000808bULL, + 0x0000000080000001ULL, + 0x8000000080008081ULL, + 0x8000000000008009ULL, + 0x000000000000008aULL, + 0x0000000000000088ULL, + 0x0000000080008009ULL, + 0x000000008000000aULL, + 0x000000008000808bULL, + 0x800000000000008bULL, + 0x8000000000008089ULL, + 0x8000000000008003ULL, + 0x8000000000008002ULL, + 0x8000000000000080ULL, + 0x000000000000800aULL, + 0x800000008000000aULL, + 0x8000000080008081ULL, + 0x8000000000008080ULL, + 0x0000000080000001ULL, + 0x8000000080008008ULL }; + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_Initialize(void *state) +{ + memset(state, 0, 200); +#ifdef KeccakP1600_useLaneComplementing + ((UINT64*)state)[ 1] = ~(UINT64)0; + ((UINT64*)state)[ 2] = ~(UINT64)0; + ((UINT64*)state)[ 8] = ~(UINT64)0; + ((UINT64*)state)[12] = ~(UINT64)0; + ((UINT64*)state)[17] = ~(UINT64)0; + ((UINT64*)state)[20] = ~(UINT64)0; +#endif +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_AddBytesInLane(void *state, unsigned int lanePosition, const unsigned char *data, unsigned int offset, unsigned int length) +{ +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + UINT64 lane; + if (length == 0) + return; + if (length == 1) + lane = data[0]; + else { + lane = 0; + memcpy(&lane, data, length); + } + lane <<= offset*8; +#else + UINT64 lane = 0; + unsigned int i; + for(i=0; i>= offset*8; + for(i=0; i>= 8; + } +#endif +} + +/* ---------------------------------------------------------------- */ + +#if (PLATFORM_BYTE_ORDER != IS_LITTLE_ENDIAN) +void fromWordToBytes(UINT8 *bytes, const UINT64 word) +{ + unsigned int i; + + for(i=0; i<(64/8); i++) + bytes[i] = (word >> (8*i)) & 0xFF; +} +#endif + +void KeccakP1600_ExtractLanes(const void *state, unsigned char *data, unsigned int laneCount) +{ +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + memcpy(data, state, laneCount*8); +#else + unsigned int i; + + for(i=0; i 1) { + ((UINT64*)data)[ 1] = ~((UINT64*)data)[ 1]; + if (laneCount > 2) { + ((UINT64*)data)[ 2] = ~((UINT64*)data)[ 2]; + if (laneCount > 8) { + ((UINT64*)data)[ 8] = ~((UINT64*)data)[ 8]; + if (laneCount > 12) { + ((UINT64*)data)[12] = ~((UINT64*)data)[12]; + if (laneCount > 17) { + ((UINT64*)data)[17] = ~((UINT64*)data)[17]; + if (laneCount > 20) { + ((UINT64*)data)[20] = ~((UINT64*)data)[20]; + } + } + } + } + } + } +#endif +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_ExtractBytes(const void *state, unsigned char *data, unsigned int offset, unsigned int length) +{ + SnP_ExtractBytes(state, data, offset, length, KeccakP1600_ExtractLanes, KeccakP1600_ExtractBytesInLane, 8); +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_ExtractAndAddBytesInLane(const void *state, unsigned int lanePosition, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length) +{ + UINT64 lane = ((UINT64*)state)[lanePosition]; +#ifdef KeccakP1600_useLaneComplementing + if ((lanePosition == 1) || (lanePosition == 2) || (lanePosition == 8) || (lanePosition == 12) || (lanePosition == 17) || (lanePosition == 20)) + lane = ~lane; +#endif +#if (PLATFORM_BYTE_ORDER == IS_LITTLE_ENDIAN) + { + unsigned int i; + UINT64 lane1[1]; + lane1[0] = lane; + for(i=0; i>= offset*8; + for(i=0; i>= 8; + } +#endif +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_ExtractAndAddLanes(const void *state, const unsigned char *input, unsigned char *output, unsigned int laneCount) +{ + unsigned int i; +#if (PLATFORM_BYTE_ORDER != IS_LITTLE_ENDIAN) + unsigned char temp[8]; + unsigned int j; +#endif + + for(i=0; i 1) { + ((UINT64*)output)[ 1] = ~((UINT64*)output)[ 1]; + if (laneCount > 2) { + ((UINT64*)output)[ 2] = ~((UINT64*)output)[ 2]; + if (laneCount > 8) { + ((UINT64*)output)[ 8] = ~((UINT64*)output)[ 8]; + if (laneCount > 12) { + ((UINT64*)output)[12] = ~((UINT64*)output)[12]; + if (laneCount > 17) { + ((UINT64*)output)[17] = ~((UINT64*)output)[17]; + if (laneCount > 20) { + ((UINT64*)output)[20] = ~((UINT64*)output)[20]; + } + } + } + } + } + } +#endif +} + +/* ---------------------------------------------------------------- */ + +void KeccakP1600_ExtractAndAddBytes(const void *state, const unsigned char *input, unsigned char *output, unsigned int offset, unsigned int length) +{ + SnP_ExtractAndAddBytes(state, input, output, offset, length, KeccakP1600_ExtractAndAddLanes, KeccakP1600_ExtractAndAddBytesInLane, 8); +} + +/* ---------------------------------------------------------------- */ + +size_t KeccakF1600_FastLoop_Absorb(void *state, unsigned int laneCount, const unsigned char *data, size_t dataByteLen) +{ + size_t originalDataByteLen = dataByteLen; + declareABCDE + #ifndef KeccakP1600_fullUnrolling + unsigned int i; + #endif + UINT64 *stateAsLanes = (UINT64*)state; + UINT64 *inDataAsLanes = (UINT64*)data; + + copyFromState(A, stateAsLanes) + while(dataByteLen >= laneCount*8) { + addInput(A, inDataAsLanes, laneCount) + rounds24 + inDataAsLanes += laneCount; + dataByteLen -= laneCount*8; + } + copyToState(stateAsLanes, A) + return originalDataByteLen - dataByteLen; +} diff --git a/Modules/_sha3/kcp/KeccakP-1600-unrolling.macros b/Modules/_sha3/kcp/KeccakP-1600-unrolling.macros new file mode 100644 index 0000000000000000000000000000000000000000..405ce29724cedd67143e937e3e9bb3de17fbc7bd --- /dev/null +++ b/Modules/_sha3/kcp/KeccakP-1600-unrolling.macros @@ -0,0 +1,185 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#if (defined(FullUnrolling)) +#define rounds24 \ + prepareTheta \ + thetaRhoPiChiIotaPrepareTheta( 0, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 1, E, A) \ + thetaRhoPiChiIotaPrepareTheta( 2, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 3, E, A) \ + thetaRhoPiChiIotaPrepareTheta( 4, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 5, E, A) \ + thetaRhoPiChiIotaPrepareTheta( 6, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 7, E, A) \ + thetaRhoPiChiIotaPrepareTheta( 8, A, E) \ + thetaRhoPiChiIotaPrepareTheta( 9, E, A) \ + thetaRhoPiChiIotaPrepareTheta(10, A, E) \ + thetaRhoPiChiIotaPrepareTheta(11, E, A) \ + thetaRhoPiChiIotaPrepareTheta(12, A, E) \ + thetaRhoPiChiIotaPrepareTheta(13, E, A) \ + thetaRhoPiChiIotaPrepareTheta(14, A, E) \ + thetaRhoPiChiIotaPrepareTheta(15, E, A) \ + thetaRhoPiChiIotaPrepareTheta(16, A, E) \ + thetaRhoPiChiIotaPrepareTheta(17, E, A) \ + thetaRhoPiChiIotaPrepareTheta(18, A, E) \ + thetaRhoPiChiIotaPrepareTheta(19, E, A) \ + thetaRhoPiChiIotaPrepareTheta(20, A, E) \ + thetaRhoPiChiIotaPrepareTheta(21, E, A) \ + thetaRhoPiChiIotaPrepareTheta(22, A, E) \ + thetaRhoPiChiIota(23, E, A) \ + +#define rounds12 \ + prepareTheta \ + thetaRhoPiChiIotaPrepareTheta(12, A, E) \ + thetaRhoPiChiIotaPrepareTheta(13, E, A) \ + thetaRhoPiChiIotaPrepareTheta(14, A, E) \ + thetaRhoPiChiIotaPrepareTheta(15, E, A) \ + thetaRhoPiChiIotaPrepareTheta(16, A, E) \ + thetaRhoPiChiIotaPrepareTheta(17, E, A) \ + thetaRhoPiChiIotaPrepareTheta(18, A, E) \ + thetaRhoPiChiIotaPrepareTheta(19, E, A) \ + thetaRhoPiChiIotaPrepareTheta(20, A, E) \ + thetaRhoPiChiIotaPrepareTheta(21, E, A) \ + thetaRhoPiChiIotaPrepareTheta(22, A, E) \ + thetaRhoPiChiIota(23, E, A) \ + +#elif (Unrolling == 12) +#define rounds24 \ + prepareTheta \ + for(i=0; i<24; i+=12) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+ 2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 3, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+ 4, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 5, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+ 6, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 7, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+ 8, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+ 9, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+10, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+11, E, A) \ + } \ + +#define rounds12 \ + prepareTheta \ + thetaRhoPiChiIotaPrepareTheta(12, A, E) \ + thetaRhoPiChiIotaPrepareTheta(13, E, A) \ + thetaRhoPiChiIotaPrepareTheta(14, A, E) \ + thetaRhoPiChiIotaPrepareTheta(15, E, A) \ + thetaRhoPiChiIotaPrepareTheta(16, A, E) \ + thetaRhoPiChiIotaPrepareTheta(17, E, A) \ + thetaRhoPiChiIotaPrepareTheta(18, A, E) \ + thetaRhoPiChiIotaPrepareTheta(19, E, A) \ + thetaRhoPiChiIotaPrepareTheta(20, A, E) \ + thetaRhoPiChiIotaPrepareTheta(21, E, A) \ + thetaRhoPiChiIotaPrepareTheta(22, A, E) \ + thetaRhoPiChiIota(23, E, A) \ + +#elif (Unrolling == 6) +#define rounds24 \ + prepareTheta \ + for(i=0; i<24; i+=6) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+4, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+5, E, A) \ + } \ + +#define rounds12 \ + prepareTheta \ + for(i=12; i<24; i+=6) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+4, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+5, E, A) \ + } \ + +#elif (Unrolling == 4) +#define rounds24 \ + prepareTheta \ + for(i=0; i<24; i+=4) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ + } \ + +#define rounds12 \ + prepareTheta \ + for(i=12; i<24; i+=4) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+3, E, A) \ + } \ + +#elif (Unrolling == 3) +#define rounds24 \ + prepareTheta \ + for(i=0; i<24; i+=3) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + copyStateVariables(A, E) \ + } \ + +#define rounds12 \ + prepareTheta \ + for(i=12; i<24; i+=3) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + thetaRhoPiChiIotaPrepareTheta(i+2, A, E) \ + copyStateVariables(A, E) \ + } \ + +#elif (Unrolling == 2) +#define rounds24 \ + prepareTheta \ + for(i=0; i<24; i+=2) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + } \ + +#define rounds12 \ + prepareTheta \ + for(i=12; i<24; i+=2) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + thetaRhoPiChiIotaPrepareTheta(i+1, E, A) \ + } \ + +#elif (Unrolling == 1) +#define rounds24 \ + prepareTheta \ + for(i=0; i<24; i++) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + copyStateVariables(A, E) \ + } \ + +#define rounds12 \ + prepareTheta \ + for(i=12; i<24; i++) { \ + thetaRhoPiChiIotaPrepareTheta(i , A, E) \ + copyStateVariables(A, E) \ + } \ + +#else +#error "Unrolling is not correctly specified!" +#endif diff --git a/Modules/_sha3/kcp/KeccakSponge.c b/Modules/_sha3/kcp/KeccakSponge.c new file mode 100644 index 0000000000000000000000000000000000000000..afdb73172f3478f8044a3bb9a52b51af4bd28943 --- /dev/null +++ b/Modules/_sha3/kcp/KeccakSponge.c @@ -0,0 +1,92 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#include "KeccakSponge.h" + +#ifdef KeccakReference + #include "displayIntermediateValues.h" +#endif + +#ifndef KeccakP200_excluded + #include "KeccakP-200-SnP.h" + + #define prefix KeccakWidth200 + #define SnP KeccakP200 + #define SnP_width 200 + #define SnP_Permute KeccakP200_Permute_18rounds + #if defined(KeccakF200_FastLoop_supported) + #define SnP_FastLoop_Absorb KeccakF200_FastLoop_Absorb + #endif + #include "KeccakSponge.inc" + #undef prefix + #undef SnP + #undef SnP_width + #undef SnP_Permute + #undef SnP_FastLoop_Absorb +#endif + +#ifndef KeccakP400_excluded + #include "KeccakP-400-SnP.h" + + #define prefix KeccakWidth400 + #define SnP KeccakP400 + #define SnP_width 400 + #define SnP_Permute KeccakP400_Permute_20rounds + #if defined(KeccakF400_FastLoop_supported) + #define SnP_FastLoop_Absorb KeccakF400_FastLoop_Absorb + #endif + #include "KeccakSponge.inc" + #undef prefix + #undef SnP + #undef SnP_width + #undef SnP_Permute + #undef SnP_FastLoop_Absorb +#endif + +#ifndef KeccakP800_excluded + #include "KeccakP-800-SnP.h" + + #define prefix KeccakWidth800 + #define SnP KeccakP800 + #define SnP_width 800 + #define SnP_Permute KeccakP800_Permute_22rounds + #if defined(KeccakF800_FastLoop_supported) + #define SnP_FastLoop_Absorb KeccakF800_FastLoop_Absorb + #endif + #include "KeccakSponge.inc" + #undef prefix + #undef SnP + #undef SnP_width + #undef SnP_Permute + #undef SnP_FastLoop_Absorb +#endif + +#ifndef KeccakP1600_excluded + #include "KeccakP-1600-SnP.h" + + #define prefix KeccakWidth1600 + #define SnP KeccakP1600 + #define SnP_width 1600 + #define SnP_Permute KeccakP1600_Permute_24rounds + #if defined(KeccakF1600_FastLoop_supported) + #define SnP_FastLoop_Absorb KeccakF1600_FastLoop_Absorb + #endif + #include "KeccakSponge.inc" + #undef prefix + #undef SnP + #undef SnP_width + #undef SnP_Permute + #undef SnP_FastLoop_Absorb +#endif diff --git a/Modules/_sha3/kcp/KeccakSponge.h b/Modules/_sha3/kcp/KeccakSponge.h new file mode 100644 index 0000000000000000000000000000000000000000..0f4badcac059e9402671ce64bc45287e3a31f649 --- /dev/null +++ b/Modules/_sha3/kcp/KeccakSponge.h @@ -0,0 +1,172 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifndef _KeccakSponge_h_ +#define _KeccakSponge_h_ + +/** General information + * + * The following type and functions are not actually implemented. Their + * documentation is generic, with the prefix Prefix replaced by + * - KeccakWidth200 for a sponge function based on Keccak-f[200] + * - KeccakWidth400 for a sponge function based on Keccak-f[400] + * - KeccakWidth800 for a sponge function based on Keccak-f[800] + * - KeccakWidth1600 for a sponge function based on Keccak-f[1600] + * + * In all these functions, the rate and capacity must sum to the width of the + * chosen permutation. For instance, to use the sponge function + * Keccak[r=1344, c=256], one must use KeccakWidth1600_Sponge() or a combination + * of KeccakWidth1600_SpongeInitialize(), KeccakWidth1600_SpongeAbsorb(), + * KeccakWidth1600_SpongeAbsorbLastFewBits() and + * KeccakWidth1600_SpongeSqueeze(). + * + * The Prefix_SpongeInstance contains the sponge instance attributes for use + * with the Prefix_Sponge* functions. + * It gathers the state processed by the permutation as well as the rate, + * the position of input/output bytes in the state and the phase + * (absorbing or squeezing). + */ + +#ifdef DontReallyInclude_DocumentationOnly +/** Function to evaluate the sponge function Keccak[r, c] in a single call. + * @param rate The value of the rate r. + * @param capacity The value of the capacity c. + * @param input Pointer to the input message (before the suffix). + * @param inputByteLen The length of the input message in bytes. + * @param suffix Byte containing from 0 to 7 suffix bits + * that must be absorbed after @a input. + * These n bits must be in the least significant bit positions. + * These bits must be delimited with a bit 1 at position n + * (counting from 0=LSB to 7=MSB) and followed by bits 0 + * from position n+1 to position 7. + * Some examples: + * - If no bits are to be absorbed, then @a suffix must be 0x01. + * - If the 2-bit sequence 0,0 is to be absorbed, @a suffix must be 0x04. + * - If the 5-bit sequence 0,1,0,0,1 is to be absorbed, @a suffix must be 0x32. + * - If the 7-bit sequence 1,1,0,1,0,0,0 is to be absorbed, @a suffix must be 0x8B. + * . + * @param output Pointer to the output buffer. + * @param outputByteLen The desired number of output bytes. + * @pre One must have r+c equal to the supported width of this implementation + * and the rate a multiple of 8 bits (one byte) in this implementation. + * @pre @a suffix ≠ 0x00 + * @return Zero if successful, 1 otherwise. + */ +int Prefix_Sponge(unsigned int rate, unsigned int capacity, const unsigned char *input, size_t inputByteLen, unsigned char suffix, unsigned char *output, size_t outputByteLen); + +/** + * Function to initialize the state of the Keccak[r, c] sponge function. + * The phase of the sponge function is set to absorbing. + * @param spongeInstance Pointer to the sponge instance to be initialized. + * @param rate The value of the rate r. + * @param capacity The value of the capacity c. + * @pre One must have r+c equal to the supported width of this implementation + * and the rate a multiple of 8 bits (one byte) in this implementation. + * @return Zero if successful, 1 otherwise. + */ +int Prefix_SpongeInitialize(Prefix_SpongeInstance *spongeInstance, unsigned int rate, unsigned int capacity); + +/** + * Function to give input data bytes for the sponge function to absorb. + * @param spongeInstance Pointer to the sponge instance initialized by Prefix_SpongeInitialize(). + * @param data Pointer to the input data. + * @param dataByteLen The number of input bytes provided in the input data. + * @pre The sponge function must be in the absorbing phase, + * i.e., Prefix_SpongeSqueeze() or Prefix_SpongeAbsorbLastFewBits() + * must not have been called before. + * @return Zero if successful, 1 otherwise. + */ +int Prefix_SpongeAbsorb(Prefix_SpongeInstance *spongeInstance, const unsigned char *data, size_t dataByteLen); + +/** + * Function to give input data bits for the sponge function to absorb + * and then to switch to the squeezing phase. + * @param spongeInstance Pointer to the sponge instance initialized by Prefix_SpongeInitialize(). + * @param delimitedData Byte containing from 0 to 7 trailing bits + * that must be absorbed. + * These n bits must be in the least significant bit positions. + * These bits must be delimited with a bit 1 at position n + * (counting from 0=LSB to 7=MSB) and followed by bits 0 + * from position n+1 to position 7. + * Some examples: + * - If no bits are to be absorbed, then @a delimitedData must be 0x01. + * - If the 2-bit sequence 0,0 is to be absorbed, @a delimitedData must be 0x04. + * - If the 5-bit sequence 0,1,0,0,1 is to be absorbed, @a delimitedData must be 0x32. + * - If the 7-bit sequence 1,1,0,1,0,0,0 is to be absorbed, @a delimitedData must be 0x8B. + * . + * @pre The sponge function must be in the absorbing phase, + * i.e., Prefix_SpongeSqueeze() or Prefix_SpongeAbsorbLastFewBits() + * must not have been called before. + * @pre @a delimitedData ≠ 0x00 + * @return Zero if successful, 1 otherwise. + */ +int Prefix_SpongeAbsorbLastFewBits(Prefix_SpongeInstance *spongeInstance, unsigned char delimitedData); + +/** + * Function to squeeze output data from the sponge function. + * If the sponge function was in the absorbing phase, this function + * switches it to the squeezing phase + * as if Prefix_SpongeAbsorbLastFewBits(spongeInstance, 0x01) was called. + * @param spongeInstance Pointer to the sponge instance initialized by Prefix_SpongeInitialize(). + * @param data Pointer to the buffer where to store the output data. + * @param dataByteLen The number of output bytes desired. + * @return Zero if successful, 1 otherwise. + */ +int Prefix_SpongeSqueeze(Prefix_SpongeInstance *spongeInstance, unsigned char *data, size_t dataByteLen); +#endif + +#include +#include "align.h" + +#define KCP_DeclareSpongeStructure(prefix, size, alignment) \ + ALIGN(alignment) typedef struct prefix##_SpongeInstanceStruct { \ + unsigned char state[size]; \ + unsigned int rate; \ + unsigned int byteIOIndex; \ + int squeezing; \ + } prefix##_SpongeInstance; + +#define KCP_DeclareSpongeFunctions(prefix) \ + int prefix##_Sponge(unsigned int rate, unsigned int capacity, const unsigned char *input, size_t inputByteLen, unsigned char suffix, unsigned char *output, size_t outputByteLen); \ + int prefix##_SpongeInitialize(prefix##_SpongeInstance *spongeInstance, unsigned int rate, unsigned int capacity); \ + int prefix##_SpongeAbsorb(prefix##_SpongeInstance *spongeInstance, const unsigned char *data, size_t dataByteLen); \ + int prefix##_SpongeAbsorbLastFewBits(prefix##_SpongeInstance *spongeInstance, unsigned char delimitedData); \ + int prefix##_SpongeSqueeze(prefix##_SpongeInstance *spongeInstance, unsigned char *data, size_t dataByteLen); + +#ifndef KeccakP200_excluded + #include "KeccakP-200-SnP.h" + KCP_DeclareSpongeStructure(KeccakWidth200, KeccakP200_stateSizeInBytes, KeccakP200_stateAlignment) + KCP_DeclareSpongeFunctions(KeccakWidth200) +#endif + +#ifndef KeccakP400_excluded + #include "KeccakP-400-SnP.h" + KCP_DeclareSpongeStructure(KeccakWidth400, KeccakP400_stateSizeInBytes, KeccakP400_stateAlignment) + KCP_DeclareSpongeFunctions(KeccakWidth400) +#endif + +#ifndef KeccakP800_excluded + #include "KeccakP-800-SnP.h" + KCP_DeclareSpongeStructure(KeccakWidth800, KeccakP800_stateSizeInBytes, KeccakP800_stateAlignment) + KCP_DeclareSpongeFunctions(KeccakWidth800) +#endif + +#ifndef KeccakP1600_excluded + #include "KeccakP-1600-SnP.h" + KCP_DeclareSpongeStructure(KeccakWidth1600, KeccakP1600_stateSizeInBytes, KeccakP1600_stateAlignment) + KCP_DeclareSpongeFunctions(KeccakWidth1600) +#endif + +#endif diff --git a/Modules/_sha3/kcp/KeccakSponge.inc b/Modules/_sha3/kcp/KeccakSponge.inc new file mode 100644 index 0000000000000000000000000000000000000000..e10739deafa836d571fb46fc4eed98f75b1dc00e --- /dev/null +++ b/Modules/_sha3/kcp/KeccakSponge.inc @@ -0,0 +1,332 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#define JOIN0(a, b) a ## b +#define JOIN(a, b) JOIN0(a, b) + +#define Sponge JOIN(prefix, _Sponge) +#define SpongeInstance JOIN(prefix, _SpongeInstance) +#define SpongeInitialize JOIN(prefix, _SpongeInitialize) +#define SpongeAbsorb JOIN(prefix, _SpongeAbsorb) +#define SpongeAbsorbLastFewBits JOIN(prefix, _SpongeAbsorbLastFewBits) +#define SpongeSqueeze JOIN(prefix, _SpongeSqueeze) + +#define SnP_stateSizeInBytes JOIN(SnP, _stateSizeInBytes) +#define SnP_stateAlignment JOIN(SnP, _stateAlignment) +#define SnP_StaticInitialize JOIN(SnP, _StaticInitialize) +#define SnP_Initialize JOIN(SnP, _Initialize) +#define SnP_AddByte JOIN(SnP, _AddByte) +#define SnP_AddBytes JOIN(SnP, _AddBytes) +#define SnP_ExtractBytes JOIN(SnP, _ExtractBytes) + +int Sponge(unsigned int rate, unsigned int capacity, const unsigned char *input, size_t inputByteLen, unsigned char suffix, unsigned char *output, size_t outputByteLen) +{ + ALIGN(SnP_stateAlignment) unsigned char state[SnP_stateSizeInBytes]; + unsigned int partialBlock; + const unsigned char *curInput = input; + unsigned char *curOutput = output; + unsigned int rateInBytes = rate/8; + + if (rate+capacity != SnP_width) + return 1; + if ((rate <= 0) || (rate > SnP_width) || ((rate % 8) != 0)) + return 1; + if (suffix == 0) + return 1; + + /* Initialize the state */ + + SnP_StaticInitialize(); + SnP_Initialize(state); + + /* First, absorb whole blocks */ + +#ifdef SnP_FastLoop_Absorb + if (((rateInBytes % (SnP_width/200)) == 0) && (inputByteLen >= rateInBytes)) { + /* fast lane: whole lane rate */ + + size_t j; + j = SnP_FastLoop_Absorb(state, rateInBytes/(SnP_width/200), curInput, inputByteLen); + curInput += j; + inputByteLen -= j; + } +#endif + while(inputByteLen >= (size_t)rateInBytes) { + #ifdef KeccakReference + displayBytes(1, "Block to be absorbed", curInput, rateInBytes); + #endif + SnP_AddBytes(state, curInput, 0, rateInBytes); + SnP_Permute(state); + curInput += rateInBytes; + inputByteLen -= rateInBytes; + } + + /* Then, absorb what remains */ + + partialBlock = (unsigned int)inputByteLen; + #ifdef KeccakReference + displayBytes(1, "Block to be absorbed (part)", curInput, partialBlock); + #endif + SnP_AddBytes(state, curInput, 0, partialBlock); + + /* Finally, absorb the suffix */ + + #ifdef KeccakReference + { + unsigned char delimitedData1[1]; + delimitedData1[0] = suffix; + displayBytes(1, "Block to be absorbed (last few bits + first bit of padding)", delimitedData1, 1); + } + #endif + /* Last few bits, whose delimiter coincides with first bit of padding */ + + SnP_AddByte(state, suffix, partialBlock); + /* If the first bit of padding is at position rate-1, we need a whole new block for the second bit of padding */ + + if ((suffix >= 0x80) && (partialBlock == (rateInBytes-1))) + SnP_Permute(state); + /* Second bit of padding */ + + SnP_AddByte(state, 0x80, rateInBytes-1); + #ifdef KeccakReference + { + unsigned char block[SnP_width/8]; + memset(block, 0, SnP_width/8); + block[rateInBytes-1] = 0x80; + displayBytes(1, "Second bit of padding", block, rateInBytes); + } + #endif + SnP_Permute(state); + #ifdef KeccakReference + displayText(1, "--- Switching to squeezing phase ---"); + #endif + + /* First, output whole blocks */ + + while(outputByteLen > (size_t)rateInBytes) { + SnP_ExtractBytes(state, curOutput, 0, rateInBytes); + SnP_Permute(state); + #ifdef KeccakReference + displayBytes(1, "Squeezed block", curOutput, rateInBytes); + #endif + curOutput += rateInBytes; + outputByteLen -= rateInBytes; + } + + /* Finally, output what remains */ + + partialBlock = (unsigned int)outputByteLen; + SnP_ExtractBytes(state, curOutput, 0, partialBlock); + #ifdef KeccakReference + displayBytes(1, "Squeezed block (part)", curOutput, partialBlock); + #endif + + return 0; +} + +/* ---------------------------------------------------------------- */ +/* ---------------------------------------------------------------- */ +/* ---------------------------------------------------------------- */ + +int SpongeInitialize(SpongeInstance *instance, unsigned int rate, unsigned int capacity) +{ + if (rate+capacity != SnP_width) + return 1; + if ((rate <= 0) || (rate > SnP_width) || ((rate % 8) != 0)) + return 1; + SnP_StaticInitialize(); + SnP_Initialize(instance->state); + instance->rate = rate; + instance->byteIOIndex = 0; + instance->squeezing = 0; + + return 0; +} + +/* ---------------------------------------------------------------- */ + +int SpongeAbsorb(SpongeInstance *instance, const unsigned char *data, size_t dataByteLen) +{ + size_t i, j; + unsigned int partialBlock; + const unsigned char *curData; + unsigned int rateInBytes = instance->rate/8; + + if (instance->squeezing) + return 1; /* Too late for additional input */ + + + i = 0; + curData = data; + while(i < dataByteLen) { + if ((instance->byteIOIndex == 0) && (dataByteLen >= (i + rateInBytes))) { +#ifdef SnP_FastLoop_Absorb + /* processing full blocks first */ + + if ((rateInBytes % (SnP_width/200)) == 0) { + /* fast lane: whole lane rate */ + + j = SnP_FastLoop_Absorb(instance->state, rateInBytes/(SnP_width/200), curData, dataByteLen - i); + i += j; + curData += j; + } + else { +#endif + for(j=dataByteLen-i; j>=rateInBytes; j-=rateInBytes) { + #ifdef KeccakReference + displayBytes(1, "Block to be absorbed", curData, rateInBytes); + #endif + SnP_AddBytes(instance->state, curData, 0, rateInBytes); + SnP_Permute(instance->state); + curData+=rateInBytes; + } + i = dataByteLen - j; +#ifdef SnP_FastLoop_Absorb + } +#endif + } + else { + /* normal lane: using the message queue */ + + partialBlock = (unsigned int)(dataByteLen - i); + if (partialBlock+instance->byteIOIndex > rateInBytes) + partialBlock = rateInBytes-instance->byteIOIndex; + #ifdef KeccakReference + displayBytes(1, "Block to be absorbed (part)", curData, partialBlock); + #endif + i += partialBlock; + + SnP_AddBytes(instance->state, curData, instance->byteIOIndex, partialBlock); + curData += partialBlock; + instance->byteIOIndex += partialBlock; + if (instance->byteIOIndex == rateInBytes) { + SnP_Permute(instance->state); + instance->byteIOIndex = 0; + } + } + } + return 0; +} + +/* ---------------------------------------------------------------- */ + +int SpongeAbsorbLastFewBits(SpongeInstance *instance, unsigned char delimitedData) +{ + unsigned int rateInBytes = instance->rate/8; + + if (delimitedData == 0) + return 1; + if (instance->squeezing) + return 1; /* Too late for additional input */ + + + #ifdef KeccakReference + { + unsigned char delimitedData1[1]; + delimitedData1[0] = delimitedData; + displayBytes(1, "Block to be absorbed (last few bits + first bit of padding)", delimitedData1, 1); + } + #endif + /* Last few bits, whose delimiter coincides with first bit of padding */ + + SnP_AddByte(instance->state, delimitedData, instance->byteIOIndex); + /* If the first bit of padding is at position rate-1, we need a whole new block for the second bit of padding */ + + if ((delimitedData >= 0x80) && (instance->byteIOIndex == (rateInBytes-1))) + SnP_Permute(instance->state); + /* Second bit of padding */ + + SnP_AddByte(instance->state, 0x80, rateInBytes-1); + #ifdef KeccakReference + { + unsigned char block[SnP_width/8]; + memset(block, 0, SnP_width/8); + block[rateInBytes-1] = 0x80; + displayBytes(1, "Second bit of padding", block, rateInBytes); + } + #endif + SnP_Permute(instance->state); + instance->byteIOIndex = 0; + instance->squeezing = 1; + #ifdef KeccakReference + displayText(1, "--- Switching to squeezing phase ---"); + #endif + return 0; +} + +/* ---------------------------------------------------------------- */ + +int SpongeSqueeze(SpongeInstance *instance, unsigned char *data, size_t dataByteLen) +{ + size_t i, j; + unsigned int partialBlock; + unsigned int rateInBytes = instance->rate/8; + unsigned char *curData; + + if (!instance->squeezing) + SpongeAbsorbLastFewBits(instance, 0x01); + + i = 0; + curData = data; + while(i < dataByteLen) { + if ((instance->byteIOIndex == rateInBytes) && (dataByteLen >= (i + rateInBytes))) { + for(j=dataByteLen-i; j>=rateInBytes; j-=rateInBytes) { + SnP_Permute(instance->state); + SnP_ExtractBytes(instance->state, curData, 0, rateInBytes); + #ifdef KeccakReference + displayBytes(1, "Squeezed block", curData, rateInBytes); + #endif + curData+=rateInBytes; + } + i = dataByteLen - j; + } + else { + /* normal lane: using the message queue */ + + if (instance->byteIOIndex == rateInBytes) { + SnP_Permute(instance->state); + instance->byteIOIndex = 0; + } + partialBlock = (unsigned int)(dataByteLen - i); + if (partialBlock+instance->byteIOIndex > rateInBytes) + partialBlock = rateInBytes-instance->byteIOIndex; + i += partialBlock; + + SnP_ExtractBytes(instance->state, curData, instance->byteIOIndex, partialBlock); + #ifdef KeccakReference + displayBytes(1, "Squeezed block (part)", curData, partialBlock); + #endif + curData += partialBlock; + instance->byteIOIndex += partialBlock; + } + } + return 0; +} + +/* ---------------------------------------------------------------- */ + +#undef Sponge +#undef SpongeInstance +#undef SpongeInitialize +#undef SpongeAbsorb +#undef SpongeAbsorbLastFewBits +#undef SpongeSqueeze +#undef SnP_stateSizeInBytes +#undef SnP_stateAlignment +#undef SnP_StaticInitialize +#undef SnP_Initialize +#undef SnP_AddByte +#undef SnP_AddBytes +#undef SnP_ExtractBytes diff --git a/Modules/_sha3/kcp/PlSnP-Fallback.inc b/Modules/_sha3/kcp/PlSnP-Fallback.inc new file mode 100644 index 0000000000000000000000000000000000000000..3a9119ab4b6aa894fb0d12ac07523fd83ae3b463 --- /dev/null +++ b/Modules/_sha3/kcp/PlSnP-Fallback.inc @@ -0,0 +1,257 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +/* expect PlSnP_baseParallelism, PlSnP_targetParallelism */ + +/* expect SnP_stateSizeInBytes, SnP_stateAlignment */ + +/* expect prefix */ + +/* expect SnP_* */ + + +#define JOIN0(a, b) a ## b +#define JOIN(a, b) JOIN0(a, b) + +#define PlSnP_StaticInitialize JOIN(prefix, _StaticInitialize) +#define PlSnP_InitializeAll JOIN(prefix, _InitializeAll) +#define PlSnP_AddByte JOIN(prefix, _AddByte) +#define PlSnP_AddBytes JOIN(prefix, _AddBytes) +#define PlSnP_AddLanesAll JOIN(prefix, _AddLanesAll) +#define PlSnP_OverwriteBytes JOIN(prefix, _OverwriteBytes) +#define PlSnP_OverwriteLanesAll JOIN(prefix, _OverwriteLanesAll) +#define PlSnP_OverwriteWithZeroes JOIN(prefix, _OverwriteWithZeroes) +#define PlSnP_ExtractBytes JOIN(prefix, _ExtractBytes) +#define PlSnP_ExtractLanesAll JOIN(prefix, _ExtractLanesAll) +#define PlSnP_ExtractAndAddBytes JOIN(prefix, _ExtractAndAddBytes) +#define PlSnP_ExtractAndAddLanesAll JOIN(prefix, _ExtractAndAddLanesAll) + +#if (PlSnP_baseParallelism == 1) + #define SnP_stateSizeInBytes JOIN(SnP, _stateSizeInBytes) + #define SnP_stateAlignment JOIN(SnP, _stateAlignment) +#else + #define SnP_stateSizeInBytes JOIN(SnP, _statesSizeInBytes) + #define SnP_stateAlignment JOIN(SnP, _statesAlignment) +#endif +#define PlSnP_factor ((PlSnP_targetParallelism)/(PlSnP_baseParallelism)) +#define SnP_stateOffset (((SnP_stateSizeInBytes+(SnP_stateAlignment-1))/SnP_stateAlignment)*SnP_stateAlignment) +#define stateWithIndex(i) ((unsigned char *)states+((i)*SnP_stateOffset)) + +#define SnP_StaticInitialize JOIN(SnP, _StaticInitialize) +#define SnP_Initialize JOIN(SnP, _Initialize) +#define SnP_InitializeAll JOIN(SnP, _InitializeAll) +#define SnP_AddByte JOIN(SnP, _AddByte) +#define SnP_AddBytes JOIN(SnP, _AddBytes) +#define SnP_AddLanesAll JOIN(SnP, _AddLanesAll) +#define SnP_OverwriteBytes JOIN(SnP, _OverwriteBytes) +#define SnP_OverwriteLanesAll JOIN(SnP, _OverwriteLanesAll) +#define SnP_OverwriteWithZeroes JOIN(SnP, _OverwriteWithZeroes) +#define SnP_ExtractBytes JOIN(SnP, _ExtractBytes) +#define SnP_ExtractLanesAll JOIN(SnP, _ExtractLanesAll) +#define SnP_ExtractAndAddBytes JOIN(SnP, _ExtractAndAddBytes) +#define SnP_ExtractAndAddLanesAll JOIN(SnP, _ExtractAndAddLanesAll) + +void PlSnP_StaticInitialize( void ) +{ + SnP_StaticInitialize(); +} + +void PlSnP_InitializeAll(void *states) +{ + unsigned int i; + + for(i=0; i 0) { \ + unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \ + if (_bytesInLane > _sizeLeft) \ + _bytesInLane = _sizeLeft; \ + SnP_AddBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \ + _sizeLeft -= _bytesInLane; \ + _lanePosition++; \ + _offsetInLane = 0; \ + _curData += _bytesInLane; \ + } \ + } \ + } + +#define SnP_OverwriteBytes(state, data, offset, length, SnP_OverwriteLanes, SnP_OverwriteBytesInLane, SnP_laneLengthInBytes) \ + { \ + if ((offset) == 0) { \ + SnP_OverwriteLanes(state, data, (length)/SnP_laneLengthInBytes); \ + SnP_OverwriteBytesInLane(state, \ + (length)/SnP_laneLengthInBytes, \ + (data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \ + 0, \ + (length)%SnP_laneLengthInBytes); \ + } \ + else { \ + unsigned int _sizeLeft = (length); \ + unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \ + unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \ + const unsigned char *_curData = (data); \ + while(_sizeLeft > 0) { \ + unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \ + if (_bytesInLane > _sizeLeft) \ + _bytesInLane = _sizeLeft; \ + SnP_OverwriteBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \ + _sizeLeft -= _bytesInLane; \ + _lanePosition++; \ + _offsetInLane = 0; \ + _curData += _bytesInLane; \ + } \ + } \ + } + +#define SnP_ExtractBytes(state, data, offset, length, SnP_ExtractLanes, SnP_ExtractBytesInLane, SnP_laneLengthInBytes) \ + { \ + if ((offset) == 0) { \ + SnP_ExtractLanes(state, data, (length)/SnP_laneLengthInBytes); \ + SnP_ExtractBytesInLane(state, \ + (length)/SnP_laneLengthInBytes, \ + (data)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \ + 0, \ + (length)%SnP_laneLengthInBytes); \ + } \ + else { \ + unsigned int _sizeLeft = (length); \ + unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \ + unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \ + unsigned char *_curData = (data); \ + while(_sizeLeft > 0) { \ + unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \ + if (_bytesInLane > _sizeLeft) \ + _bytesInLane = _sizeLeft; \ + SnP_ExtractBytesInLane(state, _lanePosition, _curData, _offsetInLane, _bytesInLane); \ + _sizeLeft -= _bytesInLane; \ + _lanePosition++; \ + _offsetInLane = 0; \ + _curData += _bytesInLane; \ + } \ + } \ + } + +#define SnP_ExtractAndAddBytes(state, input, output, offset, length, SnP_ExtractAndAddLanes, SnP_ExtractAndAddBytesInLane, SnP_laneLengthInBytes) \ + { \ + if ((offset) == 0) { \ + SnP_ExtractAndAddLanes(state, input, output, (length)/SnP_laneLengthInBytes); \ + SnP_ExtractAndAddBytesInLane(state, \ + (length)/SnP_laneLengthInBytes, \ + (input)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \ + (output)+((length)/SnP_laneLengthInBytes)*SnP_laneLengthInBytes, \ + 0, \ + (length)%SnP_laneLengthInBytes); \ + } \ + else { \ + unsigned int _sizeLeft = (length); \ + unsigned int _lanePosition = (offset)/SnP_laneLengthInBytes; \ + unsigned int _offsetInLane = (offset)%SnP_laneLengthInBytes; \ + const unsigned char *_curInput = (input); \ + unsigned char *_curOutput = (output); \ + while(_sizeLeft > 0) { \ + unsigned int _bytesInLane = SnP_laneLengthInBytes - _offsetInLane; \ + if (_bytesInLane > _sizeLeft) \ + _bytesInLane = _sizeLeft; \ + SnP_ExtractAndAddBytesInLane(state, _lanePosition, _curInput, _curOutput, _offsetInLane, _bytesInLane); \ + _sizeLeft -= _bytesInLane; \ + _lanePosition++; \ + _offsetInLane = 0; \ + _curInput += _bytesInLane; \ + _curOutput += _bytesInLane; \ + } \ + } \ + } + +#endif diff --git a/Modules/_sha3/kcp/align.h b/Modules/_sha3/kcp/align.h new file mode 100644 index 0000000000000000000000000000000000000000..6650fe8c3cf0ef70bee16d8c28ebdd8e8a656c5e --- /dev/null +++ b/Modules/_sha3/kcp/align.h @@ -0,0 +1,35 @@ +/* +Implementation by the Keccak, Keyak and Ketje Teams, namely, Guido Bertoni, +Joan Daemen, Michaël Peeters, Gilles Van Assche and Ronny Van Keer, hereby +denoted as "the implementer". + +For more information, feedback or questions, please refer to our websites: +http://keccak.noekeon.org/ +http://keyak.noekeon.org/ +http://ketje.noekeon.org/ + +To the extent possible under law, the implementer has waived all copyright +and related or neighboring rights to the source code in this file. +http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +#ifndef _align_h_ +#define _align_h_ + +/* on Mac OS-X and possibly others, ALIGN(x) is defined in param.h, and -Werror chokes on the redef. */ + +#ifdef ALIGN +#undef ALIGN +#endif + +#if defined(__GNUC__) +#define ALIGN(x) __attribute__ ((aligned(x))) +#elif defined(_MSC_VER) +#define ALIGN(x) __declspec(align(x)) +#elif defined(__ARMCC_VERSION) +#define ALIGN(x) __align(x) +#else +#define ALIGN(x) +#endif + +#endif diff --git a/Modules/_sha3/sha3module.c b/Modules/_sha3/sha3module.c new file mode 100644 index 0000000000000000000000000000000000000000..67c69f2c85aff9d2b03b1e6d7b2cf9d7ebf250ac --- /dev/null +++ b/Modules/_sha3/sha3module.c @@ -0,0 +1,749 @@ +/* SHA3 module + * + * This module provides an interface to the SHA3 algorithm + * + * See below for information about the original code this module was + * based upon. Additional work performed by: + * + * Andrew Kuchling (amk@amk.ca) + * Greg Stein (gstein@lyra.org) + * Trevor Perrin (trevp@trevp.net) + * Gregory P. Smith (greg@krypto.org) + * + * Copyright (C) 2012-2016 Christian Heimes (christian@python.org) + * Licensed to PSF under a Contributor Agreement. + * + */ + +#include "Python.h" +#include "pystrhex.h" +#include "../hashlib.h" + +/* ************************************************************************** + * SHA-3 (Keccak) and SHAKE + * + * The code is based on KeccakCodePackage from 2016-04-23 + * commit 647f93079afc4ada3d23737477a6e52511ca41fd + * + * The reference implementation is altered in this points: + * - C++ comments are converted to ANSI C comments. + * - all function names are mangled + * - typedef for UINT64 is commented out. + * - brg_endian.h is removed + * + * *************************************************************************/ + +#ifdef __sparc + /* opt64 uses un-aligned memory access that causes a BUS error with msg + * 'invalid address alignment' on SPARC. */ + #define KeccakOpt 32 +#elif SIZEOF_VOID_P == 8 && defined(PY_UINT64_T) + /* opt64 works only for 64bit platforms with unsigned int64 */ + #define KeccakOpt 64 +#else + /* opt32 is used for the remaining 32 and 64bit platforms */ + #define KeccakOpt 32 +#endif + +#if KeccakOpt == 64 && defined(PY_UINT64_T) + /* 64bit platforms with unsigned int64 */ + typedef PY_UINT64_T UINT64; + typedef unsigned char UINT8; +#endif + +/* replacement for brg_endian.h */ +#define IS_LITTLE_ENDIAN 1234 +#define IS_BIG_ENDIAN 4321 +#if PY_LITTLE_ENDIAN +#define PLATFORM_BYTE_ORDER IS_LITTLE_ENDIAN +#endif +#if PY_BIG_ENDIAN +#define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN +#endif + +/* mangle names */ +#define KeccakF1600_FastLoop_Absorb _PySHA3_KeccakF1600_FastLoop_Absorb +#define Keccak_HashFinal _PySHA3_Keccak_HashFinal +#define Keccak_HashInitialize _PySHA3_Keccak_HashInitialize +#define Keccak_HashSqueeze _PySHA3_Keccak_HashSqueeze +#define Keccak_HashUpdate _PySHA3_Keccak_HashUpdate +#define KeccakP1600_AddBytes _PySHA3_KeccakP1600_AddBytes +#define KeccakP1600_AddBytesInLane _PySHA3_KeccakP1600_AddBytesInLane +#define KeccakP1600_AddLanes _PySHA3_KeccakP1600_AddLanes +#define KeccakP1600_ExtractAndAddBytes _PySHA3_KeccakP1600_ExtractAndAddBytes +#define KeccakP1600_ExtractAndAddBytesInLane _PySHA3_KeccakP1600_ExtractAndAddBytesInLane +#define KeccakP1600_ExtractAndAddLanes _PySHA3_KeccakP1600_ExtractAndAddLanes +#define KeccakP1600_ExtractBytes _PySHA3_KeccakP1600_ExtractBytes +#define KeccakP1600_ExtractBytesInLane _PySHA3_KeccakP1600_ExtractBytesInLane +#define KeccakP1600_ExtractLanes _PySHA3_KeccakP1600_ExtractLanes +#define KeccakP1600_Initialize _PySHA3_KeccakP1600_Initialize +#define KeccakP1600_OverwriteBytes _PySHA3_KeccakP1600_OverwriteBytes +#define KeccakP1600_OverwriteBytesInLane _PySHA3_KeccakP1600_OverwriteBytesInLane +#define KeccakP1600_OverwriteLanes _PySHA3_KeccakP1600_OverwriteLanes +#define KeccakP1600_OverwriteWithZeroes _PySHA3_KeccakP1600_OverwriteWithZeroes +#define KeccakP1600_Permute_12rounds _PySHA3_KeccakP1600_Permute_12rounds +#define KeccakP1600_Permute_24rounds _PySHA3_KeccakP1600_Permute_24rounds +#define KeccakWidth1600_Sponge _PySHA3_KeccakWidth1600_Sponge +#define KeccakWidth1600_SpongeAbsorb _PySHA3_KeccakWidth1600_SpongeAbsorb +#define KeccakWidth1600_SpongeAbsorbLastFewBits _PySHA3_KeccakWidth1600_SpongeAbsorbLastFewBits +#define KeccakWidth1600_SpongeInitialize _PySHA3_KeccakWidth1600_SpongeInitialize +#define KeccakWidth1600_SpongeSqueeze _PySHA3_KeccakWidth1600_SpongeSqueeze +#if KeccakOpt == 32 +#define KeccakP1600_AddByte _PySHA3_KeccakP1600_AddByte +#define KeccakP1600_Permute_Nrounds _PySHA3_KeccakP1600_Permute_Nrounds +#define KeccakP1600_SetBytesInLaneToZero _PySHA3_KeccakP1600_SetBytesInLaneToZero +#endif + +/* we are only interested in KeccakP1600 */ +#define KeccakP200_excluded 1 +#define KeccakP400_excluded 1 +#define KeccakP800_excluded 1 + +/* inline all Keccak dependencies */ +#include "kcp/KeccakHash.h" +#include "kcp/KeccakSponge.h" +#include "kcp/KeccakHash.c" +#include "kcp/KeccakSponge.c" +#if KeccakOpt == 64 + #include "kcp/KeccakP-1600-opt64.c" +#elif KeccakOpt == 32 + #include "kcp/KeccakP-1600-inplace32BI.c" +#endif + +#define SHA3_MAX_DIGESTSIZE 64 /* 64 Bytes (512 Bits) for 224 to 512 */ +#define SHA3_state Keccak_HashInstance +#define SHA3_init Keccak_HashInitialize +#define SHA3_process Keccak_HashUpdate +#define SHA3_done Keccak_HashFinal +#define SHA3_squeeze Keccak_HashSqueeze +#define SHA3_copystate(dest, src) memcpy(&(dest), &(src), sizeof(SHA3_state)) + + +/*[clinic input] +module _sha3 +class _sha3.sha3_224 "SHA3object *" "&SHA3_224typ" +class _sha3.sha3_256 "SHA3object *" "&SHA3_256typ" +class _sha3.sha3_384 "SHA3object *" "&SHA3_384typ" +class _sha3.sha3_512 "SHA3object *" "&SHA3_512typ" +class _sha3.shake_128 "SHA3object *" "&SHAKE128type" +class _sha3.shake_256 "SHA3object *" "&SHAKE256type" +[clinic start generated code]*/ +/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b8a53680f370285a]*/ + +/* The structure for storing SHA3 info */ + +#define PY_WITH_KECCAK 0 + +typedef struct { + PyObject_HEAD + SHA3_state hash_state; +#ifdef WITH_THREAD + PyThread_type_lock lock; +#endif +} SHA3object; + +static PyTypeObject SHA3_224type; +static PyTypeObject SHA3_256type; +static PyTypeObject SHA3_384type; +static PyTypeObject SHA3_512type; +#ifdef PY_WITH_KECCAK +static PyTypeObject Keccak_224type; +static PyTypeObject Keccak_256type; +static PyTypeObject Keccak_384type; +static PyTypeObject Keccak_512type; +#endif +static PyTypeObject SHAKE128type; +static PyTypeObject SHAKE256type; + +#include "clinic/sha3module.c.h" + +static SHA3object * +newSHA3object(PyTypeObject *type) +{ + SHA3object *newobj; + newobj = (SHA3object *)PyObject_New(SHA3object, type); + if (newobj == NULL) { + return NULL; + } +#ifdef WITH_THREAD + newobj->lock = NULL; +#endif + return newobj; +} + + +/*[clinic input] +@classmethod +_sha3.sha3_224.__new__ as py_sha3_new + string as data: object = NULL + +Return a new SHA3 hash object with a hashbit length of 28 bytes. +[clinic start generated code]*/ + +static PyObject * +py_sha3_new_impl(PyTypeObject *type, PyObject *data) +/*[clinic end generated code: output=8d5c34279e69bf09 input=d7c582b950a858b6]*/ +{ + SHA3object *self = NULL; + Py_buffer buf = {NULL, NULL}; + HashReturn res; + + self = newSHA3object(type); + if (self == NULL) { + goto error; + } + + if (type == &SHA3_224type) { + res = Keccak_HashInitialize_SHA3_224(&self->hash_state); + } else if (type == &SHA3_256type) { + res = Keccak_HashInitialize_SHA3_256(&self->hash_state); + } else if (type == &SHA3_384type) { + res = Keccak_HashInitialize_SHA3_384(&self->hash_state); + } else if (type == &SHA3_512type) { + res = Keccak_HashInitialize_SHA3_512(&self->hash_state); +#ifdef PY_WITH_KECCAK + } else if (type == &Keccak_224type) { + res = Keccak_HashInitialize(&self->hash_state, 1152, 448, 224, 0x01); + } else if (type == &Keccak_256type) { + res = Keccak_HashInitialize(&self->hash_state, 1088, 512, 256, 0x01); + } else if (type == &Keccak_384type) { + res = Keccak_HashInitialize(&self->hash_state, 832, 768, 384, 0x01); + } else if (type == &Keccak_512type) { + res = Keccak_HashInitialize(&self->hash_state, 576, 1024, 512, 0x01); +#endif + } else if (type == &SHAKE128type) { + res = Keccak_HashInitialize_SHAKE128(&self->hash_state); + } else if (type == &SHAKE256type) { + res = Keccak_HashInitialize_SHAKE256(&self->hash_state); + } else { + PyErr_BadInternalCall(); + goto error; + } + + if (data) { + GET_BUFFER_VIEW_OR_ERROR(data, &buf, goto error); +#ifdef WITH_THREAD + if (buf.len >= HASHLIB_GIL_MINSIZE) { + /* invariant: New objects can't be accessed by other code yet, + * thus it's safe to release the GIL without locking the object. + */ + Py_BEGIN_ALLOW_THREADS + res = SHA3_process(&self->hash_state, buf.buf, buf.len * 8); + Py_END_ALLOW_THREADS + } + else { + res = SHA3_process(&self->hash_state, buf.buf, buf.len * 8); + } +#else + res = SHA3_process(&self->hash_state, buf.buf, buf.len * 8); +#endif + if (res != SUCCESS) { + PyErr_SetString(PyExc_RuntimeError, + "internal error in SHA3 Update()"); + goto error; + } + PyBuffer_Release(&buf); + } + + return (PyObject *)self; + + error: + if (self) { + Py_DECREF(self); + } + if (data && buf.obj) { + PyBuffer_Release(&buf); + } + return NULL; +} + + +/* Internal methods for a hash object */ + +static void +SHA3_dealloc(SHA3object *self) +{ +#ifdef WITH_THREAD + if (self->lock) { + PyThread_free_lock(self->lock); + } +#endif + PyObject_Del(self); +} + + +/* External methods for a hash object */ + + +/*[clinic input] +_sha3.sha3_224.copy + +Return a copy of the hash object. +[clinic start generated code]*/ + +static PyObject * +_sha3_sha3_224_copy_impl(SHA3object *self) +/*[clinic end generated code: output=6c537411ecdcda4c input=93a44aaebea51ba8]*/ +{ + SHA3object *newobj; + + if ((newobj = newSHA3object(Py_TYPE(self))) == NULL) { + return NULL; + } + ENTER_HASHLIB(self); + SHA3_copystate(newobj->hash_state, self->hash_state); + LEAVE_HASHLIB(self); + return (PyObject *)newobj; +} + + +/*[clinic input] +_sha3.sha3_224.digest + +Return the digest value as a string of binary data. +[clinic start generated code]*/ + +static PyObject * +_sha3_sha3_224_digest_impl(SHA3object *self) +/*[clinic end generated code: output=fd531842e20b2d5b input=a5807917d219b30e]*/ +{ + unsigned char digest[SHA3_MAX_DIGESTSIZE]; + SHA3_state temp; + HashReturn res; + + ENTER_HASHLIB(self); + SHA3_copystate(temp, self->hash_state); + LEAVE_HASHLIB(self); + res = SHA3_done(&temp, digest); + if (res != SUCCESS) { + PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 Final()"); + return NULL; + } + return PyBytes_FromStringAndSize((const char *)digest, + self->hash_state.fixedOutputLength / 8); +} + + +/*[clinic input] +_sha3.sha3_224.hexdigest + +Return the digest value as a string of hexadecimal digits. +[clinic start generated code]*/ + +static PyObject * +_sha3_sha3_224_hexdigest_impl(SHA3object *self) +/*[clinic end generated code: output=75ad03257906918d input=2d91bb6e0d114ee3]*/ +{ + unsigned char digest[SHA3_MAX_DIGESTSIZE]; + SHA3_state temp; + HashReturn res; + + /* Get the raw (binary) digest value */ + ENTER_HASHLIB(self); + SHA3_copystate(temp, self->hash_state); + LEAVE_HASHLIB(self); + res = SHA3_done(&temp, digest); + if (res != SUCCESS) { + PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 Final()"); + return NULL; + } + return _Py_strhex((const char *)digest, + self->hash_state.fixedOutputLength / 8); +} + + +/*[clinic input] +_sha3.sha3_224.update + + obj: object + / + +Update this hash object's state with the provided string. +[clinic start generated code]*/ + +static PyObject * +_sha3_sha3_224_update(SHA3object *self, PyObject *obj) +/*[clinic end generated code: output=06721d55b483e0af input=be44bf0d1c279791]*/ +{ + Py_buffer buf; + HashReturn res; + + GET_BUFFER_VIEW_OR_ERROUT(obj, &buf); + + /* add new data, the function takes the length in bits not bytes */ +#ifdef WITH_THREAD + if (self->lock == NULL && buf.len >= HASHLIB_GIL_MINSIZE) { + self->lock = PyThread_allocate_lock(); + } + /* Once a lock exists all code paths must be synchronized. We have to + * release the GIL even for small buffers as acquiring the lock may take + * an unlimited amount of time when another thread updates this object + * with lots of data. */ + if (self->lock) { + Py_BEGIN_ALLOW_THREADS + PyThread_acquire_lock(self->lock, 1); + res = SHA3_process(&self->hash_state, buf.buf, buf.len * 8); + PyThread_release_lock(self->lock); + Py_END_ALLOW_THREADS + } + else { + res = SHA3_process(&self->hash_state, buf.buf, buf.len * 8); + } +#else + res = SHA3_process(&self->hash_state, buf.buf, buf.len * 8); +#endif + + if (res != SUCCESS) { + PyBuffer_Release(&buf); + PyErr_SetString(PyExc_RuntimeError, + "internal error in SHA3 Update()"); + return NULL; + } + + PyBuffer_Release(&buf); + Py_INCREF(Py_None); + return Py_None; +} + + +static PyMethodDef SHA3_methods[] = { + _SHA3_SHA3_224_COPY_METHODDEF + _SHA3_SHA3_224_DIGEST_METHODDEF + _SHA3_SHA3_224_HEXDIGEST_METHODDEF + _SHA3_SHA3_224_UPDATE_METHODDEF + {NULL, NULL} /* sentinel */ +}; + + +static PyObject * +SHA3_get_block_size(SHA3object *self, void *closure) +{ + int rate = self->hash_state.sponge.rate; + return PyLong_FromLong(rate / 8); +} + + +static PyObject * +SHA3_get_name(SHA3object *self, void *closure) +{ + PyTypeObject *type = Py_TYPE(self); + if (type == &SHA3_224type) { + return PyUnicode_FromString("sha3_224"); + } else if (type == &SHA3_256type) { + return PyUnicode_FromString("sha3_256"); + } else if (type == &SHA3_384type) { + return PyUnicode_FromString("sha3_384"); + } else if (type == &SHA3_512type) { + return PyUnicode_FromString("sha3_512"); +#ifdef PY_WITH_KECCAK + } else if (type == &Keccak_224type) { + return PyUnicode_FromString("keccak_224"); + } else if (type == &Keccak_256type) { + return PyUnicode_FromString("keccak_256"); + } else if (type == &Keccak_384type) { + return PyUnicode_FromString("keccak_384"); + } else if (type == &Keccak_512type) { + return PyUnicode_FromString("keccak_512"); +#endif + } else if (type == &SHAKE128type) { + return PyUnicode_FromString("shake_128"); + } else if (type == &SHAKE256type) { + return PyUnicode_FromString("shake_256"); + } else { + PyErr_BadInternalCall(); + return NULL; + } +} + + +static PyObject * +SHA3_get_digest_size(SHA3object *self, void *closure) +{ + return PyLong_FromLong(self->hash_state.fixedOutputLength / 8); +} + + +static PyObject * +SHA3_get_capacity_bits(SHA3object *self, void *closure) +{ + int capacity = 1600 - self->hash_state.sponge.rate; + return PyLong_FromLong(capacity); +} + + +static PyObject * +SHA3_get_rate_bits(SHA3object *self, void *closure) +{ + unsigned int rate = self->hash_state.sponge.rate; + return PyLong_FromLong(rate); +} + +static PyObject * +SHA3_get_suffix(SHA3object *self, void *closure) +{ + unsigned char suffix[2]; + suffix[0] = self->hash_state.delimitedSuffix; + suffix[1] = 0; + return PyBytes_FromStringAndSize((const char *)suffix, 1); +} + + +static PyGetSetDef SHA3_getseters[] = { + {"block_size", (getter)SHA3_get_block_size, NULL, NULL, NULL}, + {"name", (getter)SHA3_get_name, NULL, NULL, NULL}, + {"digest_size", (getter)SHA3_get_digest_size, NULL, NULL, NULL}, + {"_capacity_bits", (getter)SHA3_get_capacity_bits, NULL, NULL, NULL}, + {"_rate_bits", (getter)SHA3_get_rate_bits, NULL, NULL, NULL}, + {"_suffix", (getter)SHA3_get_suffix, NULL, NULL, NULL}, + {NULL} /* Sentinel */ +}; + + +#define SHA3_TYPE(type_obj, type_name, type_doc, type_methods) \ + static PyTypeObject type_obj = { \ + PyVarObject_HEAD_INIT(NULL, 0) \ + type_name, /* tp_name */ \ + sizeof(SHA3object), /* tp_size */ \ + 0, /* tp_itemsize */ \ + /* methods */ \ + (destructor)SHA3_dealloc, /* tp_dealloc */ \ + 0, /* tp_print */ \ + 0, /* tp_getattr */ \ + 0, /* tp_setattr */ \ + 0, /* tp_reserved */ \ + 0, /* tp_repr */ \ + 0, /* tp_as_number */ \ + 0, /* tp_as_sequence */ \ + 0, /* tp_as_mapping */ \ + 0, /* tp_hash */ \ + 0, /* tp_call */ \ + 0, /* tp_str */ \ + 0, /* tp_getattro */ \ + 0, /* tp_setattro */ \ + 0, /* tp_as_buffer */ \ + Py_TPFLAGS_DEFAULT, /* tp_flags */ \ + type_doc, /* tp_doc */ \ + 0, /* tp_traverse */ \ + 0, /* tp_clear */ \ + 0, /* tp_richcompare */ \ + 0, /* tp_weaklistoffset */ \ + 0, /* tp_iter */ \ + 0, /* tp_iternext */ \ + type_methods, /* tp_methods */ \ + NULL, /* tp_members */ \ + SHA3_getseters, /* tp_getset */ \ + 0, /* tp_base */ \ + 0, /* tp_dict */ \ + 0, /* tp_descr_get */ \ + 0, /* tp_descr_set */ \ + 0, /* tp_dictoffset */ \ + 0, /* tp_init */ \ + 0, /* tp_alloc */ \ + py_sha3_new, /* tp_new */ \ + } + +PyDoc_STRVAR(sha3_256__doc__, +"sha3_256([string]) -> SHA3 object\n\ +\n\ +Return a new SHA3 hash object with a hashbit length of 32 bytes."); + +PyDoc_STRVAR(sha3_384__doc__, +"sha3_384([string]) -> SHA3 object\n\ +\n\ +Return a new SHA3 hash object with a hashbit length of 48 bytes."); + +PyDoc_STRVAR(sha3_512__doc__, +"sha3_512([string]) -> SHA3 object\n\ +\n\ +Return a new SHA3 hash object with a hashbit length of 64 bytes."); + +SHA3_TYPE(SHA3_224type, "_sha3.sha3_224", py_sha3_new__doc__, SHA3_methods); +SHA3_TYPE(SHA3_256type, "_sha3.sha3_256", sha3_256__doc__, SHA3_methods); +SHA3_TYPE(SHA3_384type, "_sha3.sha3_384", sha3_384__doc__, SHA3_methods); +SHA3_TYPE(SHA3_512type, "_sha3.sha3_512", sha3_512__doc__, SHA3_methods); + +#ifdef PY_WITH_KECCAK +PyDoc_STRVAR(keccak_224__doc__, +"keccak_224([string]) -> Keccak object\n\ +\n\ +Return a new Keccak hash object with a hashbit length of 28 bytes."); + +PyDoc_STRVAR(keccak_256__doc__, +"keccak_256([string]) -> Keccak object\n\ +\n\ +Return a new Keccak hash object with a hashbit length of 32 bytes."); + +PyDoc_STRVAR(keccak_384__doc__, +"keccak_384([string]) -> Keccak object\n\ +\n\ +Return a new Keccak hash object with a hashbit length of 48 bytes."); + +PyDoc_STRVAR(keccak_512__doc__, +"keccak_512([string]) -> Keccak object\n\ +\n\ +Return a new Keccak hash object with a hashbit length of 64 bytes."); + +SHA3_TYPE(Keccak_224type, "_sha3.keccak_224", keccak_224__doc__, SHA3_methods); +SHA3_TYPE(Keccak_256type, "_sha3.keccak_256", keccak_256__doc__, SHA3_methods); +SHA3_TYPE(Keccak_384type, "_sha3.keccak_384", keccak_384__doc__, SHA3_methods); +SHA3_TYPE(Keccak_512type, "_sha3.keccak_512", keccak_512__doc__, SHA3_methods); +#endif + + +static PyObject * +_SHAKE_digest(SHA3object *self, unsigned long digestlen, int hex) +{ + unsigned char *digest = NULL; + SHA3_state temp; + int res; + PyObject *result = NULL; + + if ((digest = (unsigned char*)PyMem_Malloc(digestlen)) == NULL) { + return PyErr_NoMemory(); + } + + /* Get the raw (binary) digest value */ + ENTER_HASHLIB(self); + SHA3_copystate(temp, self->hash_state); + LEAVE_HASHLIB(self); + res = SHA3_done(&temp, NULL); + if (res != SUCCESS) { + PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 done()"); + goto error; + } + res = SHA3_squeeze(&temp, digest, digestlen * 8); + if (res != SUCCESS) { + PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 Squeeze()"); + return NULL; + } + if (hex) { + result = _Py_strhex((const char *)digest, digestlen); + } else { + result = PyBytes_FromStringAndSize((const char *)digest, + digestlen); + } + error: + if (digest != NULL) { + PyMem_Free(digest); + } + return result; +} + + +/*[clinic input] +_sha3.shake_128.digest + + length: unsigned_long(bitwise=True) + \ + +Return the digest value as a string of binary data. +[clinic start generated code]*/ + +static PyObject * +_sha3_shake_128_digest_impl(SHA3object *self, unsigned long length) +/*[clinic end generated code: output=2313605e2f87bb8f input=608c8ca80ae9d115]*/ +{ + return _SHAKE_digest(self, length, 0); +} + + +/*[clinic input] +_sha3.shake_128.hexdigest + + length: unsigned_long(bitwise=True) + \ + +Return the digest value as a string of hexadecimal digits. +[clinic start generated code]*/ + +static PyObject * +_sha3_shake_128_hexdigest_impl(SHA3object *self, unsigned long length) +/*[clinic end generated code: output=bf8e2f1e490944a8 input=64e56b4760db4573]*/ +{ + return _SHAKE_digest(self, length, 1); +} + + +static PyMethodDef SHAKE_methods[] = { + _SHA3_SHA3_224_COPY_METHODDEF + _SHA3_SHAKE_128_DIGEST_METHODDEF + _SHA3_SHAKE_128_HEXDIGEST_METHODDEF + _SHA3_SHA3_224_UPDATE_METHODDEF + {NULL, NULL} /* sentinel */ +}; + +PyDoc_STRVAR(shake_128__doc__, +"shake_128([string]) -> SHAKE object\n\ +\n\ +Return a new SHAKE hash object."); + +PyDoc_STRVAR(shake_256__doc__, +"shake_256([string]) -> SHAKE object\n\ +\n\ +Return a new SHAKE hash object."); + +SHA3_TYPE(SHAKE128type, "_sha3.shake_128", shake_128__doc__, SHAKE_methods); +SHA3_TYPE(SHAKE256type, "_sha3.shake_256", shake_256__doc__, SHAKE_methods); + + +/* Initialize this module. */ +static struct PyModuleDef _SHA3module = { + PyModuleDef_HEAD_INIT, + "_sha3", + NULL, + -1, + NULL, + NULL, + NULL, + NULL, + NULL +}; + + +PyMODINIT_FUNC +PyInit__sha3(void) +{ + PyObject *m = NULL; + + m = PyModule_Create(&_SHA3module); + +#define init_sha3type(name, type) \ + do { \ + Py_TYPE(type) = &PyType_Type; \ + if (PyType_Ready(type) < 0) { \ + goto error; \ + } \ + Py_INCREF((PyObject *)type); \ + if (PyModule_AddObject(m, name, (PyObject *)type) < 0) { \ + goto error; \ + } \ + } while(0) + + init_sha3type("sha3_224", &SHA3_224type); + init_sha3type("sha3_256", &SHA3_256type); + init_sha3type("sha3_384", &SHA3_384type); + init_sha3type("sha3_512", &SHA3_512type); +#ifdef PY_WITH_KECCAK + init_sha3type("keccak_224", &Keccak_224type); + init_sha3type("keccak_256", &Keccak_256type); + init_sha3type("keccak_384", &Keccak_384type); + init_sha3type("keccak_512", &Keccak_512type); +#endif + init_sha3type("shake_128", &SHAKE128type); + init_sha3type("shake_256", &SHAKE256type); + +#undef init_sha3type + + if (PyModule_AddIntConstant(m, "keccakopt", KeccakOpt) < 0) { + goto error; + } + if (PyModule_AddStringConstant(m, "implementation", + KeccakP1600_implementation) < 0) { + goto error; + } + + return m; + error: + Py_DECREF(m); + return NULL; +} diff --git a/Modules/hashlib.h b/Modules/hashlib.h index 358045364cbc8370150398142302943b82ad7ba6..e7c0f7dfec062d4f29dee414e73e00e7377c700d 100644 --- a/Modules/hashlib.h +++ b/Modules/hashlib.h @@ -5,27 +5,30 @@ * of PyObject_GetBuffer. Sets an exception and issues a return NULL * on any errors. */ -#define GET_BUFFER_VIEW_OR_ERROUT(obj, viewp) do { \ +#define GET_BUFFER_VIEW_OR_ERROR(obj, viewp, erraction) do { \ if (PyUnicode_Check((obj))) { \ PyErr_SetString(PyExc_TypeError, \ "Unicode-objects must be encoded before hashing");\ - return NULL; \ + erraction; \ } \ if (!PyObject_CheckBuffer((obj))) { \ PyErr_SetString(PyExc_TypeError, \ "object supporting the buffer API required"); \ - return NULL; \ + erraction; \ } \ if (PyObject_GetBuffer((obj), (viewp), PyBUF_SIMPLE) == -1) { \ - return NULL; \ + erraction; \ } \ if ((viewp)->ndim > 1) { \ PyErr_SetString(PyExc_BufferError, \ "Buffer must be single dimension"); \ PyBuffer_Release((viewp)); \ - return NULL; \ + erraction; \ } \ - } while(0); + } while(0) + +#define GET_BUFFER_VIEW_OR_ERROUT(obj, viewp) \ + GET_BUFFER_VIEW_OR_ERROR(obj, viewp, return NULL) /* * Helper code to synchronize access to the hash object when the GIL is diff --git a/setup.py b/setup.py index 2e9f9a4c0151621b528e17a2a08a7d6a013099c8..5243c0a2a3d69b1afacaf19dc19018ec68b78ef8 100644 --- a/setup.py +++ b/setup.py @@ -889,6 +889,12 @@ class PyBuildExt(build_ext): exts.append( Extension('_sha1', ['sha1module.c'], depends=['hashlib.h']) ) + sha3_depends = ['Modules/hashlib.h'] + sha3_depends.extend(glob('Modules/_sha3/kcp/*')) + exts.append( Extension('_sha3', + ['_sha3/sha3module.c'], + depends=sha3_depends)) + # Modules that provide persistent dictionary-like semantics. You will # probably want to arrange for at least one of them to be available on # your machine, though none are defined by default because of library -- 2.5.5