Accidentally worked in the IOS branch, but fortunately, it'd already been merged in. Test changes. sync
authorKrista 'DarthMama' Bennett <krista@pep.foundation>
Mon, 02 Sep 2019 20:53:32 +0200
branchsync
changeset 40465374196b515e
parent 4041 276b75a00083
parent 4045 af9bfb2b5c08
child 4047 0960c85f3264
child 4050 6608abc1ce8c
Accidentally worked in the IOS branch, but fortunately, it'd already been merged in. Test changes.
test/gen_pgp_samples.sh
test/include/AppleMailTests.h
test/include/BCCTests.h
test/include/BlacklistAcceptNewKeyTests.h
test/include/BlacklistTests.h
test/include/BloblistTests.h
test/include/CaseAndDotAddressTests.h
test/include/CheckRenewedExpiredKeyTrustStatusTests.h
test/include/CrashdumpTests.h
test/include/DecorateTests.h
test/include/DecryptAttachPrivateKeyTrustedTests.h
test/include/DecryptAttachPrivateKeyUntrustedTests.h
test/include/DeleteKeyTests.h
test/include/EncryptAttachPrivateKeyTests.h
test/include/EncryptForIdentityTests.h
test/include/EncryptMissingPrivateKeyTests.h
test/include/Engine358Tests.h
test/include/Engine463Tests.h
test/include/EngineTestIndividualSuite.h
test/include/EngineTestSessionSuite.h
test/include/EngineTestSuite.h
test/include/EnterLeaveDeviceGroupTests.h
test/include/ExpiredSubkeyTests.h
test/include/ExportKeyTests.h
test/include/ExternalRevokeTests.h
test/include/GetKeyRatingForUserTests.h
test/include/HeaderKeyImportTests.h
test/include/I18nTests.h
test/include/IOS1664Tests.h
test/include/IdentityListTests.h
test/include/IntegrityTests.h
test/include/KeyAttachmentTests.h
test/include/KeyResetMessageTests.h
test/include/KeyeditTests.h
test/include/KeyringImportTests.h
test/include/LeastColorGroupTests.h
test/include/LeastCommonDenomColorTests.h
test/include/LiteralFilenameTests.h
test/include/LookupTests.h
test/include/LotsOfKeysTests.h
test/include/MapAsn1Tests.h
test/include/Message2_0Tests.h
test/include/Message2_1Tests.h
test/include/MessageApiTests.h
test/include/MessageNullFromTests.h
test/include/MessageTwoPointOhTests.h
test/include/MimeTests.h
test/include/NewUpdateIdAndMyselfTests.h
test/include/NoOwnIdentWritesOnDecryptTests.h
test/include/OwnIdentitiesRetrieveTests.h
test/include/OwnKeysRetrieveTests.h
test/include/PepSubjectReceivedTests.h
test/include/PgpBinaryTests.h
test/include/PgpListKeysTests.h
test/include/ReencryptPlusExtraKeysTests.h
test/include/RevocationTests.h
test/include/RevokeRegenAttachTests.h
test/include/SenderFPRTests.h
test/include/SequenceTests.h
test/include/SignOnlyTests.h
test/include/SimpleBodyNotAltTests.h
test/include/StringlistTests.h
test/include/StringpairListTests.h
test/include/StrnstrTests.h
test/include/SubkeyRatingEvalTests.h
test/include/SuiteMaker.h
test/include/SyncTests.h
test/include/TestDriver.h
test/include/TrustManipulationTests.h
test/include/TrustwordsTests.h
test/include/URIAddressTests.h
test/include/UserIDAliasTests.h
test/include/UserIdCollisionTests.h
test/include/VerifyTests.h
test/include/pEpTestOutput.h
test/msg
test/msg.asc
test/msg1.asc
test/msg2.asc
test/msg3.asc
test/msg_no_key.asc
test/no_key.asc
test/pEpEngineTest.cc
test/pgp_mime_msg.txt
test/signature.asc
test/still_no_key.asc
test/t1.txt
test/t2.txt
     1.1 --- a/.hgignore	Sat Aug 31 15:40:25 2019 +0200
     1.2 +++ b/.hgignore	Mon Sep 02 20:53:32 2019 +0200
     1.3 @@ -81,5 +81,7 @@
     1.4  test/*.txt
     1.5  lldb-history
     1.6  *.swo
     1.7 +*.smp
     1.8  test/EngineTests
     1.9  test/googletest
    1.10 +test/tmp/*
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/test/convenience_scripts/gen_pgp_samples.sh	Mon Sep 02 20:53:32 2019 +0200
     2.3 @@ -0,0 +1,23 @@
     2.4 +#!/bin/bash
     2.5 +
     2.6 +# Use this to generate test msg.asc and signature.asc
     2.7 +
     2.8 +# Keys pair are : 
     2.9 +#
    2.10 +# pEp Test Alice (test key don't use) <pep.test.alice@pep-project.org>
    2.11 +# 6FF00E97
    2.12 +# 
    2.13 +# pEp Test Bob (test key, don't use) <pep.test.bob@pep-project.org> 
    2.14 +# C9C2EE39
    2.15 +# 
    2.16 +# pEp Test John (test key, don't use) <pep.test.john@pep-project.org>
    2.17 +# 70DCF575
    2.18 +
    2.19 +# msg.asc from msg.c
    2.20 +# Bob sends a message to Alice and John
    2.21 +gpg -u C9C2EE39 -s -e -r 6FF00E97 -r 70DCF575 --armor msg
    2.22 +
    2.23 +# signature.asc from t1.txt
    2.24 +# Bob signs the message
    2.25 +gpg --output signature.asc -u C9C2EE39 -sb --armor t1.txt
    2.26 +
     3.1 --- a/test/gen_pgp_samples.sh	Sat Aug 31 15:40:25 2019 +0200
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,23 +0,0 @@
     3.4 -#!/bin/bash
     3.5 -
     3.6 -# Use this to generate test msg.asc and signature.asc
     3.7 -
     3.8 -# Keys pair are : 
     3.9 -#
    3.10 -# pEp Test Alice (test key don't use) <pep.test.alice@pep-project.org>
    3.11 -# 6FF00E97
    3.12 -# 
    3.13 -# pEp Test Bob (test key, don't use) <pep.test.bob@pep-project.org> 
    3.14 -# C9C2EE39
    3.15 -# 
    3.16 -# pEp Test John (test key, don't use) <pep.test.john@pep-project.org>
    3.17 -# 70DCF575
    3.18 -
    3.19 -# msg.asc from msg.c
    3.20 -# Bob sends a message to Alice and John
    3.21 -gpg -u C9C2EE39 -s -e -r 6FF00E97 -r 70DCF575 --armor msg
    3.22 -
    3.23 -# signature.asc from t1.txt
    3.24 -# Bob signs the message
    3.25 -gpg --output signature.asc -u C9C2EE39 -sb --armor t1.txt
    3.26 -
     4.1 --- a/test/include/AppleMailTests.h	Sat Aug 31 15:40:25 2019 +0200
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,20 +0,0 @@
     4.4 -// This file is under GNU General Public License 3.0
     4.5 -// see LICENSE.txt
     4.6 -
     4.7 -#ifndef APPLE_MAIL_TESTS_H
     4.8 -#define APPLE_MAIL_TESTS_H
     4.9 -
    4.10 -#include <string.h>
    4.11 -#include "EngineTestIndividualSuite.h"
    4.12 -
    4.13 -using namespace std;
    4.14 -
    4.15 -class AppleMailTests : public EngineTestIndividualSuite {
    4.16 -    public:
    4.17 -        AppleMailTests(string suitename, string test_home_dir);
    4.18 -    private:
    4.19 -        void check_apple_mail_text_signed_encrypted();
    4.20 -        void check_apple_mail_html_signed_encrypted();
    4.21 -};
    4.22 -
    4.23 -#endif
     5.1 --- a/test/include/BCCTests.h	Sat Aug 31 15:40:25 2019 +0200
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,21 +0,0 @@
     5.4 -// This file is under GNU General Public License 3.0
     5.5 -// see LICENSE.txt
     5.6 -
     5.7 -#ifndef BCC_H
     5.8 -#define BCC_H
     5.9 -
    5.10 -#include <string>
    5.11 -#include "EngineTestIndividualSuite.h"
    5.12 -
    5.13 -using namespace std;
    5.14 -
    5.15 -class BCCTests : public EngineTestIndividualSuite {
    5.16 -    public:
    5.17 -        BCCTests(string test_suite, string test_home_dir);
    5.18 -    protected:
    5.19 -	void setup();
    5.20 -    private:
    5.21 -        void check_single_BCC();
    5.22 -};
    5.23 -
    5.24 -#endif
     6.1 --- a/test/include/BlacklistAcceptNewKeyTests.h	Sat Aug 31 15:40:25 2019 +0200
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,19 +0,0 @@
     6.4 -// This file is under GNU General Public License 3.0
     6.5 -// see LICENSE.txt
     6.6 -
     6.7 -#ifndef BLACKLIST_ACCEPT_NEW_KEY_H
     6.8 -#define BLACKLIST_ACCEPT_NEW_KEY_H
     6.9 -
    6.10 -#include <string>
    6.11 -#include "EngineTestSessionSuite.h"
    6.12 -
    6.13 -using namespace std;
    6.14 -
    6.15 -class BlacklistAcceptNewKeyTests : public EngineTestSessionSuite {
    6.16 -    public:
    6.17 -        BlacklistAcceptNewKeyTests(string test_suite, string test_home_dir);
    6.18 -    private:
    6.19 -        void check_blacklist_accept_new_key();
    6.20 -};
    6.21 -
    6.22 -#endif
     7.1 --- a/test/include/BlacklistTests.h	Sat Aug 31 15:40:25 2019 +0200
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,19 +0,0 @@
     7.4 -// This file is under GNU General Public License 3.0
     7.5 -// see LICENSE.txt
     7.6 -
     7.7 -#ifndef BLACKLIST_H
     7.8 -#define BLACKLIST_H
     7.9 -
    7.10 -#include <string>
    7.11 -#include "EngineTestSessionSuite.h"
    7.12 -
    7.13 -using namespace std;
    7.14 -
    7.15 -class BlacklistTests : public EngineTestSessionSuite {
    7.16 -    public:
    7.17 -        BlacklistTests(string test_suite, string test_home_dir);
    7.18 -    private:
    7.19 -        void check_blacklist();
    7.20 -};
    7.21 -
    7.22 -#endif
     8.1 --- a/test/include/BloblistTests.h	Sat Aug 31 15:40:25 2019 +0200
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,22 +0,0 @@
     8.4 -// This file is under GNU General Public License 3.0
     8.5 -// see LICENSE.txt
     8.6 -
     8.7 -#ifndef BLOBLIST_TESTS_H
     8.8 -#define BLOBLIST_TESTS_H
     8.9 -
    8.10 -#include <string>
    8.11 -#include "bloblist.h"
    8.12 -#include "EngineTestSuite.h"
    8.13 -
    8.14 -using namespace std;
    8.15 -
    8.16 -class BloblistTests : public EngineTestSuite {
    8.17 -    public:
    8.18 -        BloblistTests(string suitename, string test_home_dir);
    8.19 -    private:
    8.20 -        void check_bloblists();
    8.21 -        bool test_blob_equals(size_t size1, char* blob1, size_t size2, char* blob2);
    8.22 -        bool test_bloblist_node_equals(bloblist_t* val1, bloblist_t* val2);
    8.23 -};
    8.24 -
    8.25 -#endif
     9.1 --- a/test/include/CaseAndDotAddressTests.h	Sat Aug 31 15:40:25 2019 +0200
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,19 +0,0 @@
     9.4 -// This file is under GNU General Public License 3.0
     9.5 -// see LICENSE.txt
     9.6 -
     9.7 -#ifndef CASE_AND_DOT_ADDRESS_TESTS_H
     9.8 -#define CASE_AND_DOT_ADDRESS_TESTS_H
     9.9 -
    9.10 -#include <string>
    9.11 -#include "EngineTestSessionSuite.h"
    9.12 -
    9.13 -using namespace std;
    9.14 -
    9.15 -class CaseAndDotAddressTests : public EngineTestSessionSuite {
    9.16 -    public:
    9.17 -        CaseAndDotAddressTests(string suitename, string test_home_dir);
    9.18 -    private:
    9.19 -        void check_case_and_dot_address();
    9.20 -};
    9.21 -
    9.22 -#endif
    10.1 --- a/test/include/CheckRenewedExpiredKeyTrustStatusTests.h	Sat Aug 31 15:40:25 2019 +0200
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,22 +0,0 @@
    10.4 -// This file is under GNU General Public License 3.0
    10.5 -// see LICENSE.txt
    10.6 -
    10.7 -#ifndef CHECK_RENEWED_EXPIRED_KEY_TRUST_STATUS_H
    10.8 -#define CHECK_RENEWED_EXPIRED_KEY_TRUST_STATUS_H
    10.9 -
   10.10 -#include <string>
   10.11 -#include "EngineTestIndividualSuite.h"
   10.12 -
   10.13 -using namespace std;
   10.14 -
   10.15 -class CheckRenewedExpiredKeyTrustStatusTests : public EngineTestIndividualSuite {
   10.16 -    public:
   10.17 -        CheckRenewedExpiredKeyTrustStatusTests(string test_suite, string test_home_dir);
   10.18 -    private:
   10.19 -        void check_renewed_expired_key_trust_status();
   10.20 -        void check_renewed_expired_key_trust_status_trusted_user();
   10.21 -        void check_renewed_expired_key_trust_status_pEp_user();
   10.22 -        void check_renewed_expired_key_trust_status_trusted_pEp_user();        
   10.23 -};
   10.24 -
   10.25 -#endif
    11.1 --- a/test/include/CrashdumpTests.h	Sat Aug 31 15:40:25 2019 +0200
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,19 +0,0 @@
    11.4 -// This file is under GNU General Public License 3.0
    11.5 -// see LICENSE.txt
    11.6 -
    11.7 -#ifndef CRASHDUMP_H
    11.8 -#define CRASHDUMP_H
    11.9 -
   11.10 -#include <string>
   11.11 -#include "EngineTestSessionSuite.h"
   11.12 -
   11.13 -using namespace std;
   11.14 -
   11.15 -class CrashdumpTests : public EngineTestSessionSuite {
   11.16 -    public:
   11.17 -        CrashdumpTests(string test_suite, string test_home_dir);
   11.18 -    private:
   11.19 -        void check_crashdump();
   11.20 -};
   11.21 -
   11.22 -#endif
    12.1 --- a/test/include/DecorateTests.h	Sat Aug 31 15:40:25 2019 +0200
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,19 +0,0 @@
    12.4 -// This file is under GNU General Public License 3.0
    12.5 -// see LICENSE.txt
    12.6 -
    12.7 -#ifndef DECORATE_TESTS_H
    12.8 -#define DECORATE_TESTS_H
    12.9 -
   12.10 -#include <string>
   12.11 -#include "EngineTestSessionSuite.h"
   12.12 -
   12.13 -using namespace std;
   12.14 -
   12.15 -class DecorateTests : public EngineTestSessionSuite {
   12.16 -    public:
   12.17 -        DecorateTests(string suitename, string test_home_dir);
   12.18 -    private:
   12.19 -        void check_decorate();
   12.20 -};
   12.21 -
   12.22 -#endif
    13.1 --- a/test/include/DecryptAttachPrivateKeyTrustedTests.h	Sat Aug 31 15:40:25 2019 +0200
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,19 +0,0 @@
    13.4 -// This file is under GNU General Public License 3.0
    13.5 -// see LICENSE.txt
    13.6 -
    13.7 -#ifndef DECRYPT_ATTACH_PRIVATE_KEY_TRUSTED_H
    13.8 -#define DECRYPT_ATTACH_PRIVATE_KEY_TRUSTED_H
    13.9 -
   13.10 -#include <string>
   13.11 -#include "EngineTestSessionSuite.h"
   13.12 -
   13.13 -using namespace std;
   13.14 -
   13.15 -class DecryptAttachPrivateKeyTrustedTests : public EngineTestSessionSuite {
   13.16 -    public:
   13.17 -        DecryptAttachPrivateKeyTrustedTests(string test_suite, string test_home_dir);
   13.18 -    private:
   13.19 -        void check_decrypt_attach_private_key_trusted();
   13.20 -};
   13.21 -
   13.22 -#endif
    14.1 --- a/test/include/DecryptAttachPrivateKeyUntrustedTests.h	Sat Aug 31 15:40:25 2019 +0200
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,19 +0,0 @@
    14.4 -// This file is under GNU General Public License 3.0
    14.5 -// see LICENSE.txt
    14.6 -
    14.7 -#ifndef DECRYPT_ATTACH_PRIVATE_KEY_UNTRUSTED_H
    14.8 -#define DECRYPT_ATTACH_PRIVATE_KEY_UNTRUSTED_H
    14.9 -
   14.10 -#include <string>
   14.11 -#include "EngineTestSessionSuite.h"
   14.12 -
   14.13 -using namespace std;
   14.14 -
   14.15 -class DecryptAttachPrivateKeyUntrustedTests : public EngineTestSessionSuite {
   14.16 -    public:
   14.17 -        DecryptAttachPrivateKeyUntrustedTests(string test_suite, string test_home_dir);
   14.18 -    private:
   14.19 -        void check_decrypt_attach_private_key_untrusted();
   14.20 -};
   14.21 -
   14.22 -#endif
    15.1 --- a/test/include/DeleteKeyTests.h	Sat Aug 31 15:40:25 2019 +0200
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,41 +0,0 @@
    15.4 -// This file is under GNU General Public License 3.0
    15.5 -// see LICENSE.txt
    15.6 -
    15.7 -#ifndef DELETE_KEY_H
    15.8 -#define DELETE_KEY_H
    15.9 -
   15.10 -#include <string>
   15.11 -#include "EngineTestIndividualSuite.h"
   15.12 -
   15.13 -using namespace std;
   15.14 -
   15.15 -class DeleteKeyTests : public EngineTestIndividualSuite {
   15.16 -    public:
   15.17 -        DeleteKeyTests(string test_suite, string test_home_dir);
   15.18 -
   15.19 -        static constexpr const char* alice_fpr = "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97";
   15.20 -        static constexpr const char* bob_fpr = "BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39";
   15.21 -        static constexpr const char* carol_fpr = "8DD4F5827B45839E9ACCA94687BDDFFB42A85A42";
   15.22 -        static constexpr const char* dave_fpr = "E8AC9779A2D13A15D8D55C84B049F489BB5BCCF6";
   15.23 -        static constexpr const char* erin_fpr = "1B0E197E8AE66277B8A024B9AEA69F509F8D7CBA";
   15.24 -        static constexpr const char* fenris_fpr = "0969FA229DF21C832A64A04711B1B9804F3D2900";
   15.25 -
   15.26 -        static const string alice_user_id;
   15.27 -        static const string bob_user_id;    
   15.28 -        static const string carol_user_id;
   15.29 -        static const string dave_user_id;
   15.30 -        static const string erin_user_id;
   15.31 -        static const string fenris_user_id;
   15.32 -
   15.33 -    private:
   15.34 -        void import_test_keys();
   15.35 -        
   15.36 -        void check_delete_single_pubkey();
   15.37 -        void check_delete_pub_priv_keypair();
   15.38 -        void check_delete_multiple_keys();
   15.39 -        void check_delete_all_keys();
   15.40 -        void check_delete_key_not_found();
   15.41 -        void check_delete_empty_keyring();        
   15.42 -};
   15.43 -
   15.44 -#endif
    16.1 --- a/test/include/EncryptAttachPrivateKeyTests.h	Sat Aug 31 15:40:25 2019 +0200
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,19 +0,0 @@
    16.4 -// This file is under GNU General Public License 3.0
    16.5 -// see LICENSE.txt
    16.6 -
    16.7 -#ifndef ENCRYPT_ATTACH_PRIVATE_KEY_H
    16.8 -#define ENCRYPT_ATTACH_PRIVATE_KEY_H
    16.9 -
   16.10 -#include <string>
   16.11 -#include "EngineTestSessionSuite.h"
   16.12 -
   16.13 -using namespace std;
   16.14 -
   16.15 -class EncryptAttachPrivateKeyTests : public EngineTestSessionSuite {
   16.16 -    public:
   16.17 -        EncryptAttachPrivateKeyTests(string test_suite, string test_home_dir);
   16.18 -    private:
   16.19 -        void check_encrypt_attach_private_key();
   16.20 -};
   16.21 -
   16.22 -#endif
    17.1 --- a/test/include/EncryptForIdentityTests.h	Sat Aug 31 15:40:25 2019 +0200
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,19 +0,0 @@
    17.4 -// This file is under GNU General Public License 3.0
    17.5 -// see LICENSE.txt
    17.6 -
    17.7 -#ifndef ENCRYPT_FOR_IDENTITY_H
    17.8 -#define ENCRYPT_FOR_IDENTITY_H
    17.9 -
   17.10 -#include <string>
   17.11 -#include "EngineTestSessionSuite.h"
   17.12 -
   17.13 -using namespace std;
   17.14 -
   17.15 -class EncryptForIdentityTests : public EngineTestSessionSuite {
   17.16 -    public:
   17.17 -        EncryptForIdentityTests(string test_suite, string test_home_dir);
   17.18 -    private:
   17.19 -        void check_encrypt_for_identity();
   17.20 -};
   17.21 -
   17.22 -#endif
    18.1 --- a/test/include/EncryptMissingPrivateKeyTests.h	Sat Aug 31 15:40:25 2019 +0200
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,21 +0,0 @@
    18.4 -// This file is under GNU General Public License 3.0
    18.5 -// see LICENSE.txt
    18.6 -
    18.7 -#ifndef ENCRYPT_MISSING_PRIVATE_KEY_H
    18.8 -#define ENCRYPT_MISSING_PRIVATE_KEY_H
    18.9 -
   18.10 -#include <string>
   18.11 -#include "EngineTestSessionSuite.h"
   18.12 -
   18.13 -using namespace std;
   18.14 -
   18.15 -class EncryptMissingPrivateKeyTests : public EngineTestSessionSuite {
   18.16 -    public:
   18.17 -        EncryptMissingPrivateKeyTests(string test_suite, string test_home_dir);
   18.18 -    protected:
   18.19 -        void setup();
   18.20 -    private:
   18.21 -        void check_encrypt_missing_private_key();
   18.22 -};
   18.23 -
   18.24 -#endif
    19.1 --- a/test/include/Engine358Tests.h	Sat Aug 31 15:40:25 2019 +0200
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,19 +0,0 @@
    19.4 -// This file is under GNU General Public License 3.0
    19.5 -// see LICENSE.txt
    19.6 -
    19.7 -#ifndef ENGINE358_H
    19.8 -#define ENGINE358_H
    19.9 -
   19.10 -#include <string>
   19.11 -#include "EngineTestIndividualSuite.h"
   19.12 -
   19.13 -using namespace std;
   19.14 -
   19.15 -class Engine358Tests : public EngineTestIndividualSuite {
   19.16 -    public:
   19.17 -        Engine358Tests(string test_suite, string test_home_dir);
   19.18 -    private:
   19.19 -        void check_engine358();
   19.20 -};
   19.21 -
   19.22 -#endif
    20.1 --- a/test/include/Engine463Tests.h	Sat Aug 31 15:40:25 2019 +0200
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,22 +0,0 @@
    20.4 -// This file is under GNU General Public License 3.0
    20.5 -// see LICENSE.txt
    20.6 -
    20.7 -#ifndef ENGINE463_H
    20.8 -#define ENGINE463_H
    20.9 -
   20.10 -#include <string>
   20.11 -#include "EngineTestIndividualSuite.h"
   20.12 -
   20.13 -using namespace std;
   20.14 -
   20.15 -class Engine463Tests : public EngineTestIndividualSuite {
   20.16 -    public:
   20.17 -        Engine463Tests(string test_suite, string test_home_dir);
   20.18 -    private:
   20.19 -        void check_engine_463_no_own_key();
   20.20 -        void check_engine_463_own_key();
   20.21 -        void check_engine_463_sender_expired_and_renewed();
   20.22 -	void check_engine_463_reply_recip_expired_and_renewed();
   20.23 -};
   20.24 -
   20.25 -#endif
    21.1 --- a/test/include/EngineTestIndividualSuite.h	Sat Aug 31 15:40:25 2019 +0200
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,21 +0,0 @@
    21.4 -#ifndef ENGINE_TEST_INDIVIDUAL_SUITE_H
    21.5 -#define ENGINE_TEST_INDIVIDUAL_SUITE_H
    21.6 -
    21.7 -#include <cpptest.h>
    21.8 -#include <cpptest-suite.h>
    21.9 -#include <cpptest-textoutput.h>
   21.10 -#include <string>
   21.11 -#include "pEpEngine.h"
   21.12 -#include "EngineTestSuite.h"
   21.13 -
   21.14 -using namespace std;
   21.15 -
   21.16 -class EngineTestIndividualSuite : public EngineTestSuite {
   21.17 -    public:
   21.18 -        EngineTestIndividualSuite(string suitename, string test_home_dir);
   21.19 -        virtual ~EngineTestIndividualSuite();
   21.20 -    protected:
   21.21 -        virtual void setup();
   21.22 -        virtual void tear_down();
   21.23 -};
   21.24 -#endif
    22.1 --- a/test/include/EngineTestSessionSuite.h	Sat Aug 31 15:40:25 2019 +0200
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,22 +0,0 @@
    22.4 -#ifndef ENGINE_TEST_SESSION_SUITE_H
    22.5 -#define ENGINE_TEST_SESSION_SUITE_H
    22.6 -
    22.7 -#include <cpptest.h>
    22.8 -#include <cpptest-suite.h>
    22.9 -#include <cpptest-textoutput.h>
   22.10 -#include <string>
   22.11 -#include "pEpEngine.h"
   22.12 -
   22.13 -#include "EngineTestSuite.h"
   22.14 -
   22.15 -using namespace std;
   22.16 -
   22.17 -class EngineTestSessionSuite : public EngineTestSuite {
   22.18 -    public:
   22.19 -        EngineTestSessionSuite(string suitename, string test_home_dir);
   22.20 -        virtual ~EngineTestSessionSuite();
   22.21 -        
   22.22 -        virtual void setup();
   22.23 -        virtual void tear_down();
   22.24 -};
   22.25 -#endif
    23.1 --- a/test/include/EngineTestSuite.h	Sat Aug 31 15:40:25 2019 +0200
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,63 +0,0 @@
    23.4 -#ifndef ENGINE_TEST_SUITE_H
    23.5 -#define ENGINE_TEST_SUITE_H
    23.6 -
    23.7 -#include <cpptest.h>
    23.8 -#include <string>
    23.9 -#include <map>
   23.10 -#include <vector>
   23.11 -#include <utility>
   23.12 -#include "pEpEngine.h"
   23.13 -
   23.14 -using namespace std;
   23.15 -
   23.16 -class EngineTestSuite : public Test::Suite {
   23.17 -    public:
   23.18 -        EngineTestSuite(string suitename, string test_home_dir);
   23.19 -        virtual ~EngineTestSuite();
   23.20 -        
   23.21 -        void add_test_to_suite(std::pair<std::string, void (Test::Suite::*)()> test_func);
   23.22 -        void output_test_header(const char* test_name);
   23.23 -        void output_test_footer(const char* test_name);
   23.24 -
   23.25 -    protected:
   23.26 -        PEP_SESSION session;
   23.27 -        string test_home;
   23.28 -        string real_home;
   23.29 -        string prev_pgp_home;
   23.30 -        string name;
   23.31 -        
   23.32 -        string current_test_name;
   23.33 -
   23.34 -        messageToSend_t cached_messageToSend;
   23.35 -        inject_sync_event_t cached_inject_sync_event;
   23.36 -
   23.37 -#define TEST_FAILED_MESSAGE_BUFSIZE 1000        
   23.38 -        char failed_msg_buf[TEST_FAILED_MESSAGE_BUFSIZE];
   23.39 -        
   23.40 -        std::map<std::string, void (Test::Suite::*)()> test_map;                
   23.41 -        
   23.42 -        string my_name;
   23.43 -        
   23.44 -        unsigned int number_of_tests;
   23.45 -        unsigned int on_test_number;
   23.46 -        
   23.47 -        string temp_test_home;
   23.48 -        
   23.49 -        virtual void setup();
   23.50 -        virtual void tear_down();
   23.51 -        
   23.52 -        void set_full_env();
   23.53 -        void set_full_env(const char* gpg_conf_copy_path, const char* gpg_agent_conf_file_copy_path, const char* db_conf_file_copy_path);
   23.54 -        void restore_full_env();
   23.55 -        void initialise_test_home();
   23.56 -        void set_my_name();    
   23.57 -	
   23.58 -        void copy_conf_file_to_test_dir(const char* dest_path, const char* conf_orig_path, const char* conf_dest_name);
   23.59 -        
   23.60 -        std::vector<std::pair<std::string, std::string>> gpgdir_fileadd_queue;
   23.61 -        std::vector<std::pair<std::string, std::string>> homedir_fileadd_queue;
   23.62 -        void add_file_to_gpg_dir_queue(std::string copy_from, std::string dst_fname);    
   23.63 -        void add_file_to_home_dir_queue(std::string copy_from, std::string dst_fname);
   23.64 -        void process_file_queue(std::string dirname, std::vector<std::pair<std::string, std::string>> file_queue);
   23.65 -};
   23.66 -#endif
    24.1 --- a/test/include/EnterLeaveDeviceGroupTests.h	Sat Aug 31 15:40:25 2019 +0200
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,34 +0,0 @@
    24.4 -// This file is under GNU General Public License 3.0
    24.5 -// see LICENSE.txt
    24.6 -
    24.7 -#ifndef ENTER_LEAVE_DEVICE_GROUP_H
    24.8 -#define ENTER_LEAVE_DEVICE_GROUP_H
    24.9 -
   24.10 -#include <string>
   24.11 -#include "EngineTestIndividualSuite.h"
   24.12 -
   24.13 -using namespace std;
   24.14 -
   24.15 -class EnterLeaveDeviceGroupTests : public EngineTestIndividualSuite {
   24.16 -    public:
   24.17 -        EnterLeaveDeviceGroupTests(string test_suite, string test_home_dir);
   24.18 -    private:
   24.19 -        void check_enter_device_group_no_own();    
   24.20 -        void check_enter_device_group_one_own_empty();    
   24.21 -        void check_enter_device_group_one_own_one();    
   24.22 -        void check_enter_device_group_one_reversed_by_many();    
   24.23 -        void check_enter_device_group_one_own_single_not_me();    
   24.24 -        void check_enter_device_group_one_own_single_many_w_not_me();    
   24.25 -        void check_enter_device_group_many_empty();    
   24.26 -        void check_enter_device_group_many_own_add_explicit();
   24.27 -        void check_enter_device_group_many_own_one();    
   24.28 -        void check_enter_device_group_many_own_many();    
   24.29 -        void check_enter_device_group_many_own_many_w_not_me();    
   24.30 -        void check_leave_device_group_empty();
   24.31 -        void check_leave_device_group_sole();
   24.32 -        void check_leave_device_group_one_in_one_out();
   24.33 -        void check_leave_device_group_three_in();
   24.34 -        void check_leave_device_group_two_in_one_out();
   24.35 -};
   24.36 -
   24.37 -#endif
    25.1 --- a/test/include/ExpiredSubkeyTests.h	Sat Aug 31 15:40:25 2019 +0200
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,22 +0,0 @@
    25.4 -// This file is under GNU General Public License 3.0
    25.5 -// see LICENSE.txt
    25.6 -
    25.7 -#ifndef EXPIRED_SUBKEY_H
    25.8 -#define EXPIRED_SUBKEY_H
    25.9 -
   25.10 -#include <string>
   25.11 -#include "EngineTestIndividualSuite.h"
   25.12 -
   25.13 -using namespace std;
   25.14 -
   25.15 -class ExpiredSubkeyTests : public EngineTestIndividualSuite {
   25.16 -    public:
   25.17 -        ExpiredSubkeyTests(string test_suite, string test_home_dir);
   25.18 -    private:
   25.19 -        void expired_subkey_with_valid_subkeys_and_main_key();
   25.20 -        void expired_subkey_with_valid_subkeys_expired_main();        
   25.21 -        void all_valid_with_leftover_expired_subkeys();         
   25.22 -        void no_valid_encryption_subkey();       
   25.23 -};
   25.24 -
   25.25 -#endif
    26.1 --- a/test/include/ExportKeyTests.h	Sat Aug 31 15:40:25 2019 +0200
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,22 +0,0 @@
    26.4 -// This file is under GNU General Public License 3.0
    26.5 -// see LICENSE.txt
    26.6 -
    26.7 -#ifndef EXPORT_KEY_H
    26.8 -#define EXPORT_KEY_H
    26.9 -
   26.10 -#include <string>
   26.11 -#include "EngineTestIndividualSuite.h"
   26.12 -
   26.13 -using namespace std;
   26.14 -
   26.15 -class ExportKeyTests : public EngineTestIndividualSuite {
   26.16 -    public:
   26.17 -        ExportKeyTests(string test_suite, string test_home_dir);
   26.18 -    private:
   26.19 -        void check_export_key_no_key();
   26.20 -        void check_export_key_pubkey();
   26.21 -        void check_export_key_secret_key();
   26.22 -        void check_export_key_no_secret_key();
   26.23 -};
   26.24 -
   26.25 -#endif
    27.1 --- a/test/include/ExternalRevokeTests.h	Sat Aug 31 15:40:25 2019 +0200
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,19 +0,0 @@
    27.4 -// This file is under GNU General Public License 3.0
    27.5 -// see LICENSE.txt
    27.6 -
    27.7 -#ifndef EXTERNAL_REVOKE_H
    27.8 -#define EXTERNAL_REVOKE_H
    27.9 -
   27.10 -#include <string>
   27.11 -#include "EngineTestSessionSuite.h"
   27.12 -
   27.13 -using namespace std;
   27.14 -
   27.15 -class ExternalRevokeTests : public EngineTestSessionSuite {
   27.16 -    public:
   27.17 -        ExternalRevokeTests(string test_suite, string test_home_dir);
   27.18 -    private:
   27.19 -        void check_external_revoke();
   27.20 -};
   27.21 -
   27.22 -#endif
    28.1 --- a/test/include/GetKeyRatingForUserTests.h	Sat Aug 31 15:40:25 2019 +0200
    28.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.3 @@ -1,19 +0,0 @@
    28.4 -// This file is under GNU General Public License 3.0
    28.5 -// see LICENSE.txt
    28.6 -
    28.7 -#ifndef GET_KEY_RATING_FOR_USER_H
    28.8 -#define GET_KEY_RATING_FOR_USER_H
    28.9 -
   28.10 -#include <string>
   28.11 -#include "EngineTestIndividualSuite.h"
   28.12 -
   28.13 -using namespace std;
   28.14 -
   28.15 -class GetKeyRatingForUserTests : public EngineTestIndividualSuite {
   28.16 -    public:
   28.17 -        GetKeyRatingForUserTests(string test_suite, string test_home_dir);
   28.18 -    private:
   28.19 -        void check_get_key_rating_for_user();
   28.20 -};
   28.21 -
   28.22 -#endif
    29.1 --- a/test/include/HeaderKeyImportTests.h	Sat Aug 31 15:40:25 2019 +0200
    29.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.3 @@ -1,61 +0,0 @@
    29.4 -// This file is under GNU General Public License 3.0
    29.5 -// see LICENSE.txt
    29.6 -
    29.7 -#ifndef HEADER_KEY_IMPORT_H
    29.8 -#define HEADER_KEY_IMPORT_H
    29.9 -
   29.10 -#include <string>
   29.11 -#include "EngineTestIndividualSuite.h"
   29.12 -
   29.13 -using namespace std;
   29.14 -
   29.15 -class HeaderKeyImportTests : public EngineTestIndividualSuite {
   29.16 -    public:
   29.17 -        HeaderKeyImportTests(string test_suite, string test_home_dir);
   29.18 -    private:
   29.19 -        void base_64_minimal_round();
   29.20 -        void base_64_minimal_padded_1();
   29.21 -        void base_64_minimal_padded_2();
   29.22 -        void base_64_minimal_unpadded_1();
   29.23 -        void base_64_minimal_unpadded_2();    
   29.24 -        void base_64_minimal_leading_whitespace_round();
   29.25 -        void base_64_minimal_leading_whitespace_padded_1();
   29.26 -        void base_64_minimal_leading_whitespace_padded_2();
   29.27 -        void base_64_minimal_leading_whitespace_unpadded_1();        
   29.28 -        void base_64_minimal_leading_whitespace_unpadded_2();
   29.29 -        void base_64_minimal_trailing_whitespace_round();
   29.30 -        void base_64_minimal_trailing_whitespace_padded_1();
   29.31 -        void base_64_minimal_trailing_whitespace_padded_2();
   29.32 -        void base_64_minimal_trailing_whitespace_unpadded_1();        
   29.33 -        void base_64_minimal_trailing_whitespace_unpadded_2();
   29.34 -        void base_64_minimal_internal_whitespace_round();
   29.35 -        void base_64_minimal_internal_whitespace_padded_1();
   29.36 -        void base_64_minimal_internal_whitespace_padded_2();
   29.37 -        void base_64_minimal_internal_whitespace_unpadded_1();        
   29.38 -        void base_64_minimal_internal_whitespace_unpadded_2();
   29.39 -        void base_64_round();
   29.40 -        void base_64_padded_1();
   29.41 -        void base_64_padded_2();
   29.42 -        void base_64_unpadded_1();        
   29.43 -        void base_64_unpadded_2();
   29.44 -        void base_64_leading_whitespace_round();
   29.45 -        void base_64_leading_whitespace_padded_1();
   29.46 -        void base_64_leading_whitespace_padded_2();
   29.47 -        void base_64_leading_whitespace_unpadded_1();        
   29.48 -        void base_64_leading_whitespace_unpadded_2();
   29.49 -        void base_64_trailing_whitespace_round();
   29.50 -        void base_64_trailing_whitespace_padded_1();
   29.51 -        void base_64_trailing_whitespace_padded_2();
   29.52 -        void base_64_trailing_whitespace_unpadded_1();        
   29.53 -        void base_64_trailing_whitespace_unpadded_2();
   29.54 -        void base_64_kitchen_sink_round();
   29.55 -        void base_64_kitchen_sink_padded_1();
   29.56 -        void base_64_kitchen_sink_padded_2();
   29.57 -        void base_64_kitchen_sink_unpadded_1();        
   29.58 -        void base_64_kitchen_sink_unpadded_2();
   29.59 -        void check_header_key_import();
   29.60 -        
   29.61 -        bool verify_base_64_test(const char* input, const char* desired_output);
   29.62 -};
   29.63 -
   29.64 -#endif
    30.1 --- a/test/include/I18nTests.h	Sat Aug 31 15:40:25 2019 +0200
    30.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.3 @@ -1,19 +0,0 @@
    30.4 -// This file is under GNU General Public License 3.0
    30.5 -// see LICENSE.txt
    30.6 -
    30.7 -#ifndef I18N_H
    30.8 -#define I18N_H
    30.9 -
   30.10 -#include <string>
   30.11 -#include "EngineTestSessionSuite.h"
   30.12 -
   30.13 -using namespace std;
   30.14 -
   30.15 -class I18nTests : public EngineTestSessionSuite {
   30.16 -    public:
   30.17 -        I18nTests(string test_suite, string test_home_dir);
   30.18 -    private:
   30.19 -        void check_i18n();
   30.20 -};
   30.21 -
   30.22 -#endif
    31.1 --- a/test/include/IOS1664Tests.h	Sat Aug 31 15:40:25 2019 +0200
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,19 +0,0 @@
    31.4 -// This file is under GNU General Public License 3.0
    31.5 -// see LICENSE.txt
    31.6 -
    31.7 -#ifndef I_O_S1664_H
    31.8 -#define I_O_S1664_H
    31.9 -
   31.10 -#include <string>
   31.11 -#include "EngineTestIndividualSuite.h"
   31.12 -
   31.13 -using namespace std;
   31.14 -
   31.15 -class IOS1664Tests : public EngineTestIndividualSuite {
   31.16 -    public:
   31.17 -        IOS1664Tests(string test_suite, string test_home_dir);
   31.18 -    private:
   31.19 -        void check_i_o_s1664();
   31.20 -};
   31.21 -
   31.22 -#endif
    32.1 --- a/test/include/IdentityListTests.h	Sat Aug 31 15:40:25 2019 +0200
    32.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.3 @@ -1,19 +0,0 @@
    32.4 -// This file is under GNU General Public License 3.0
    32.5 -// see LICENSE.txt
    32.6 -
    32.7 -#ifndef IDENTITY_LIST_H
    32.8 -#define IDENTITY_LIST_H
    32.9 -
   32.10 -#include <string>
   32.11 -#include "EngineTestSessionSuite.h"
   32.12 -
   32.13 -using namespace std;
   32.14 -
   32.15 -class IdentityListTests : public EngineTestSessionSuite {
   32.16 -    public:
   32.17 -        IdentityListTests(string test_suite, string test_home_dir);
   32.18 -    private:
   32.19 -        void check_identity_list();
   32.20 -};
   32.21 -
   32.22 -#endif
    33.1 --- a/test/include/IntegrityTests.h	Sat Aug 31 15:40:25 2019 +0200
    33.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.3 @@ -1,54 +0,0 @@
    33.4 -// This file is under GNU General Public License 3.0
    33.5 -// see LICENSE.txt
    33.6 -
    33.7 -#ifndef INTEGRITY_H
    33.8 -#define INTEGRITY_H
    33.9 -
   33.10 -#include <string>
   33.11 -#include "pEpEngine.h"
   33.12 -#include "message_api.h"
   33.13 -
   33.14 -#include "EngineTestIndividualSuite.h"
   33.15 -
   33.16 -using namespace std;
   33.17 -
   33.18 -class IntegrityTests : public EngineTestIndividualSuite {
   33.19 -    public:
   33.20 -        IntegrityTests(string test_suite, string test_home_dir);
   33.21 -        
   33.22 -    protected:
   33.23 -        void setup();
   33.24 -        void tear_down();
   33.25 -            
   33.26 -    private:
   33.27 -        const char* recip_fpr;
   33.28 -
   33.29 -        // used by each test
   33.30 -        string message;
   33.31 -        char* decrypted_msg;
   33.32 -        PEP_STATUS decrypt_status;
   33.33 -        PEP_rating rating;
   33.34 -        PEP_decrypt_flags_t flags;
   33.35 -        stringlist_t* keylist;
   33.36 -        char* dummy_ignore;
   33.37 -        
   33.38 -        void check_unsigned_PGP_MIME();
   33.39 -        void check_unsigned_PGP_MIME_attached_key();
   33.40 -        void check_unsigned_PGP_MIME_w_render_flag();
   33.41 -        void check_known_good_signed_PGP_MIME();
   33.42 -        void check_known_good_signed_PGP_MIME_attached_key();
   33.43 -        void check_unknown_signed_PGP_MIME_no_key();
   33.44 -        void check_unknown_signed_PGP_MIME_attached_key();
   33.45 -        void check_unsigned_PGP_MIME_corrupted();
   33.46 -        void check_signed_PGP_MIME_corrupted();
   33.47 -        void check_unsigned_2_0();
   33.48 -        void check_unknown_signed_2_0_no_key();
   33.49 -        void check_unknown_signed_2_0_no_key_known_signer();
   33.50 -        void check_unknown_signed_2_0_key_attached();
   33.51 -
   33.52 -        void check_integrity();
   33.53 -        
   33.54 -
   33.55 -};
   33.56 -
   33.57 -#endif
    34.1 --- a/test/include/KeyAttachmentTests.h	Sat Aug 31 15:40:25 2019 +0200
    34.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.3 @@ -1,38 +0,0 @@
    34.4 -// This file is under GNU General Public License 3.0
    34.5 -// see LICENSE.txt
    34.6 -
    34.7 -#ifndef KEY_ATTACHMENT_H
    34.8 -#define KEY_ATTACHMENT_H
    34.9 -
   34.10 -#include <string>
   34.11 -#include "EngineTestIndividualSuite.h"
   34.12 -
   34.13 -using namespace std;
   34.14 -
   34.15 -class KeyAttachmentTests : public EngineTestIndividualSuite {
   34.16 -    public:
   34.17 -        KeyAttachmentTests(string test_suite, string test_home_dir);
   34.18 -    protected:
   34.19 -        void setup();        
   34.20 -    private:
   34.21 -        void check_key_attach_inline();
   34.22 -        void check_key_plus_encr_att_inline();
   34.23 -        void check_encr_att_plus_key_inline();
   34.24 -        void check_key_plus_unencr_att_inline(); // not really unencrypted; just not encrypted before attachment
   34.25 -        void check_unencr_att_plus_key_inline(); // not really unencrypted; just not encrypted before attachment
   34.26 -        void check_many_keys_inline();        
   34.27 -        void check_many_keys_w_encr_file_inline();        
   34.28 -        void check_many_keys_w_unencr_file_inline(); // not really unencrypted; just not encrypted before attachment
   34.29 -        void check_many_keys_with_many_files_inline();
   34.30 -        void check_key_attach_OpenPGP();
   34.31 -        void check_key_plus_encr_att_OpenPGP();
   34.32 -        void check_encr_att_plus_key_OpenPGP();
   34.33 -        void check_key_plus_unencr_att_OpenPGP(); 
   34.34 -        void check_unencr_att_plus_key_OpenPGP(); 
   34.35 -        void check_many_keys_OpenPGP();        
   34.36 -        void check_many_keys_w_encr_file_OpenPGP();        
   34.37 -        void check_many_keys_w_unencr_file_OpenPGP();         
   34.38 -        void check_many_keys_w_many_files_OpenPGP();
   34.39 -};
   34.40 -
   34.41 -#endif
    35.1 --- a/test/include/KeyResetMessageTests.h	Sat Aug 31 15:40:25 2019 +0200
    35.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.3 @@ -1,70 +0,0 @@
    35.4 -// This file is under GNU General Public License 3.0
    35.5 -// see LICENSE.txt
    35.6 -
    35.7 -#ifndef KEY_RESET_MESSAGE_H
    35.8 -#define KEY_RESET_MESSAGE_H
    35.9 -
   35.10 -#include <string>
   35.11 -#include "EngineTestIndividualSuite.h"
   35.12 -#include "pEpEngine.h"
   35.13 -#include "message.h"
   35.14 -
   35.15 -using namespace std;
   35.16 -
   35.17 -class KeyResetMessageTests : public EngineTestIndividualSuite {
   35.18 -    public:
   35.19 -        KeyResetMessageTests(string test_suite, string test_home_dir);
   35.20 -        
   35.21 -        static PEP_STATUS message_send_callback(message *msg);
   35.22 -        
   35.23 -        static KeyResetMessageTests* fake_this;
   35.24 -        
   35.25 -        vector<message*> m_queue;
   35.26 -        
   35.27 -        static constexpr const char* alice_fpr = "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97";
   35.28 -        static constexpr const char* bob_fpr = "BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39";
   35.29 -        
   35.30 -        static constexpr const char* alice_receive_reset_fpr = "6A349E4F68801E39145CD4C5712616A385412538";
   35.31 -
   35.32 -        static const string alice_user_id;
   35.33 -        static const string bob_user_id;    
   35.34 -        static const string carol_user_id;
   35.35 -        static const string dave_user_id;
   35.36 -        static const string erin_user_id;
   35.37 -        static const string fenris_user_id;
   35.38 -
   35.39 -    protected:
   35.40 -        void setup();
   35.41 -                
   35.42 -    private:
   35.43 -        void check_key_reset_message();        
   35.44 -        void check_reset_key_and_notify();
   35.45 -        void check_non_reset_receive_revoked();
   35.46 -        void check_reset_receive_revoked();
   35.47 -        void check_receive_message_to_revoked_key_from_unknown();   
   35.48 -        void check_receive_message_to_revoked_key_from_contact();   
   35.49 -        void check_multiple_resets_single_key();
   35.50 -        void check_reset_ident_uid_only();
   35.51 -        void check_reset_ident_address_only();
   35.52 -        void check_reset_ident_null_ident();
   35.53 -        void check_reset_ident_other_pub_fpr();
   35.54 -        void check_reset_ident_other_priv_fpr();
   35.55 -        void check_reset_ident_other_pub_no_fpr();
   35.56 -        void check_reset_ident_other_priv_no_fpr();
   35.57 -        void check_reset_ident_own_pub_fpr();
   35.58 -        void check_reset_ident_own_priv_fpr();
   35.59 -        void check_reset_ident_own_priv_no_fpr();
   35.60 -        void check_reset_user_other_no_fpr();
   35.61 -        void check_reset_user_other_fpr();
   35.62 -        void check_reset_user_own_fpr();
   35.63 -        void check_reset_user_no_fpr();
   35.64 -        void check_reset_all_own_keys();
   35.65 -        void check_reset_all_own_no_own();
   35.66 -
   35.67 -        void send_setup();
   35.68 -        void receive_setup();     
   35.69 -        void create_msg_for_revoked_key();
   35.70 -        
   35.71 -};
   35.72 -
   35.73 -#endif
    36.1 --- a/test/include/KeyeditTests.h	Sat Aug 31 15:40:25 2019 +0200
    36.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.3 @@ -1,19 +0,0 @@
    36.4 -// This file is under GNU General Public License 3.0
    36.5 -// see LICENSE.txt
    36.6 -
    36.7 -#ifndef KEYEDIT_H
    36.8 -#define KEYEDIT_H
    36.9 -
   36.10 -#include <string>
   36.11 -#include "EngineTestSessionSuite.h"
   36.12 -
   36.13 -using namespace std;
   36.14 -
   36.15 -class KeyeditTests : public EngineTestSessionSuite {
   36.16 -    public:
   36.17 -        KeyeditTests(string test_suite, string test_home_dir);
   36.18 -    private:
   36.19 -        void check_keyedit();
   36.20 -};
   36.21 -
   36.22 -#endif
    37.1 --- a/test/include/KeyringImportTests.h	Sat Aug 31 15:40:25 2019 +0200
    37.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.3 @@ -1,23 +0,0 @@
    37.4 -// This file is under GNU General Public License 3.0
    37.5 -// see LICENSE.txt
    37.6 -
    37.7 -#ifndef KEYRING_IMPORT_TESTS_H
    37.8 -#define KEYRING_IMPORT_TESTS_H
    37.9 -
   37.10 -#include <string>
   37.11 -#include "EngineTestSessionSuite.h"
   37.12 -
   37.13 -using namespace std;
   37.14 -
   37.15 -class KeyringImportTests : public EngineTestSessionSuite {
   37.16 -    public:
   37.17 -        KeyringImportTests(string test_suite, string test_home_dir);
   37.18 -	protected:
   37.19 -        void setup();
   37.20 -        void tear_down();
   37.21 -    private:
   37.22 -        void import1();
   37.23 -        void import2();
   37.24 -};
   37.25 -
   37.26 -#endif
    38.1 --- a/test/include/LeastColorGroupTests.h	Sat Aug 31 15:40:25 2019 +0200
    38.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.3 @@ -1,19 +0,0 @@
    38.4 -// This file is under GNU General Public License 3.0
    38.5 -// see LICENSE.txt
    38.6 -
    38.7 -#ifndef LEAST_COLOR_GROUP_H
    38.8 -#define LEAST_COLOR_GROUP_H
    38.9 -
   38.10 -#include <string>
   38.11 -#include "EngineTestSessionSuite.h"
   38.12 -
   38.13 -using namespace std;
   38.14 -
   38.15 -class LeastColorGroupTests : public EngineTestSessionSuite {
   38.16 -    public:
   38.17 -        LeastColorGroupTests(string test_suite, string test_home_dir);
   38.18 -    private:
   38.19 -        void check_least_color_group();
   38.20 -};
   38.21 -
   38.22 -#endif
    39.1 --- a/test/include/LeastCommonDenomColorTests.h	Sat Aug 31 15:40:25 2019 +0200
    39.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.3 @@ -1,19 +0,0 @@
    39.4 -// This file is under GNU General Public License 3.0
    39.5 -// see LICENSE.txt
    39.6 -
    39.7 -#ifndef LEAST_COMMON_DENOM_COLOR_H
    39.8 -#define LEAST_COMMON_DENOM_COLOR_H
    39.9 -
   39.10 -#include <string>
   39.11 -#include "EngineTestIndividualSuite.h"
   39.12 -
   39.13 -using namespace std;
   39.14 -
   39.15 -class LeastCommonDenomColorTests : public EngineTestIndividualSuite {
   39.16 -    public:
   39.17 -        LeastCommonDenomColorTests(string test_suite, string test_home_dir);
   39.18 -    private:
   39.19 -        void check_least_common_denom_color();
   39.20 -};
   39.21 -
   39.22 -#endif
    40.1 --- a/test/include/LiteralFilenameTests.h	Sat Aug 31 15:40:25 2019 +0200
    40.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.3 @@ -1,19 +0,0 @@
    40.4 -// This file is under GNU General Public License 3.0
    40.5 -// see LICENSE.txt
    40.6 -
    40.7 -#ifndef LITERAL_FILENAME_H
    40.8 -#define LITERAL_FILENAME_H
    40.9 -
   40.10 -#include <string>
   40.11 -#include "EngineTestIndividualSuite.h"
   40.12 -
   40.13 -using namespace std;
   40.14 -
   40.15 -class LiteralFilenameTests : public EngineTestIndividualSuite {
   40.16 -    public:
   40.17 -        LiteralFilenameTests(string test_suite, string test_home_dir);
   40.18 -    private:
   40.19 -        void check();
   40.20 -};
   40.21 -
   40.22 -#endif
    41.1 --- a/test/include/LookupTests.h	Sat Aug 31 15:40:25 2019 +0200
    41.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.3 @@ -1,22 +0,0 @@
    41.4 -// This file is under GNU General Public License 3.0
    41.5 -// see LICENSE.txt
    41.6 -
    41.7 -#ifndef LOOKUP_H
    41.8 -#define LOOKUP_H
    41.9 -
   41.10 -#include <string>
   41.11 -#include "EngineTestSessionSuite.h"
   41.12 -
   41.13 -using namespace std;
   41.14 -
   41.15 -class LookupTests : public EngineTestSessionSuite {
   41.16 -    public:
   41.17 -        LookupTests(string test_suite, string test_home_dir);
   41.18 -	protected:
   41.19 -        void setup();
   41.20 -        void tear_down();
   41.21 -    private:
   41.22 -        void lookup();
   41.23 -};
   41.24 -
   41.25 -#endif
    42.1 --- a/test/include/LotsOfKeysTests.h	Sat Aug 31 15:40:25 2019 +0200
    42.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.3 @@ -1,19 +0,0 @@
    42.4 -// This file is under GNU General Public License 3.0
    42.5 -// see LICENSE.txt
    42.6 -
    42.7 -#ifndef LOTS_OF_KEYS_H
    42.8 -#define LOTS_OF_KEYS_H
    42.9 -
   42.10 -#include <string>
   42.11 -#include "EngineTestIndividualSuite.h"
   42.12 -
   42.13 -using namespace std;
   42.14 -
   42.15 -class LotsOfKeysTests : public EngineTestIndividualSuite {
   42.16 -    public:
   42.17 -        LotsOfKeysTests(string test_suite, string test_home_dir);
   42.18 -    private:
   42.19 -        void check();
   42.20 -};
   42.21 -
   42.22 -#endif
    43.1 --- a/test/include/MapAsn1Tests.h	Sat Aug 31 15:40:25 2019 +0200
    43.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.3 @@ -1,19 +0,0 @@
    43.4 -// This file is under GNU General Public License 3.0
    43.5 -// see LICENSE.txt
    43.6 -
    43.7 -#ifndef MAP_ASN1_H
    43.8 -#define MAP_ASN1_H
    43.9 -
   43.10 -#include <string>
   43.11 -#include "EngineTestSessionSuite.h"
   43.12 -
   43.13 -using namespace std;
   43.14 -
   43.15 -class MapAsn1Tests : public EngineTestSessionSuite {
   43.16 -    public:
   43.17 -        MapAsn1Tests(string test_suite, string test_home_dir);
   43.18 -    private:
   43.19 -        void check_map_asn1();
   43.20 -};
   43.21 -
   43.22 -#endif
    44.1 --- a/test/include/Message2_0Tests.h	Sat Aug 31 15:40:25 2019 +0200
    44.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.3 @@ -1,19 +0,0 @@
    44.4 -// This file is under GNU General Public License 3.0
    44.5 -// see LICENSE.txt
    44.6 -
    44.7 -#ifndef MESSAGE2_0_H
    44.8 -#define MESSAGE2_0_H
    44.9 -
   44.10 -#include <string>
   44.11 -#include "EngineTestSessionSuite.h"
   44.12 -
   44.13 -using namespace std;
   44.14 -
   44.15 -class Message2_0Tests : public EngineTestSessionSuite {
   44.16 -    public:
   44.17 -        Message2_0Tests(string test_suite, string test_home_dir);
   44.18 -    private:
   44.19 -        void check_message2_0();
   44.20 -};
   44.21 -
   44.22 -#endif
    45.1 --- a/test/include/Message2_1Tests.h	Sat Aug 31 15:40:25 2019 +0200
    45.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.3 @@ -1,28 +0,0 @@
    45.4 -// This file is under GNU General Public License 3.0
    45.5 -// see LICENSE.txt
    45.6 -
    45.7 -#ifndef MESSAGE2_1_H
    45.8 -#define MESSAGE2_1_H
    45.9 -
   45.10 -#include <string>
   45.11 -#include "EngineTestIndividualSuite.h"
   45.12 -
   45.13 -using namespace std;
   45.14 -
   45.15 -class Message2_1Tests : public EngineTestIndividualSuite {
   45.16 -    public:
   45.17 -        Message2_1Tests(string test_suite, string test_home_dir);
   45.18 -    private:
   45.19 -        bool verify_message_version_produced(message* enc_msg, unsigned int* maj_inout, unsigned int* min_inout);
   45.20 -        
   45.21 -        void check_message2_1_recip_2_0();
   45.22 -        void check_message2_1_recip_OpenPGP();
   45.23 -        void check_message2_1_recip_2_1();
   45.24 -        void check_message2_1_recip_1_0_from_msg_OpenPGP();
   45.25 -        void check_message2_1_recip_2_0_from_msg();
   45.26 -        void check_message2_1_recip_2_1_from_msg();
   45.27 -        void check_message2_1_recip_mixed_2_0();
   45.28 -        void check_message2_1_recip_mixed_1_0_OpenPGP();
   45.29 -};
   45.30 -
   45.31 -#endif
    46.1 --- a/test/include/MessageApiTests.h	Sat Aug 31 15:40:25 2019 +0200
    46.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.3 @@ -1,19 +0,0 @@
    46.4 -// This file is under GNU General Public License 3.0
    46.5 -// see LICENSE.txt
    46.6 -
    46.7 -#ifndef MESSAGE_API_H
    46.8 -#define MESSAGE_API_H
    46.9 -
   46.10 -#include <string>
   46.11 -#include "EngineTestSessionSuite.h"
   46.12 -
   46.13 -using namespace std;
   46.14 -
   46.15 -class MessageApiTests : public EngineTestSessionSuite {
   46.16 -    public:
   46.17 -        MessageApiTests(string test_suite, string test_home_dir);
   46.18 -    private:
   46.19 -        void check_message_api();
   46.20 -};
   46.21 -
   46.22 -#endif
    47.1 --- a/test/include/MessageNullFromTests.h	Sat Aug 31 15:40:25 2019 +0200
    47.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.3 @@ -1,26 +0,0 @@
    47.4 -// This file is under GNU General Public License 3.0
    47.5 -// see LICENSE.txt
    47.6 -
    47.7 -#ifndef MESSAGE_NULL_FROM_H
    47.8 -#define MESSAGE_NULL_FROM_H
    47.9 -
   47.10 -#include <string>
   47.11 -#include "EngineTestIndividualSuite.h"
   47.12 -
   47.13 -using namespace std;
   47.14 -
   47.15 -class MessageNullFromTests : public EngineTestIndividualSuite {
   47.16 -    public:
   47.17 -        MessageNullFromTests(string test_suite, string test_home_dir);
   47.18 -    protected:
   47.19 -        void setup();
   47.20 -    private:
   47.21 -        void check_message_null_from_no_header_key_unencrypted();
   47.22 -        void check_message_null_from_header_key_unencrypted();
   47.23 -        void check_message_null_from_encrypted_not_signed();
   47.24 -        void check_message_null_from_encrypted_and_signed(); 
   47.25 -        void import_bob_pair_and_set_own();
   47.26 -        void import_alice_pub();
   47.27 -};
   47.28 -
   47.29 -#endif
    48.1 --- a/test/include/MessageTwoPointOhTests.h	Sat Aug 31 15:40:25 2019 +0200
    48.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.3 @@ -1,19 +0,0 @@
    48.4 -// This file is under GNU General Public License 3.0
    48.5 -// see LICENSE.txt
    48.6 -
    48.7 -#ifndef MESSAGE_TWO_POINT_OH_H
    48.8 -#define MESSAGE_TWO_POINT_OH_H
    48.9 -
   48.10 -#include <string>
   48.11 -#include "EngineTestSessionSuite.h"
   48.12 -
   48.13 -using namespace std;
   48.14 -
   48.15 -class MessageTwoPointOhTests : public EngineTestSessionSuite {
   48.16 -    public:
   48.17 -        MessageTwoPointOhTests(string test_suite, string test_home_dir);
   48.18 -    private:
   48.19 -        void check_message_two_point_oh();
   48.20 -};
   48.21 -
   48.22 -#endif
    49.1 --- a/test/include/MimeTests.h	Sat Aug 31 15:40:25 2019 +0200
    49.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.3 @@ -1,19 +0,0 @@
    49.4 -// This file is under GNU General Public License 3.0
    49.5 -// see LICENSE.txt
    49.6 -
    49.7 -#ifndef MIME_H
    49.8 -#define MIME_H
    49.9 -
   49.10 -#include <string>
   49.11 -#include "EngineTestSessionSuite.h"
   49.12 -
   49.13 -using namespace std;
   49.14 -
   49.15 -class MimeTests : public EngineTestSessionSuite {
   49.16 -    public:
   49.17 -        MimeTests(string test_suite, string test_home_dir);
   49.18 -    private:
   49.19 -        void check_mime();
   49.20 -};
   49.21 -
   49.22 -#endif
    50.1 --- a/test/include/NewUpdateIdAndMyselfTests.h	Sat Aug 31 15:40:25 2019 +0200
    50.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.3 @@ -1,51 +0,0 @@
    50.4 -// This file is under GNU General Public License 3.0
    50.5 -// see LICENSE.txt
    50.6 -
    50.7 -#ifndef NEW_UPDATE_ID_AND_MYSELF_H
    50.8 -#define NEW_UPDATE_ID_AND_MYSELF_H
    50.9 -
   50.10 -#include <string>
   50.11 -#include "EngineTestSessionSuite.h"
   50.12 -
   50.13 -using namespace std;
   50.14 -
   50.15 -class NewUpdateIdAndMyselfTests : public EngineTestSessionSuite {
   50.16 -    public:
   50.17 -        NewUpdateIdAndMyselfTests(string test_suite, string test_home_dir);
   50.18 -	protected:
   50.19 -		char* uniqname;
   50.20 -		char* own_user_id;
   50.21 -		char* start_username;
   50.22 -		char* generated_fpr;
   50.23 -		char* default_own_id;
   50.24 -		char* alias_id;
   50.25 -        char* new_fpr;
   50.26 -        const char* alex_address;
   50.27 -        const char* alex_fpr;
   50.28 -        const char* alex_userid;
   50.29 -        const char* alex_username;
   50.30 -        const char* new_username;
   50.31 -    
   50.32 -        void setup();
   50.33 -        void tear_down();
   50.34 -    private:
   50.35 -        void myself_no_record_no_input_fpr();
   50.36 -        void myself_no_input_fpr_w_record();
   50.37 -        void myself_no_input_fpr_diff_user_id_w_record();
   50.38 -        void myself_replace_fpr();
   50.39 -        void myself_replace_fpr_revoke_key();
   50.40 -        void update_identity_w_matching_address_user_id_username();
   50.41 -        void update_identity_w_matching_address_user_id_new_username();
   50.42 -        void update_identity_w_matching_address_user_id_only();
   50.43 -        void update_identity_use_address_username_only();
   50.44 -        void update_identity_use_address_only();
   50.45 -        void update_identity_use_address_only_on_own_ident();
   50.46 -        void update_identity_non_existent_user_id_address();
   50.47 -        void update_identity_address_username_userid_no_record();
   50.48 -        void update_identity_address_username_no_record();
   50.49 -        void update_identity_address_only_multiple_records();
   50.50 -        void key_elect_expired_key();
   50.51 -        void key_elect_only_revoked_mistrusted();
   50.52 -};
   50.53 -
   50.54 -#endif
    51.1 --- a/test/include/NoOwnIdentWritesOnDecryptTests.h	Sat Aug 31 15:40:25 2019 +0200
    51.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.3 @@ -1,25 +0,0 @@
    51.4 -// This file is under GNU General Public License 3.0
    51.5 -// see LICENSE.txt
    51.6 -
    51.7 -#ifndef NO_OWN_IDENT_WRITES_ON_DECRYPT_H
    51.8 -#define NO_OWN_IDENT_WRITES_ON_DECRYPT_H
    51.9 -
   51.10 -#include <string>
   51.11 -#include "EngineTestIndividualSuite.h"
   51.12 -#include "pEpEngine.h"
   51.13 -#include "message.h"
   51.14 -
   51.15 -using namespace std;
   51.16 -
   51.17 -class NoOwnIdentWritesOnDecryptTests : public EngineTestIndividualSuite {
   51.18 -    public:
   51.19 -        NoOwnIdentWritesOnDecryptTests(string test_suite, string test_home_dir);
   51.20 -        ~NoOwnIdentWritesOnDecryptTests();
   51.21 -        message* _to_decrypt;
   51.22 -    private:
   51.23 -        void check_no_own_ident_writes_on_decrypt();        
   51.24 -        void check_address_only_no_overwrite();
   51.25 -        void check_full_info_no_overwrite();
   51.26 -};
   51.27 -
   51.28 -#endif
    52.1 --- a/test/include/OwnIdentitiesRetrieveTests.h	Sat Aug 31 15:40:25 2019 +0200
    52.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.3 @@ -1,19 +0,0 @@
    52.4 -// This file is under GNU General Public License 3.0
    52.5 -// see LICENSE.txt
    52.6 -
    52.7 -#ifndef OWN_IDENTITIES_RETRIEVE_H
    52.8 -#define OWN_IDENTITIES_RETRIEVE_H
    52.9 -
   52.10 -#include <string>
   52.11 -#include "EngineTestIndividualSuite.h"
   52.12 -
   52.13 -using namespace std;
   52.14 -
   52.15 -class OwnIdentitiesRetrieveTests : public EngineTestIndividualSuite {
   52.16 -    public:
   52.17 -        OwnIdentitiesRetrieveTests(string test_suite, string test_home_dir);
   52.18 -    private:
   52.19 -        void check_own_identities_retrieve();
   52.20 -};
   52.21 -
   52.22 -#endif
    53.1 --- a/test/include/OwnKeysRetrieveTests.h	Sat Aug 31 15:40:25 2019 +0200
    53.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.3 @@ -1,25 +0,0 @@
    53.4 -// This file is under GNU General Public License 3.0
    53.5 -// see LICENSE.txt
    53.6 -
    53.7 -#ifndef OWN_KEYS_RETRIEVE_H
    53.8 -#define OWN_KEYS_RETRIEVE_H
    53.9 -
   53.10 -#include <string>
   53.11 -#include "EngineTestIndividualSuite.h"
   53.12 -
   53.13 -using namespace std;
   53.14 -
   53.15 -class OwnKeysRetrieveTests : public EngineTestIndividualSuite {
   53.16 -    public:
   53.17 -        OwnKeysRetrieveTests(string test_suite, string test_home_dir);
   53.18 -    private:
   53.19 -        void check_own_keys_retrieve_single_private();
   53.20 -        void check_own_keys_retrieve_single_private_single_pub();
   53.21 -        void check_own_keys_retrieve_multiple_private();
   53.22 -        void check_own_keys_retrieve_multiple_private_and_pub();
   53.23 -        void check_own_keys_retrieve_multi_pub_only();
   53.24 -        void check_own_keys_retrieve_no_own();
   53.25 -        void check_own_keys_retrieve_multi_idents_one_key();
   53.26 -        void check_own_keys_retrieve_multi_idents_one_priv_key_multi_pub();
   53.27 -};
   53.28 -#endif
    54.1 --- a/test/include/PepSubjectReceivedTests.h	Sat Aug 31 15:40:25 2019 +0200
    54.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.3 @@ -1,19 +0,0 @@
    54.4 -// This file is under GNU General Public License 3.0
    54.5 -// see LICENSE.txt
    54.6 -
    54.7 -#ifndef PEP_SUBJECT_RECEIVED_H
    54.8 -#define PEP_SUBJECT_RECEIVED_H
    54.9 -
   54.10 -#include <string>
   54.11 -#include "EngineTestSessionSuite.h"
   54.12 -
   54.13 -using namespace std;
   54.14 -
   54.15 -class PepSubjectReceivedTests : public EngineTestSessionSuite {
   54.16 -    public:
   54.17 -        PepSubjectReceivedTests(string test_suite, string test_home_dir);
   54.18 -    private:
   54.19 -        void check_pep_subject_received();
   54.20 -};
   54.21 -
   54.22 -#endif
    55.1 --- a/test/include/PgpBinaryTests.h	Sat Aug 31 15:40:25 2019 +0200
    55.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.3 @@ -1,19 +0,0 @@
    55.4 -// This file is under GNU General Public License 3.0
    55.5 -// see LICENSE.txt
    55.6 -
    55.7 -#ifndef PGP_BINARY_H
    55.8 -#define PGP_BINARY_H
    55.9 -
   55.10 -#include <string>
   55.11 -#include "EngineTestSessionSuite.h"
   55.12 -
   55.13 -using namespace std;
   55.14 -
   55.15 -class PgpBinaryTests : public EngineTestSessionSuite {
   55.16 -    public:
   55.17 -        PgpBinaryTests(string test_suite, string test_home_dir);
   55.18 -    private:
   55.19 -        void check_pgp_binary();
   55.20 -};
   55.21 -
   55.22 -#endif
    56.1 --- a/test/include/PgpListKeysTests.h	Sat Aug 31 15:40:25 2019 +0200
    56.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.3 @@ -1,19 +0,0 @@
    56.4 -// This file is under GNU General Public License 3.0
    56.5 -// see LICENSE.txt
    56.6 -
    56.7 -#ifndef PGP_LIST_KEYS_H
    56.8 -#define PGP_LIST_KEYS_H
    56.9 -
   56.10 -#include <string>
   56.11 -#include "EngineTestSessionSuite.h"
   56.12 -
   56.13 -using namespace std;
   56.14 -
   56.15 -class PgpListKeysTests : public EngineTestSessionSuite {
   56.16 -    public:
   56.17 -        PgpListKeysTests(string test_suite, string test_home_dir);
   56.18 -    private:
   56.19 -        void check_pgp_list_keys();
   56.20 -};
   56.21 -
   56.22 -#endif
    57.1 --- a/test/include/ReencryptPlusExtraKeysTests.h	Sat Aug 31 15:40:25 2019 +0200
    57.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.3 @@ -1,20 +0,0 @@
    57.4 -// This file is under GNU General Public License 3.0
    57.5 -// see LICENSE.txt
    57.6 -
    57.7 -#ifndef REENCRYPT_PLUS_EXTRA_KEYS_H
    57.8 -#define REENCRYPT_PLUS_EXTRA_KEYS_H
    57.9 -
   57.10 -#include <string>
   57.11 -#include "EngineTestSessionSuite.h"
   57.12 -
   57.13 -using namespace std;
   57.14 -
   57.15 -class ReencryptPlusExtraKeysTests : public EngineTestSessionSuite {
   57.16 -    public:
   57.17 -        ReencryptPlusExtraKeysTests(string test_suite, string test_home_dir);
   57.18 -    private:
   57.19 -        void check_reencrypt_plus_extra_keys();
   57.20 -        void check_efficient_reencrypt();
   57.21 -};
   57.22 -
   57.23 -#endif
    58.1 --- a/test/include/RevocationTests.h	Sat Aug 31 15:40:25 2019 +0200
    58.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.3 @@ -1,22 +0,0 @@
    58.4 -// This file is under GNU General Public License 3.0
    58.5 -// see LICENSE.txt
    58.6 -
    58.7 -#ifndef REVOCATION_H
    58.8 -#define REVOCATION_H
    58.9 -
   58.10 -#include <string>
   58.11 -#include "EngineTestSessionSuite.h"
   58.12 -
   58.13 -using namespace std;
   58.14 -
   58.15 -class RevocationTests : public EngineTestSessionSuite {
   58.16 -    public:
   58.17 -        RevocationTests(string test_suite, string test_home_dir);
   58.18 -	protected:
   58.19 -        void setup();
   58.20 -        void tear_down();
   58.21 -    private:
   58.22 -        void revocation();
   58.23 -};
   58.24 -
   58.25 -#endif
    59.1 --- a/test/include/RevokeRegenAttachTests.h	Sat Aug 31 15:40:25 2019 +0200
    59.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.3 @@ -1,21 +0,0 @@
    59.4 -// This file is under GNU General Public License 3.0
    59.5 -// see LICENSE.txt
    59.6 -
    59.7 -#ifndef REVOKE_REGEN_ATTACH_H
    59.8 -#define REVOKE_REGEN_ATTACH_H
    59.9 -
   59.10 -#include <string>
   59.11 -#include "EngineTestSessionSuite.h"
   59.12 -
   59.13 -using namespace std;
   59.14 -
   59.15 -class RevokeRegenAttachTests : public EngineTestSessionSuite {
   59.16 -    public:
   59.17 -        RevokeRegenAttachTests(string test_suite, string test_home_dir);
   59.18 -    protected:
   59.19 -        void setup();
   59.20 -    private:
   59.21 -        void check_revoke_regen_attach();
   59.22 -};
   59.23 -
   59.24 -#endif
    60.1 --- a/test/include/SenderFPRTests.h	Sat Aug 31 15:40:25 2019 +0200
    60.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.3 @@ -1,19 +0,0 @@
    60.4 -// This file is under GNU General Public License 3.0
    60.5 -// see LICENSE.txt
    60.6 -
    60.7 -#ifndef SENDER_F_P_R_H
    60.8 -#define SENDER_F_P_R_H
    60.9 -
   60.10 -#include <string>
   60.11 -#include "EngineTestIndividualSuite.h"
   60.12 -
   60.13 -using namespace std;
   60.14 -
   60.15 -class SenderFPRTests : public EngineTestIndividualSuite {
   60.16 -    public:
   60.17 -        SenderFPRTests(string test_suite, string test_home_dir);
   60.18 -    private:
   60.19 -        void check_sender_f_p_r();
   60.20 -};
   60.21 -
   60.22 -#endif
    61.1 --- a/test/include/SequenceTests.h	Sat Aug 31 15:40:25 2019 +0200
    61.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.3 @@ -1,19 +0,0 @@
    61.4 -// This file is under GNU General Public License 3.0
    61.5 -// see LICENSE.txt
    61.6 -
    61.7 -#ifndef SEQUENCE_TESTS_H
    61.8 -#define SEQUENCE_TESTS_H
    61.9 -
   61.10 -#include <string>
   61.11 -#include "EngineTestSessionSuite.h"
   61.12 -
   61.13 -using namespace std;
   61.14 -
   61.15 -class SequenceTests : public EngineTestSessionSuite {
   61.16 -    public:
   61.17 -        SequenceTests(string suitename, string test_home_dir);
   61.18 -    private:
   61.19 -        void check_sequences();
   61.20 -};
   61.21 -
   61.22 -#endif
    62.1 --- a/test/include/SignOnlyTests.h	Sat Aug 31 15:40:25 2019 +0200
    62.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.3 @@ -1,19 +0,0 @@
    62.4 -// This file is under GNU General Public License 3.0
    62.5 -// see LICENSE.txt
    62.6 -
    62.7 -#ifndef SIGN_ONLY_H
    62.8 -#define SIGN_ONLY_H
    62.9 -
   62.10 -#include <string>
   62.11 -#include "EngineTestIndividualSuite.h"
   62.12 -
   62.13 -using namespace std;
   62.14 -
   62.15 -class SignOnlyTests : public EngineTestIndividualSuite {
   62.16 -    public:
   62.17 -        SignOnlyTests(string test_suite, string test_home_dir);
   62.18 -    private:
   62.19 -        void check_sign_only();
   62.20 -};
   62.21 -
   62.22 -#endif
    63.1 --- a/test/include/SimpleBodyNotAltTests.h	Sat Aug 31 15:40:25 2019 +0200
    63.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.3 @@ -1,20 +0,0 @@
    63.4 -// This file is under GNU General Public License 3.0
    63.5 -// see LICENSE.txt
    63.6 -
    63.7 -#ifndef SIMPLE_BODY_NOT_ALT_H
    63.8 -#define SIMPLE_BODY_NOT_ALT_H
    63.9 -
   63.10 -#include <string>
   63.11 -#include "EngineTestIndividualSuite.h"
   63.12 -
   63.13 -using namespace std;
   63.14 -
   63.15 -class SimpleBodyNotAltTests : public EngineTestIndividualSuite {
   63.16 -    public:
   63.17 -        SimpleBodyNotAltTests(string test_suite, string test_home_dir);
   63.18 -    private:
   63.19 -        void check_text_w_html_attach();
   63.20 -        void check_html_w_text_attach();
   63.21 -};
   63.22 -
   63.23 -#endif
    64.1 --- a/test/include/StringlistTests.h	Sat Aug 31 15:40:25 2019 +0200
    64.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.3 @@ -1,20 +0,0 @@
    64.4 -// This file is under GNU General Public License 3.0
    64.5 -// see LICENSE.txt
    64.6 -
    64.7 -#ifndef STRINGLIST_TESTS_H
    64.8 -#define STRINGLIST_TESTS_H
    64.9 -
   64.10 -#include <string>
   64.11 -#include "EngineTestSuite.h"
   64.12 -
   64.13 -using namespace std;
   64.14 -
   64.15 -class StringlistTests : public EngineTestSuite {
   64.16 -    public:
   64.17 -        StringlistTests(string suitename, string test_home_dir);
   64.18 -    private:
   64.19 -        void check_stringlists();
   64.20 -        void check_dedup_stringlist();
   64.21 -};
   64.22 -
   64.23 -#endif
    65.1 --- a/test/include/StringpairListTests.h	Sat Aug 31 15:40:25 2019 +0200
    65.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    65.3 @@ -1,20 +0,0 @@
    65.4 -// This file is under GNU General Public License 3.0
    65.5 -// see LICENSE.txt
    65.6 -
    65.7 -#ifndef STRINGPAIR_LIST_TESTS_H
    65.8 -#define STRINGPAIR_LIST_TESTS_H
    65.9 -
   65.10 -#include <string>
   65.11 -#include "EngineTestSuite.h"
   65.12 -
   65.13 -using namespace std;
   65.14 -
   65.15 -class StringpairListTests : public EngineTestSuite {
   65.16 -    public:
   65.17 -        StringpairListTests(string suitename, string test_home_dir);
   65.18 -    private:
   65.19 -        void check_stringpair_lists();
   65.20 -        bool test_stringpair_equals(stringpair_t* val1, stringpair_t* val2);
   65.21 -};
   65.22 -
   65.23 -#endif
    66.1 --- a/test/include/StrnstrTests.h	Sat Aug 31 15:40:25 2019 +0200
    66.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.3 @@ -1,35 +0,0 @@
    66.4 -// This file is under GNU General Public License 3.0
    66.5 -// see LICENSE.txt
    66.6 -
    66.7 -#ifndef STRNSTR_H
    66.8 -#define STRNSTR_H
    66.9 -
   66.10 -#include <string>
   66.11 -#include "EngineTestIndividualSuite.h"
   66.12 -
   66.13 -using namespace std;
   66.14 -
   66.15 -class StrnstrTests : public EngineTestIndividualSuite {
   66.16 -    public:
   66.17 -        StrnstrTests(string test_suite, string test_home_dir);
   66.18 -    private:
   66.19 -        void check_strnstr_equal();
   66.20 -        void check_strnstr_first_null();
   66.21 -        void check_strnstr_second_null();
   66.22 -        void check_strnstr_both_null();
   66.23 -        void check_strnstr_first_empty();
   66.24 -        void check_strnstr_second_empty();
   66.25 -        void check_strnstr_both_empty();
   66.26 -        void check_strnstr_first_letter_only();
   66.27 -        void check_strnstr_first_two_only();
   66.28 -        void check_strnstr_all_but_last();
   66.29 -        void check_strnstr_same_len_all_but_last();
   66.30 -        void check_strnstr_same_len_none();
   66.31 -        void check_strnstr_same_big_smaller();
   66.32 -        void check_strnstr_shift_one_no_match();
   66.33 -        void check_strnstr_shift_to_end();
   66.34 -        void check_strnstr_match_after_end();
   66.35 -        void check_strnstr_equal_but_size_too_small();
   66.36 -};
   66.37 -
   66.38 -#endif
    67.1 --- a/test/include/SubkeyRatingEvalTests.h	Sat Aug 31 15:40:25 2019 +0200
    67.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.3 @@ -1,29 +0,0 @@
    67.4 -// This file is under GNU General Public License 3.0
    67.5 -// see LICENSE.txt
    67.6 -
    67.7 -#ifndef SUBKEY_RATING_EVAL_H
    67.8 -#define SUBKEY_RATING_EVAL_H
    67.9 -
   67.10 -#include <string>
   67.11 -#include "EngineTestIndividualSuite.h"
   67.12 -
   67.13 -using namespace std;
   67.14 -
   67.15 -class SubkeyRatingEvalTests : public EngineTestIndividualSuite {
   67.16 -    public:
   67.17 -        SubkeyRatingEvalTests(string test_suite, string test_home_dir);
   67.18 -    private:
   67.19 -        void check_subkey_rating_eval();
   67.20 -        void check_subkey_rating_eval_no_es();
   67.21 -        void check_subkey_rating_eval_weak_s();    
   67.22 -        void check_subkey_rating_eval_ecc_s();
   67.23 -        void check_subkey_rating_eval_weak_e_strong_ecc_se();
   67.24 -        void check_subkey_rating_eval_bad_es();
   67.25 -        void check_subkey_rating_eval_bad_e();
   67.26 -        void check_subkey_rating_eval_bad_s_ecc_e();    
   67.27 -        void check_subkey_rating_eval_revoked_sign_no_alt();    
   67.28 -        void check_subkey_rating_eval_revoked_e_with_alt();            
   67.29 -
   67.30 -};
   67.31 -
   67.32 -#endif
    68.1 --- a/test/include/SuiteMaker.h	Sat Aug 31 15:40:25 2019 +0200
    68.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    68.3 @@ -1,25 +0,0 @@
    68.4 -// This file is under GNU General Public License 3.0
    68.5 -// see LICENSE.txt
    68.6 -
    68.7 -#ifndef SUITEMAKER_H
    68.8 -#define SUITEMAKER_H
    68.9 -
   68.10 -#include <cpptest.h>
   68.11 -#include <cpptest-suite.h>
   68.12 -#include <memory>
   68.13 -#include <vector>
   68.14 -
   68.15 -#include "EngineTestSuite.h"
   68.16 -
   68.17 -class SuiteMaker {
   68.18 -    public:
   68.19 -        static void suitemaker_build(const char* test_class_name, const char* test_home, Test::Suite** test_suite);
   68.20 -        static void suitemaker_buildall(const char* test_home, std::vector<Test::Suite*>& test_suites);
   68.21 -        static void suitemaker_buildlist(const char** test_class_names, int num_to_run, const char* test_home, std::vector<Test::Suite*>& test_suites);
   68.22 -
   68.23 -    private:
   68.24 -        static int num_suites;
   68.25 -        static const char* all_suites[];
   68.26 -};
   68.27 -
   68.28 -#endif
    69.1 --- a/test/include/SyncTests.h	Sat Aug 31 15:40:25 2019 +0200
    69.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    69.3 @@ -1,49 +0,0 @@
    69.4 -// This file is under GNU General Public License 3.0
    69.5 -// see LICENSE.txt
    69.6 -
    69.7 -#ifndef SYNC_H
    69.8 -#define SYNC_H
    69.9 -
   69.10 -#include <string>
   69.11 -#include <thread>
   69.12 -#include "EngineTestSessionSuite.h"
   69.13 -#include "locked_queue.hh"
   69.14 -#include "sync_api.h"
   69.15 -#include "Sync_impl.h"
   69.16 -
   69.17 -using namespace std;
   69.18 -
   69.19 -class Sync_Adapter {
   69.20 -public:
   69.21 -    utility::locked_queue< Sync_event_t * > q;
   69.22 -
   69.23 -    void processing();
   69.24 -
   69.25 -    static PEP_STATUS notifyHandshake(
   69.26 -            pEp_identity *me,
   69.27 -            pEp_identity *partner,
   69.28 -            sync_handshake_signal signal
   69.29 -        );
   69.30 -    static int inject_sync_event(SYNC_EVENT ev, void *management);
   69.31 -    static Sync_event_t *retrieve_next_sync_event(void *management, unsigned threshold);
   69.32 -    static PEP_STATUS messageToSend(struct _message *msg);
   69.33 -
   69.34 -    static void sync_thread(PEP_SESSION session, Sync_Adapter *adapter);
   69.35 -};
   69.36 -
   69.37 -class SyncTests : public EngineTestSessionSuite {
   69.38 -    public:
   69.39 -        SyncTests(string test_suite, string test_home_dir);
   69.40 -
   69.41 -        void setup();
   69.42 -        void tear_down();
   69.43 -
   69.44 -    private:
   69.45 -        Sync_Adapter adapter;
   69.46 -        PEP_SESSION sync = NULL;
   69.47 -        thread *sync_thread;
   69.48 -
   69.49 -        void check_sync();
   69.50 -};
   69.51 -
   69.52 -#endif
    70.1 --- a/test/include/TestDriver.h	Sat Aug 31 15:40:25 2019 +0200
    70.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    70.3 @@ -1,19 +0,0 @@
    70.4 -#ifndef PEP_TEST_DRIVER_H
    70.5 -#define PEP_TEST_DRIVER_H
    70.6 -
    70.7 -#include <cpptest.h>
    70.8 -#include <cpptest-suite.h>
    70.9 -#include <cpptest-textoutput.h>
   70.10 -#include <string>
   70.11 -#include <map>
   70.12 -#include "SuiteMaker.h"
   70.13 -#include "EngineTestSuite.h"
   70.14 -#include "EngineTestIndividualSuite.h"
   70.15 -#include "EngineTestSessionSuite.h"
   70.16 -
   70.17 -using namespace std;
   70.18 -
   70.19 -typedef map<string, EngineTestSuite> SuiteMap;
   70.20 -typedef set<string> NameSet;
   70.21 -
   70.22 -#endif
    71.1 --- a/test/include/TrustManipulationTests.h	Sat Aug 31 15:40:25 2019 +0200
    71.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    71.3 @@ -1,19 +0,0 @@
    71.4 -// This file is under GNU General Public License 3.0
    71.5 -// see LICENSE.txt
    71.6 -
    71.7 -#ifndef TRUST_MANIPULATION_TESTS_H
    71.8 -#define TRUST_MANIPULATION_TESTS_H
    71.9 -
   71.10 -#include <string>
   71.11 -#include "EngineTestSessionSuite.h"
   71.12 -
   71.13 -using namespace std;
   71.14 -
   71.15 -class TrustManipulationTests : public EngineTestSessionSuite {
   71.16 -    public:
   71.17 -        TrustManipulationTests(string suitename, string test_home_dir);
   71.18 -    private:
   71.19 -        void check_trust_manipulation();
   71.20 -};
   71.21 -
   71.22 -#endif
    72.1 --- a/test/include/TrustwordsTests.h	Sat Aug 31 15:40:25 2019 +0200
    72.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    72.3 @@ -1,19 +0,0 @@
    72.4 -// This file is under GNU General Public License 3.0
    72.5 -// see LICENSE.txt
    72.6 -
    72.7 -#ifndef TRUSTWORDS_TESTS_H
    72.8 -#define TRUSTWORDS_TESTS_H
    72.9 -
   72.10 -#include <string>
   72.11 -#include "EngineTestSessionSuite.h"
   72.12 -
   72.13 -using namespace std;
   72.14 -
   72.15 -class TrustwordsTests : public EngineTestSessionSuite {
   72.16 -    public:
   72.17 -        TrustwordsTests(string suitename, string test_home_dir);
   72.18 -    private:
   72.19 -        void check_trustwords();
   72.20 -};
   72.21 -
   72.22 -#endif
    73.1 --- a/test/include/URIAddressTests.h	Sat Aug 31 15:40:25 2019 +0200
    73.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    73.3 @@ -1,20 +0,0 @@
    73.4 -// This file is under GNU General Public License 3.0
    73.5 -// see LICENSE.txt
    73.6 -
    73.7 -#ifndef U_R_I_ADDRESS_H
    73.8 -#define U_R_I_ADDRESS_H
    73.9 -
   73.10 -#include <string>
   73.11 -#include "EngineTestIndividualSuite.h"
   73.12 -
   73.13 -using namespace std;
   73.14 -
   73.15 -class URIAddressTests : public EngineTestIndividualSuite {
   73.16 -    public:
   73.17 -        URIAddressTests(string test_suite, string test_home_dir);
   73.18 -    private:
   73.19 -        void check_uri_address_genkey();
   73.20 -        void check_uri_address_encrypt();        
   73.21 -};
   73.22 -
   73.23 -#endif
    74.1 --- a/test/include/UserIDAliasTests.h	Sat Aug 31 15:40:25 2019 +0200
    74.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    74.3 @@ -1,19 +0,0 @@
    74.4 -// This file is under GNU General Public License 3.0
    74.5 -// see LICENSE.txt
    74.6 -
    74.7 -#ifndef USERID_ALIAS_TESTS_H
    74.8 -#define USERID_ALIAS_TESTS_H
    74.9 -
   74.10 -#include <string>
   74.11 -#include "EngineTestSessionSuite.h"
   74.12 -
   74.13 -using namespace std;
   74.14 -
   74.15 -class UserIDAliasTests : public EngineTestSessionSuite {
   74.16 -    public:
   74.17 -        UserIDAliasTests(string suitename, string test_home_dir);
   74.18 -    private:
   74.19 -        void check_userid_aliases();
   74.20 -};
   74.21 -
   74.22 -#endif
    75.1 --- a/test/include/UserIdCollisionTests.h	Sat Aug 31 15:40:25 2019 +0200
    75.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    75.3 @@ -1,112 +0,0 @@
    75.4 -// This file is under GNU General Public License 3.0
    75.5 -// see LICENSE.txt
    75.6 -
    75.7 -#ifndef USER_ID_COLLISION_H
    75.8 -#define USER_ID_COLLISION_H
    75.9 -
   75.10 -#include <string>
   75.11 -#include "EngineTestIndividualSuite.h"
   75.12 -
   75.13 -using namespace std;
   75.14 -
   75.15 -class UserIdCollisionTests : public EngineTestIndividualSuite {
   75.16 -    public:
   75.17 -        UserIdCollisionTests(string test_suite, string test_home_dir);
   75.18 -    
   75.19 -    protected:
   75.20 -        void setup();
   75.21 -        void tear_down();
   75.22 -        
   75.23 -        // own user
   75.24 -        pEp_identity* user_alice;
   75.25 -        // real ID, only minimal info w/ username
   75.26 -        pEp_identity* real_alex;
   75.27 -        // tofu ID, only minimal info w/ username        
   75.28 -        pEp_identity* tofu_alex;
   75.29 -        // real ID, only minimal info w/o username
   75.30 -        pEp_identity* real_alex_0;
   75.31 -        // tofu ID, only minimal info w/o username
   75.32 -        pEp_identity* tofu_alex_0;
   75.33 -        // real ID, only minimal info w/o username
   75.34 -        pEp_identity* real_alex_1;
   75.35 -        // tofu ID, only minimal info w/o username
   75.36 -        pEp_identity* tofu_alex_1;
   75.37 -        // real ID, various kinds of info
   75.38 -        pEp_identity* real_alex_2;
   75.39 -        // tofu ID, various kinds of info
   75.40 -        pEp_identity* tofu_alex_2;
   75.41 -        // real ID, various kinds of info
   75.42 -        pEp_identity* real_alex_3;
   75.43 -        // tofu ID, various kinds of info        
   75.44 -        pEp_identity* tofu_alex_3;
   75.45 -        // tofu ID, various kinds of info        
   75.46 -        pEp_identity* tofu_alex_4;
   75.47 -        // real ID, various kinds of info
   75.48 -        pEp_identity* real_alex_4;
   75.49 -        // tofu ID, various kinds of info        
   75.50 -        pEp_identity* tofu_alex_5;
   75.51 -        // real ID, various kinds of info
   75.52 -        pEp_identity* real_alex_5;
   75.53 -        // tofu ID, various kinds of info        
   75.54 -        pEp_identity* tofu_alex_6a;
   75.55 -        // real ID, various kinds of info
   75.56 -        pEp_identity* real_alex_6a;
   75.57 -        // tofu ID, various kinds of info        
   75.58 -        pEp_identity* tofu_alex_6b;
   75.59 -        // real ID, various kinds of info
   75.60 -        pEp_identity* real_alex_6b;
   75.61 -        // tofu ID, various kinds of info        
   75.62 -        pEp_identity* tofu_alex_6c;
   75.63 -        // real ID, various kinds of info
   75.64 -        pEp_identity* real_alex_6c;
   75.65 -        // tofu ID, various kinds of info        
   75.66 -        pEp_identity* tofu_alex_6d;
   75.67 -        // real ID, various kinds of info
   75.68 -        pEp_identity* real_alex_6d;
   75.69 -        
   75.70 -        const char* const alice_keyfile = "test_keys/pub/pep-test-alice-0x6FF00E97_pub.asc";
   75.71 -        const char* const alice_keyid = "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97";
   75.72 -        const char* const alice_email = "pep.test.alice@pep-project.org";
   75.73 -        const char* const alex_keyfile = "test_keys/pub/pep.test.alexander-0x26B54E4E_pub.asc";
   75.74 -        const char* const alex_keyid = "3AD9F60FAEB22675DB873A1362D6981326B54E4E";        
   75.75 -        const char* const alex_email = "pep.test.alexander@peptest.ch";        
   75.76 -        const char* const alex0_keyfile = "test_keys/pub/pep.test.alexander0-0x3B7302DB_pub.asc";
   75.77 -        const char* const alex0_keyid = "F4598A17D4690EB3B5B0F6A344F04E963B7302DB";
   75.78 -        const char* const alex0_email = "pep.test.alexander0@darthmama.org";                
   75.79 -        const char* const alex1_keyfile = "test_keys/pub/pep.test.alexander1-0x541260F6_pub.asc";
   75.80 -        const char* const alex1_keyid = "59AF4C51492283522F6904531C09730A541260F6";        
   75.81 -        const char* const alex1_email = "pep.test.alexander1@darthmama.org";                                
   75.82 -        const char* const alex2_keyfile = "test_keys/pub/pep.test.alexander2-0xA6512F30_pub.asc";
   75.83 -        const char* const alex2_keyid = "46A994F19077C05610870273C4B8AB0BA6512F30";
   75.84 -        const char* const alex2_email = "pep.test.alexander2@darthmama.org";                                
   75.85 -        const char* const alex3_keyfile = "test_keys/pub/pep.test.alexander3-0x724B3975_pub.asc";
   75.86 -        const char* const alex3_keyid = "5F7076BBD92E14EA49F0DF7C2CE49419724B3975";        
   75.87 -        const char* const alex3_email = "pep.test.alexander3@darthmama.org";                
   75.88 -        const char* const alex4_keyfile = "test_keys/pub/pep.test.alexander4-0x844B9DCF_pub.asc";
   75.89 -        const char* const alex4_keyid = "E95FFF95B8E2FDD4A12C3374395F1485844B9DCF";        
   75.90 -        const char* const alex4_email = "pep.test.alexander4@darthmama.org";                
   75.91 -        const char* const alex5_keyfile = "test_keys/pub/pep.test.alexander5-0x0773CD29_pub.asc";
   75.92 -        const char* const alex5_keyid = "58BCC2BF2AE1E3C4FBEAB89AD7838ACA0773CD29";        
   75.93 -        const char* const alex5_email = "pep.test.alexander5@darthmama.org";                
   75.94 -        const char* const alex6a_keyfile = "test_keys/pub/pep.test.alexander6-0xBDA17020_pub.asc";
   75.95 -        const char* const alex6a_keyid = "B4CE2F6947B6947C500F0687AEFDE530BDA17020";        
   75.96 -        const char* const alex6_email = "pep.test.alexander6@darthmama.org";                
   75.97 -        const char* const alex6b_keyfile = "test_keys/pub/pep.test.alexander6-0x503B14D8_pub.asc";
   75.98 -        const char* const alex6b_keyid = "2E21325D202A44BFD9C607FCF095B202503B14D8";        
   75.99 -        const char* const alex6c_keyfile = "test_keys/pub/pep.test.alexander6-0xA216E95A_pub.asc";
  75.100 -        const char* const alex6c_keyid = "3C1E713D8519D7F907E3142D179EAA24A216E95A";        
  75.101 -        const char* const alex6d_keyfile = "test_keys/pub/pep.test.alexander6-0x0019697D_pub.asc";
  75.102 -        const char* const alex6d_keyid = "74D79B4496E289BD8A71B70BA8E2C4530019697D";        
  75.103 -        
  75.104 -    private:
  75.105 -        void simple_tofu_collision();        
  75.106 -        void simple_tofu_collision_different_usernames();
  75.107 -        void tofu_collision_two_tofus();        
  75.108 -        void tofu_collision_two_tofus_diff_usernames();
  75.109 -        void real_followed_by_explicit_tofu();
  75.110 -        void merge_records_normal();
  75.111 -        void merge_records_set();
  75.112 -        void merge_records_set_2();
  75.113 -};
  75.114 -
  75.115 -#endif
    76.1 --- a/test/include/VerifyTests.h	Sat Aug 31 15:40:25 2019 +0200
    76.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    76.3 @@ -1,23 +0,0 @@
    76.4 -// This file is under GNU General Public License 3.0
    76.5 -// see LICENSE.txt
    76.6 -
    76.7 -#ifndef VERIFY_H
    76.8 -#define VERIFY_H
    76.9 -
   76.10 -#include <string>
   76.11 -#include "EngineTestIndividualSuite.h"
   76.12 -
   76.13 -using namespace std;
   76.14 -
   76.15 -class VerifyTests : public EngineTestIndividualSuite {
   76.16 -    public:
   76.17 -        VerifyTests(string test_suite, string test_home_dir);
   76.18 -    private:
   76.19 -        static constexpr const char *mary_fpr = "599B3D67800DB37E2DCE05C07F59F03CD04A226E";
   76.20 -        void check_revoked_tpk();
   76.21 -        void check_revoked_signing_key();
   76.22 -        void check_expired_tpk();
   76.23 -        void check_expired_signing_key();
   76.24 -};
   76.25 -
   76.26 -#endif
    77.1 --- a/test/include/pEpTestOutput.h	Sat Aug 31 15:40:25 2019 +0200
    77.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    77.3 @@ -1,44 +0,0 @@
    77.4 -
    77.5 -#ifndef PEP_TEST_OUTPUT_H
    77.6 -#define PEP_TEST_OUTPUT_H
    77.7 -
    77.8 -#include <cpptest.h>
    77.9 -#include <vector>
   77.10 -#include <string>
   77.11 -#include <utility>
   77.12 -
   77.13 -namespace Test {
   77.14 -    class pEpTestOutput : public Output {
   77.15 -        public:
   77.16 -            pEpTestOutput();
   77.17 -            ~pEpTestOutput() {};
   77.18 -            void finished(int tests, const Time& time);
   77.19 -            void initialize(int tests) {};
   77.20 -            void suite_start(int tests, const std::string& name);
   77.21 -            void suite_end(int tests, const std::string& name,
   77.22 -                           const Time& time);
   77.23 -            void test_start(const std::string& name);
   77.24 -            void test_end(const std::string& name, bool ok,
   77.25 -                          const Time& time);
   77.26 -            void assertment(const Test::Source& s);
   77.27 -            
   77.28 -            void outputCorrectPercentage(int num_tests, int failures, int width);
   77.29 -            
   77.30 -        private:
   77.31 -            static constexpr const char* huge_sepline = "///////////////////////////////////////////////////////////////////////////\n";
   77.32 -            static constexpr const char* alt_sepline = "++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
   77.33 -            static constexpr const char* big_sepline = "********************************************************\n";
   77.34 -            static constexpr const char* med_sepline = "-----------------------------------\n";
   77.35 -            static constexpr const char* sml_sepline = "++++++++++++++++++++++++++\n";
   77.36 -            static constexpr const char* lil_sepline = "~~~~~~\n";
   77.37 -            int _total_failed;
   77.38 -            int _total_tests;
   77.39 -            int _suite_failed;
   77.40 -            int _suite_total;
   77.41 -            std::string _suite_name;
   77.42 -            std::string _test_name;
   77.43 -            std::vector<Source> _test_errors;
   77.44 -            std::vector<std::pair<std::string,Source>> _all_errors;            
   77.45 -    };
   77.46 -}
   77.47 -#endif
   77.48 \ No newline at end of file
    78.1 --- a/test/msg	Sat Aug 31 15:40:25 2019 +0200
    78.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    78.3 @@ -1,22 +0,0 @@
    78.4 -GPG(1)                         GNU Privacy Guard                        GPG(1)
    78.5 -
    78.6 -NAME
    78.7 -       gpg - OpenPGP encryption and signing tool
    78.8 -
    78.9 -SYNOPSIS
   78.10 -       gpg [--homedir dir] [--options file] [options] command [args]
   78.11 -
   78.12 -DESCRIPTION
   78.13 -       gpg  is the OpenPGP part of the GNU Privacy Guard (GnuPG). It is a tool
   78.14 -       to provide digital encryption and signing services  using  the  OpenPGP
   78.15 -       standard.  gpg features complete key management and all bells and whis‐
   78.16 -       tles you can expect from a decent OpenPGP implementation.
   78.17 -
   78.18 -       This is the standalone version of gpg.  For desktop use you should con‐
   78.19 -       sider  using gpg2  ([On some platforms gpg2 is installed under the name
   78.20 -       gpg]).
   78.21 -
   78.22 -RETURN VALUE
   78.23 -       The program returns 0 if everything was fine, 1 if at least a signature
   78.24 -       was bad, and other error codes for fatal errors.
   78.25 -
    79.1 --- a/test/msg.asc	Sat Aug 31 15:40:25 2019 +0200
    79.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    79.3 @@ -1,36 +0,0 @@
    79.4 ------BEGIN PGP MESSAGE-----
    79.5 -Version: GnuPG v1
    79.6 -
    79.7 -hQEMA1oCBdlzCD9NAQf+NM15QA1chVbHLibULsUvJRvvlDlkYFC39pqOhHda41nw
    79.8 -+il9vvsHYYyY6igm5Hffv6TkvbONyCcimH14Qmh4N8RFJgw6qbh5k4HxRRKLd4on
    79.9 -fmXTBiN3X+exz0yEuQIqD5cZBfAUx1OKIPQlB+AcAxfx9uHfR8nWTrLkZrk7hZKG
   79.10 -P4ABgkhXEOxIMw/xliYb5NKg7ImY3IWV6FAk5mtklc9xmbW2GLG5R8NPHdbj9wgZ
   79.11 -wmEFcz3xnIU66ZimUzvVj2tIYGNpbRo9YGfbvAdf+1KDEZvrZO7ZdEYJwJTjnxCw
   79.12 -bqmk7NvOmuI9xlpyr/LEjAI+dUEkp1cfL9VU0bvtUIUBDAOYPRmfc6cbjgEH/Rxt
   79.13 -vK/fHPA/nOyJJlzEoeIA72sA292aeM/wOrlzn0CgJjC3DzVFX1R0Rr9xJRQrHAt7
   79.14 -prFBQM2MbXMYM4m81tQSndye6pyvR3KFVveVSs0dO4pGHJnyL6GnFbHKFiyI3w9Q
   79.15 -WdfGzbz2MoNV4IIXFc6sTN85nf3n56h/ZiYFYjFt2FISoG0XL8s8YcQayCBeNT06
   79.16 -WVTLzsrRMPFlZLjSQDrNdArdQN6AMERW7j5sWJens5xszq4egVpFAWpCs2tAgtKt
   79.17 -W9u9/coJ2k0EEVLkEQuafy52Ht5Tq3VHoYsqOAAcDLD7XSeX5PB1dw/9atHAePiG
   79.18 -RZC5bXMRe8HuDbzMF5jS6QFi2DL5sD8cGMCnHBs00hCT+JAOG4fuGJBZdx5R1JWr
   79.19 -7TKRTxoWSiezB8VfKpRC9haDc7q2xkaJ7bsTlljIJWJEbA71ZusVBeOTgsYBfXjh
   79.20 -8IdQBCIQXim7VliOfYn8hHd+5XdUY/TAmk1Niw6Zpxw8LvnVdHjji3CkPRLG91uM
   79.21 -cL0zl7LddKGWZ75QgrBGCMMT0ZXsOMqKw2e9QprX/JFj+W6drHIQ75F/Xl8i8168
   79.22 -+04nXdypQrHpi21D6DaKE0p/3RpYeDTlou8ttwDGZmsPbHOSdwgIkonESMTgByOV
   79.23 -0l0fu3tgVTqKakpwGD06iQXLDPp375NrSnlpB/sL3YL9rU6xI2Q9/qdrMdBuw1gR
   79.24 -0yHTVP/Q7utprycy+FGL6m0nAg63cKlbJcf6WCNLiHTaDf6a9GlC6t7kGrS6TeNQ
   79.25 -5KiKK7oHgua7e6psHhdqx5o8qzjWQ92KK3mdqUxsla9e0Kgcxypiw/cGFnRf7GzZ
   79.26 -68RL1pJp0p9cfqxyZ1zz81EGcXEqtezVDPdFCqLedfYlq4DqR+PQURyaCK8FvB1g
   79.27 -84sddc784GzxfnsYm8UvrKfaBkiSD+nw/cIzFJH7bassw7tRiwt8TyqE8HRfl0wh
   79.28 -NP0hpkid4BIIJGa9GtCHwGh1JO/iARxRGuUn4+mbYDdjWOTR/R9os5XuzPIO3im0
   79.29 -wM5t1l/aHV1vgmZby2PZjc+C4+PL7Ei6odVAakbm+6Wqr9ccDbl1kS1vPKVo/j7i
   79.30 -avP1gw3OjyCRo6Jp09dsOZxtpyi0w3+IHmvg2qrjqZJvoofBYKapWTo7q6Y8VX66
   79.31 -97ZF1ainjVViIS5Di5cAkv6opOxQ0Y3gkuvVZvkO20L60/xU2iq0lfPUYKebZTfM
   79.32 -WlnHFfczz3qEV4t5gkwj1D4DvWHNUtbW7Ijxi602HxLMR/qIZSz03tNMOuvht021
   79.33 -RsY+9HwLrnRz/loA2dcMZE1SeqmJKqpnxSu5sna0E9Rr+kscyTCRERZOAiRLO2Yb
   79.34 -8rJZltyq9yjjEzkXKqYnzl9C5i+wH06HK5UK9egZJpjfb1DxSMsTuJ8l4uvd3rVj
   79.35 -63QYjqMxQbPwCew6vNOpsVJ8r0VlRjCjKVBGe/Dt0MrFili+HDIsmoMyWR5tcH9y
   79.36 -OTMDD0uBhXVA5rTIAzHYpx1rghp/9i4hoJa7ZzgkJMAEexpK7TwkEjijMdSsvgFV
   79.37 -6KTzmuhXr9NKsXNu35YAmQ==
   79.38 -=/Ljx
   79.39 ------END PGP MESSAGE-----
    80.1 --- a/test/msg1.asc	Sat Aug 31 15:40:25 2019 +0200
    80.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    80.3 @@ -1,20 +0,0 @@
    80.4 -Subject: my =?utf-8?Q?s=C3=BCbject?=
    80.5 -From: Volker Birk <vb@dingens.org>
    80.6 -To: Patricia =?utf-8?Q?B=C3=A4dnar?= <trischa@dingens.org>
    80.7 -X-pEp-Version: 1.0
    80.8 -MIME-Version: 1.0
    80.9 -Content-Type: multipart/alternative; boundary="54fdd7c7_6b8b4567_1505"
   80.10 -
   80.11 ---54fdd7c7_6b8b4567_1505
   80.12 -Content-Type: text/plain; charset="utf-8"
   80.13 -Content-Transfer-Encoding: quoted-printable
   80.14 -Content-Disposition: inline
   80.15 -
   80.16 -my m=C3=A8ssage to yo=C3=BC
   80.17 ---54fdd7c7_6b8b4567_1505
   80.18 -Content-Type: text/html; charset="utf-8"
   80.19 -Content-Transfer-Encoding: quoted-printable
   80.20 -Content-Disposition: inline
   80.21 -
   80.22 -<html><body><p>my message to you</p></body></html>
   80.23 ---54fdd7c7_6b8b4567_1505--
    81.1 --- a/test/msg2.asc	Sat Aug 31 15:40:25 2019 +0200
    81.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    81.3 @@ -1,605 +0,0 @@
    81.4 -Return-Path: <vb@dingens.org>
    81.5 -X-Original-To: vb@dingens.org
    81.6 -Delivered-To: vb@dingens.org
    81.7 -Received: from localhost (localhost [127.0.0.1])
    81.8 -	by dragon.pibit.ch (Postfix) with ESMTP id AFEEF171C059
    81.9 -	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:34 +0100 (CET)
   81.10 -Received: from dragon.pibit.ch ([127.0.0.1])
   81.11 -	by localhost (dragon.pibit.ch [127.0.0.1]) (amavisd-new, port 10024)
   81.12 -	with ESMTP id LIqI5IZE3-af for <vb@dingens.org>;
   81.13 -	Sat, 28 Mar 2015 10:07:32 +0100 (CET)
   81.14 -Received: from localhost (161.238.195.178.dynamic.wline.res.cust.swisscom.ch [178.195.238.161])
   81.15 -	by dragon.pibit.ch (Postfix) with ESMTPSA id 4742A171C055
   81.16 -	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:32 +0100 (CET)
   81.17 -Date: Sat, 28 Mar 2015 10:07:31 +0100
   81.18 -From: Volker Birk <vb@dingens.org>
   81.19 -To: Volker Birk <vb@dingens.org>
   81.20 -Subject: Dingens
   81.21 -Message-ID: <20150328090731.GI44028@dingens.org>
   81.22 -MIME-Version: 1.0
   81.23 -Content-Type: multipart/mixed; boundary="cEobB2knsyc5ebfU"
   81.24 -Content-Disposition: inline
   81.25 -X-PGP-Key: http://fdik.org/vb.key
   81.26 -
   81.27 -
   81.28 ---cEobB2knsyc5ebfU
   81.29 -Content-Type: text/plain; charset=us-ascii
   81.30 -Content-Disposition: inline
   81.31 -
   81.32 -VB.
   81.33 --- 
   81.34 -Volker Birk
   81.35 -Oberer Graben 4, 8400 Winterthur, Schweiz
   81.36 -mailto:vb@dingens.org  http://fdik.org
   81.37 -
   81.38 ---cEobB2knsyc5ebfU
   81.39 -Content-Type: application/pdf
   81.40 -Content-Disposition: attachment; filename="pep_Dokument_Titel.pdf"
   81.41 -Content-Transfer-Encoding: base64
   81.42 -
   81.43 -JVBERi0xLjQNJeLjz9MNCjYgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMzAzNTQvTyA4L0Ug
   81.44 -MjcyNjEvTiAxL1QgMzAxMjAvSCBbIDU3NiAxNTldPj4NZW5kb2JqDSAgICAgICAgICAgICAg
   81.45 -ICAgICAgIA14cmVmDTYgMTQNMDAwMDAwMDAxNiAwMDAwMCBuDQowMDAwMDAwNzM1IDAwMDAw
   81.46 -IG4NCjAwMDAwMDA4NDggMDAwMDAgbg0KMDAwMDAwMTE3NiAwMDAwMCBuDQowMDAwMDA0NjUz
   81.47 -IDAwMDAwIG4NCjAwMDAwMDgwNzkgMDAwMDAgbg0KMDAwMDAxMTQzOCAwMDAwMCBuDQowMDAw
   81.48 -MDEzNzY0IDAwMDAwIG4NCjAwMDAwMTcyNDkgMDAwMDAgbg0KMDAwMDAyMDQ3NyAwMDAwMCBu
   81.49 -DQowMDAwMDIzNzc5IDAwMDAwIG4NCjAwMDAwMjcwMzcgMDAwMDAgbg0KMDAwMDAyNzE1MCAw
   81.50 -MDAwMCBuDQowMDAwMDAwNTc2IDAwMDAwIG4NCnRyYWlsZXINPDwvU2l6ZSAyMC9Sb290IDcg
   81.51 -MCBSL0luZm8gNSAwIFIvSURbPEM4MjAyNjM5QTk2NzQwODJCNDI1MjY5OEY2RDg5M0I4PjxB
   81.52 -Qzg4QjY2Qzk4MDA0RjgzOUQzRTVEQzI2MDg2NUNDMT5dL1ByZXYgMzAxMTI+Pg1zdGFydHhy
   81.53 -ZWYNMA0lJUVPRg0gICAgICAgICAgICAgICAgICAgICAgICANMTkgMCBvYmoNPDwvRmlsdGVy
   81.54 -L0ZsYXRlRGVjb2RlL0kgOTUvTCA3OS9MZW5ndGggNzYvUyAzNj4+c3RyZWFtDQpo3mJgYOBm
   81.55 -YGDayAAE6boMmICFgQOJxw3FDAz5DDy8c9XO22zoqtU7dKf8yAYmqBJGBobMe0AaxLcHYlYG
   81.56 -hhIfiDjDVoAAAwAUHgw/DWVuZHN0cmVhbQ1lbmRvYmoNNyAwIG9iag08PC9NZXRhZGF0YSA0
   81.57 -IDAgUi9QYWdlTGFiZWxzIDEgMCBSL1BhZ2VzIDMgMCBSL1R5cGUvQ2F0YWxvZy9WaWV3ZXJQ
   81.58 -cmVmZXJlbmNlczw8L0RpcmVjdGlvbi9MMlI+Pj4+DWVuZG9iag04IDAgb2JqDTw8L0FydEJv
   81.59 -eFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9CbGVlZEJveFswLjAgMC4wIDU5NS4yNzYgODQx
   81.60 -Ljg5XS9Db250ZW50c1s5IDAgUiAxMCAwIFIgMTEgMCBSIDEyIDAgUiAxMyAwIFIgMTQgMCBS
   81.61 -IDE1IDAgUiAxNiAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vTWVkaWFC
   81.62 -b3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vUGFyZW50IDMgMCBSL1Jlc291cmNlczw8L0V4
   81.63 -dEdTdGF0ZTw8L0dTMCAxNyAwIFIvR1MxIDE4IDAgUj4+Pj4vUm90YXRlIDAvVHJpbUJveFsw
   81.64 -LjAgMC4wIDU5NS4yNzYgODQxLjg5XS9UeXBlL1BhZ2U+Pg1lbmRvYmoNOSAwIG9iag08PC9G
   81.65 -aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM0MDg+PnN0cmVhbQ0KSIm0V02O5roN3H+n8AXa
   81.66 -kSiJkk6QRZBF8BY5wCAvA0x3gJfcH0hVUbI90/OSTYIG+nPZ+qHIYpFK5+j5SGcp8+CvuR3f
   81.67 -Xn/44y/p+Pu/Xunwnk8v9WizndbbkefZaj3++Td+m/nMfRwffM7p9JZ/Pq6kM8+qca3O0338
   81.68 -ZNyvr9/wPa0vfoyazzH55a/HP16/0Tr85WPa2Yvno890tm75+PKhefyfz9rK8ZbONNthOJoT
   81.69 -2KhHxZrHlxdQa0c7Ha/wPKcffk6fxxuOibXGmW1wHDaZ48ChWsWC7Uy5HzmfHRa9Daw1iYZr
   81.70 -LJ5KsetzLmcdTXMT5uYKeztWTlmD2znhcZiQGz762bCInbMuZBNn4bh4hl01V30qMHbZRZhL
   81.71 -Pt7qmZvtZZMsbY5hgI3r+znwnTZMr7R8GVHP0vvxNs88hixu8OgbTM7GX8PsITzSPmJr/JJj
   81.72 -XXwpaQjTCVi4z3xBTGgRCfoEhyhYV5Na4lnwzm5jGJJBy71VMDCBiTjmhAtTuMIMLxH4s2eS
   81.73 -jTjnTH/LwYAwGmew0YUKQggHpG7LkT6vF+/Ls4ptSX29qLk9X8B7hheG9y7vWZrcYSaXd6qD
   81.74 -DYhrF6cwsXvhDq3LFYgA44FBCEDtdSPxalk3QBXMa5MLmTjQyRqkFHz05VXl0X5OuKPhuZHC
   81.75 -Zaxn+iWe4M0JgmBvnr6cI3M82AqH9ly0kmOXt44R48AAEmHKWbGlwpwZCqSwaFiDXAUBmuIS
   81.76 -R4H18M7bfZSJEN8vtArjCOwiLr0X1Gu+SJdSvCmmcYVmMnDCYDjthAcgLN+lQLx5v9+YM/X5
   81.77 -ZnHjfvP1BYWZWBhZyGiVChXRYTqshJqsz6BdcbBpw3GW2v/D8EzSlXsCzM809/cmUBQmxw9E
   81.78 -dEif4ik0Cs9p+NKoAdchuZdGAYFNoVF4zvgJjerQSmy5NarD5FG2RnUoAiK7RKgjgZLdGuXz
   81.79 -HHXsr97h0EuhHByFBK909MZsCnlyUAeJG+pEAC0h89bj0iagTjkNacL81G5h4nK9b10CcspT
   81.80 -yBI2NubX3hlvU92iRBvtkiQfmFgeioQDebn0qON1t0t/cPoyH2rUkQo2thrBb0rjUCM4tYxx
   81.81 -GUHnm201QpQsX3K0I4nUg411XooEmPrWozYk8EuPgHjUS47grDrsVqPlykt76EzKx4VpyCVF
   81.82 -cNFam0oEpzDDLyGCF2owE3nZLUQtsrNjTPJbhzrNKluHcDDKzBKigdX9oUSDFcuWFA1a4EuL
   81.83 -FqBH1uNSIyBmw5KjwczOtyBhQfIlBAkg1UuR1t63JMG0Ybcmwe7stjWJLO/loUloVrrV6wUc
   81.84 -UswuSaK/+kORQLHM6hSCBE8PUSr0CIEYZg85uki/1Wi/uKRnseKpRb++/oK/dMTfNzwZjHbz
   81.85 -uwHi6DajA2IfRco9+q2hmP7X/ij9pI/706sefz5ebzhng+/20t2RUxSHa+lfZKPDsqdh/Dz+
   81.86 -Nztr5fy7O7eG94jX/2HrvfTPtv7Z9G+PTrNMCK6jSlQ2VyDp3Wmeycj7dzwZ6BndENKPNb01
   81.87 -viB5UN8rqYNMYmczIe+QTJYAWoIkKPH45WXq3gCAUEkSV3ArzDMyCrYjl9UUwOK3pORtUflA
   81.88 -eRxoAVOaszdIUcGdrW+fnYpcRz5I9clUNNUQJGhVl5KwfVHCs2XBD8odizVAWUcYfUMeVM1l
   81.89 -KjwkfcEVC01M+/Gdj0NCxTqNsf4Zw1sokoHZelDtVUoSYgavsvmmJeW4WlHsV31Bpljap/7Q
   81.90 -t6R20+T9NAWo/VSCSieYRadTWSHgk0pXN/ajSOfCffpQY82axoEU3DdKBuOTp5yXiiLJTioA
   81.91 -HdSHb8jTDM1ylk9rWj4UDbqs+uio6OizZ43QcJIPjSMPOa6HVck4cFAWcZau20JScJs8Ashm
   81.92 -nbLFsJFlLFjuNwhSXLAad9MsOLf6XpH1MrbWbll+WXagndFA2ZhVlDlQ9rN9KUccDP7L+8i8
   81.93 -oBUNkzvgdDQo4SfEg31x+DCASDbnhsvznDR3VJAUionixexilBVJZtfcUcY6XjRQDIBgN20p
   81.94 -cuDEzPrbLVCENBehPoiWrU5iDvXvD9iTLilovFD0xbKKfEcvLJJ5o1vQbBWOGkXXDJtMGTWF
   81.95 -sHlqr8njBqLt4ML7i41je8JedZmdIAeVSEfh9Qgty4xjmms7i2uV4QRT7VdWmiPbSrRpY+ig
   81.96 -dBij3HnTjeKFsusEHupRVKADupofFDokxvwOWrtTFzDaaXYEqGW8nSDLJp89X3n79cWupUV2
   81.97 -OrP1xjUuV3FT1M1KFw+I01Rq1RCHqg6cKJKm4KTsCzxSKChExVTqOcnGe66Suau90eUBidhn
   81.98 -DPWuqWzuMl+3K7lbXIGu7G7U7ftjb3WnN3uNZ37jjpKr7QwHMnBFSkNQ2CRVqRyGjohc4Hfi
   81.99 -nHpYdOSuto6dM+YAqVfGZtliF6/qpK2NsGGrM223+ZBupjphmerqRtZJctN9YIC9DHyWSxbO
  81.100 -alF45akify9qQbuJj9TfLy81uGQ57WBQwKMoYMuAVdrorb5KHmyoSowpwM6Ylx15uOsCxtzv
  81.101 -Ors2Tk3dAOsMk9/z8louygVqMm5Bpsaz9kA9utAZQ2vS+UqL2m8qKANqt1HQUQSFebrw6jLx
  81.102 -IaxrA1J8KJLhm8xO2qM+sk/1iEeyUKiuvnomHQD9Q/BFGqKSwv58KGNqVrTKuPRwhe4SRFJU
  81.103 -U3XTI5u1RxOwyLtlACLQ6mUe++jb9JVpcTAe1Shb9RK9BRHvyepsxpTktW9caBdcY0H6AdGi
  81.104 -cU/8ESKP214oamuBzgG1omRwkB9IIr3rLnB3u0qoSQSZf+CIFbRsj+QEbnd2AvVVmLkujh57
  81.105 -zukxVhjBZIdOyBC7VANoLMTqWaLYuXrS2EZJVnBk2gD5I2J5BomyhhbdLGAvOtVopVwn9boT
  81.106 -EojBvNLTkGw5vsIkoDR7iC0Qa4huo0O3U2NF1ckLHMyohS6OpLE1VCnVGWOFdzAyKkPQ7jt8
  81.107 -N1LW1IRenAh4cYL3v3GTIuDFAxRAnz/Cmwgx+hO+mNFVvjczuhR5M2NEW3oxg+l/EQNJXNpF
  81.108 -DFS48eDFUNA3L2bIxuIFK/Z88GLhzYsZSr14MXX52LyYURsuXnCbcRFj7NCLGCylD17A9jEv
  81.109 -XkDY8sUEnHqUR8cNnLxcvEA1XXqfhWw8aOFRMBctmtqxTYsI402Lha9QoCqW9gnftChY1W+p
  81.110 -KNDpdge+IIHYHODUgz1/yWp0bmzR77kuHMDo8Nu9PD4Xs+dq0QKz3gesfuOvrwoJKbwiDZS0
  81.111 -j1el6/uC7xsaCQJUJTDfI94wmsfYnu0zhkaCLPf4HzF/aGoFC2r5jHeXtCy98NdXQ0BcrTkc
  81.112 -9EHoI6oRmsDGBqYFqkRWoo1PbMiAWVg1145GhVPvPpHgQA3dJnIpGVkPbHHvSXBK46VON4cM
  81.113 -jjZTnwDtEhcag9PjJjH5scfQjvU2qupyY2xgtthAarKoa1xUmcTuUvvndWUCMYBI9ZWDQD7L
  81.114 -naGNXd/9FacOqjK1W93NUvRVjZ6eu6+i96LrqjwlNs9xveseY3ukQHJ9HUttitYVqXBodeHE
  81.115 -/6a6SpIcAWHYV/oJbDb4T/3/82iBpOeSigpCwJZlOW5QdIejxQ5v8F/GsLO7ItFiD9lHfGyP
  81.116 -fvC9uzdP/iP897SBUR8HXkWtpd0D4GXZ/g9BHYou7b2ifE3zVuzGlHPS9zofT8X3ISt3iWWv
  81.117 -GgKRAUpCTGUKWhaeNiEzAEtjFZUyUraL1/W+0yTX9HJEJeY3CO4XpYznw6E56Ze4hlK6t35b
  81.118 -oXJvU7+tGldU8dOwV78aS9il3bSDQOQr7e75A4Y0n9g9nfhXtdPUixt3IzbNqmo27v2V0Rie
  81.119 -CS2jjH35ChA5psm2ghMR9nLmVLsNXAzI/CsyDCDEahaXtl7MtGuruMkRMyhnqsjTp/ceQQ5K
  81.120 -/I8u27m67tNsQlmeIooMIP2OmDK2ZGBvoZVClyv9TW3TBKwmsg7X8rBgtL0dhezygxIbaENK
  81.121 -6za49wQEaNQTG9E8MTZSmJZWc9erCGxttyYNmzTwwsZPleB5hjjurAXS+z5MoG0v2gRLu6sn
  81.122 -iago/CM2crTR3iGqduukSAOUrorxQdKT0Kl9ixZzSeEnAsNiMscjrkypmJE53oAaptWCQHKt
  81.123 -71fo9Ms5lC7NHOyCwLOW3ff+ARp162cQdV84JtOfyMxSWOgwgLalgeqWXfp1EfYydldGcG6T
  81.124 -46TpM3Cs291p2BF6gKQpAl/QKIG2UzbVEXhoKKEceJInaG80oX5EjMjty4Zx4kV4Sgv3wCSI
  81.125 -rWNKOcxpq4rnQs6S7ljMZdDzThygXTLaiZxaSXGo2wYrgBEA2pLurpFNq+ozAQIDrVSnOYgl
  81.126 -0DjSmq6WkJw6JROLT5lKBlBC4YCWW81ZygI61hiv8pmjmU8lmIW5vprBcFpeiKNQWfZ7bLdw
  81.127 -hnbk1oFD9adiUHvgRrvuXhQFzqJC/fhQTZdUDBoO4tDycs6W3pn6nmXHW/c6xx22QpelY1HP
  81.128 -9NUzHlL+dvbP6rBvYEddevS5wRwOyb0gOzsp7lDTDHzRWFTgn38CDAC5cXuEDWVuZHN0cmVh
  81.129 -bQ1lbmRvYmoNMTAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzMzU2Pj5z
  81.130 -dHJlYW0NCkiJZFdLbmy7DZz3KnoDboj6kNIaggyCDLIAI8EF4hvgZf+DVBUluf0ysbuOKInf
  81.131 -IuX11X0+P/rLSjwdyIDaa81K1BJNiHw+gKs14vDG1TKFPObT7bWqZN06Ze01cARwj8rVOrXa
  81.132 -sAWodBfqQdnyirKIq/cnUJuDyMKISki2uEN2rFfE86O+VvQnQF+daI5GVPskilJTtBTJjo7V
  81.133 -+Zo2iFqrRB7aWUKy8zWovr1mNa72MYj6qm+oQC/JClPrydUxgqhNIWpbXlZ7iq7Rn4Bd+tma
  81.134 -AM0tVTeAUVe6wKBWgSFOmyPWE/fJc731/K0IGDTKFVjdBrcgbnAlQoLT5E8EbHGlAjoiu6hR
  81.135 -nU5Q+5IpgxH99QioA4fiFNjy+xFwT9QNvx5O/RFF+A6mA/trNXvD8YqF8/xVq+THy3x+bw84
  81.136 -e7yfNltjrpU+NvZvCGVW3k5F8BMnF3zHz7GoYsMpADMtRQgmvLbo3ugGawCHUflVg2tzbFdN
  81.137 -pB9iv504kcYhxCUkluz32ggc4Wf4jJGeXYH7KMovoF4anRcWFzHbPGWFcUTnovmiaX0aj42C
  81.138 -Y4e8BFEkuslrBTugTmdKO/Z3qtqjCbVj01gHy3rJFmTL9hHPbVR3u2/jr4sRRKgIzHD4/2Nc
  81.139 -sdrGNU72EhUGr8EFABUGZSTzpuo3sDdy2xsZPpc3apWiHbVM4qgKoSOecE6tlodNMzkLeQC0
  81.140 -4EEgR64wwkMoZk93UB3gNbQ6Qo4tLSNOcxJB1rB33lU4tuqW5coIrzqXV0t2QlHeCjOBlnuG
  81.141 -LxigkjpU3/ljqWFB7TKbcDxtAw0qt2T3kKOIk9lQxAJL5IXTv9FOoIt7jefeiKu631Oh5NFA
  81.142 -d4JjwQZHH4Nr/GoL4+u2TLbAOQjysRMlY9cJ9GJL0Z7p35WI8h75oV/fJsq0DHtbbVknHexy
  81.143 -YoaayugqnixSZYJizRpdNxNwlbeUVZ5AL9DgyaGqRvAzw6ABqGfaJS7AKbu6M5UJu7/hqTZS
  81.144 -1LIAmmiDNA5AwvIhZ6GFFOV1QyyhnahmodxXkRb0IuQ2ohlIly/tm/EDk0GImUAoONhO1m2L
  81.145 -KBgQBkiGoIGEcIUlQL0q1K1KthUFs8+ZsmbCk/GDUVVNjNxO1JKQWktZYRfZQCeQBl1/8Xit
  81.146 -Fd/VTzyzU9B4ICcvVqoB0Nqt/l+Phfz2eza7KJIjoE08//vPs3pCA+hgK44L6sbm4N4Js1KU
  81.147 -a2xYRlHUef3e6DCzX5ZZDFsOJ6Ml7nW84aWp5Yhb4Ujyth3JxV527F+gNG4/+Bd2eLqkKuS/
  81.148 -9WEq5yYqk8itJeyCLWeIVehwfrDE6EJWhmiWcHRBTw6klyg9QOkijgLbCWsXc3BIICx7YupL
  81.149 -4l3WiFmoC5grxYPjwYHkpLrF94dWc301jXnDUxmrgizKVKYVNazVltY5M23qJJzNvplVltrb
  81.150 -OjzRL7cSDmvf5CrHRRx2JYxsjjLc1ahJr+FbWkMGbPFcX6Ewz5aHr5l+mOuIr3amyRtD+BF1
  81.151 -9KeQUhxcrOKbpgizF4vmgtJNQ8ZHzmiEnF4/OIP2vdk10NTStTwHOYEzM11MxkU5+QmYL7XM
  81.152 -SI82TEamniH/IQv2QJIuWHcx4L61Z0ErKHlR0pAkamByrVnTmmvgKbIcxBIinbZFV1d9e+c5
  81.153 -K+mAU2x/hzyB4vsDsrJn+Sz5Hx8i9v7VcvTI/ZYEkLs5LNSNv4Tr0GmT8yph1aQy5juqs+/d
  81.154 -tdTz4UsOiZ6XaYPLQg5BO3ltfI9I9HR3MVuvVWFR/rjGIMLBOh/izAyiya7BmbCwmlUKS9kI
  81.155 -OJWcbMaUvh/I+ISrKJWLyrAmtSMTrG3xFZHvoNDlRbnbLTUzt1PjOxk9s3NmQvV8o0Qk9CJ4
  81.156 -UqrluM0hvSnjSk/+35TQ9pMmtlsi3y3JXnDb0uwfs20+UiVEXW/shYSY6XK93wBjfZeRaZL9
  81.157 -fLx9KG3ukO12Mj3lm3LRI6twWrbnOAQSPXN1jmTWRJbSI+fQOuaW7iUH083DSq6iIVvZ4Rcm
  81.158 -mUXWtEVSaQ81tlY8KzHrYozDfbWomYd0gZ9a9vK1YXqRjMHmhw6M4OaYAm7+nR9qDmBQH2j0
  81.159 -dM1I2JbU46PuU9LssFSAvGHtDGiNcQEccecuijeR0f5AaHkcJxtCcpOqXIEx9htZi/ARzci3
  81.160 -a0tUpWjVq5cfolo+e13rmY2VqX6Rn4OZCkxOxEpwZXuLhFFz4L96RNfoO/KsWPkCOGp1FVXR
  81.161 -i1Val5rtKrS+ZrarMdLmLLrdrizfFadd0UXzTvqEzqnptiu6eGW7qlMRqTnATzZDwG5SZvS+
  81.162 -A8SBmBxABmZ0OUsyTpYw+7aPjCfHgnk+fOnDQPGTSie1I9MkPVnb2tU3+oKxY63zADSz7Nwc
  81.163 -16pga6KvOtQCrJynCi8hHC7t3N/gGZPvB9a5P+/uoofkPb1oHqB43o50svU8qiF7Sr2an65F
  81.164 -v2nNTEZWY2eMqEKhcbvlZASPtEx5kwu3x4pY4cKsJ5VYrWLnMwniPfoa9j3aVdy6+JCdc8jj
  81.165 -7FV/+rBaZD/SDgtV/z3B+NRobyei3COHjj7Oh3yl5odfj389/vbg0+YJC57l+ZfHH/pf8LdV
  81.166 -10ONUwS89/n7we/82yb84tj/d+x+34CHEOsHKc23yN3BCsmHaSm89iPQ8zCH7xP+pEF//vX5
  81.167 -41Q+HrG9oTA6K+scm6eeQ3+e+YdkxhoawGZnv+Bs/o/nf95v+/f7RR0ONyRQ5eMM/nmzGEGv
  81.168 -HMfJOYvDiajb9EZFLpZ2AFLPWZ4bhpJA+yYOQLxG9j7+5rREbkHbdPHy5+PC4MTxkfzjIiVB
  81.169 -g1s9e1xVcFyjzgZDBPP52DB1+Tpw61n3a1AW5HVp3b29KDNwMryLrXgF/b6I09/XY2iE/Ikw
  81.170 -4E26qIuWDkKMEDIohkyn2e3JmUN+ghQim+PLRryLJ3DS/olM9H1QUfPjhDS2JRgyNKemIRtB
  81.171 -HvzDeH3/2oEEfZ0wpvpsPed3XvZ5zUxFfl3FaPbvB726rhM4MxmTEfzX1ICGhqsuvuTYRhbI
  81.172 -ExLpdYaJc04l2fmJcYGG2kS4mFxqoHgVFq6RXTcwTYKfjw2bOv/XgXxzQiaQdtSk4ZUKRiKR
  81.173 -JMA+EDr0v2u10Xw+12xockNjCV2AoWqyziayEKA1Vrhz8O9KuC6OhyBb2eQ+tjsOBO0czzYS
  81.174 -31cjz+KusS1SLbYC9ePKI1wci6EQ6Y2rm9ZK522uCQO9l3r0kf1GEAFTdAGr0zbTVLgvl1ps
  81.175 -CkydlZPtRj7Ej+wj45mjDoFn/PwABNZyGhNkCPre53ozDU64SPm2A7fUXjOmn4+NxMQ3L8/P
  81.176 -E3fD0HDjbqLyfXCCvFQmTwW6DM9jzAkb2zvcmFGa9D0aRf6W6zmk5EpX5+rKuw1avrMSZIp9
  81.177 -HQg1mB1dI+BWkG/LdQ08kHv4NPEfP/9HdZVk1w3DsH1O0Qukz5ql82Sb+68LgKC+u4oRf9vi
  81.178 -ABLICIe2h1+AGjnCkQCfjbcFvJ2dkPoX1US9oV64a9mp1ZnQY6OqK3u2coRLrfJJBObvar6z
  81.179 -tDc7vYKv0aHbPyPEkTTODE1EjPNeMhBMyNY+mTAUy6sWi1iel85F3aBT9SsAapt+uUGy3DBz
  81.180 -YRgsr0saI+iEpb1Ku1QDbGt97j2zm+V1SKgkyysFXTXLAbi9guWQKbvMy3KqljVNJ4Bn5oCp
  81.181 -GLuvAVMpcO+96q+R5RRCl+Pctt0UhwRipwTFAab2e1DcMCkutTRNceia+LIoDpqNdSmeKChe
  81.182 -OQyaKU6wjylukBQ3TIobBhMBxr6FP2jIFwUM+QymV31fZdExrD5FL6KqXxwgKW6YFAc8mnmk
  81.183 -OFXRdGdXLp+enY28z+U+x/VRhKS4QVDcICluGBQH2Dc+lhGrIeNLyGcgiDmqXpcZISrRc4hV
  81.184 -VmKa4gZJccPb1gmX2u5Q9YniBJfgeDszIIK7iyNYLLFXGhaEYfEdCuUSBPd1EtwwCW5oDmJG
  81.185 -zJNhYHy8ZnnCq6L/F5KtYCLth820X0L4UdNyQ0wZh6FUVHndSqOE7mSI3498F7faCWnJGXSa
  81.186 -bO0q0yAkm2Sn7rHOLNXpO4FfjF8al7/DDld/ygxJuCVL5wnt2kIcPvSzOEoX6vOD2ITLB+2y
  81.187 -hdz2POkWWrQZWNjhYIl01lb7vdvkVGn5QF16A0pj/HO0OG2nWm2yPL/ELSKkgGIsS/5x9HgW
  81.188 -cvD9HdketMbQdxb2KxAFGsM4MqrUEvptOTKmpUlHc6faYX1TfcxEipWzwRiN4MBDeEaOuOB/
  81.189 -vgyxhYsqsE5RNtDk8qzyhWPV0Opzycryw6gmwmdSKfED3QIm3CNOyv2GVdf58Km+1jE3kuNb
  81.190 -GFWTD9FCfPtcj/YlPSm20ZYn6MgyVf7TVsLfD1xTBqsW/XajgQCiwgfBGESif74MuTZaPHeU
  81.191 -KHCCrocBDpEHrqcIDI3qqTXGMkKEIclLT+2Hq23Pk4DynuPCkK6i5McNkOqppSYYPGtaLUWb
  81.192 -ZxWlC7/480+AAQDBlngrDWVuZHN0cmVhbQ1lbmRvYmoNMTEgMCBvYmoNPDwvRmlsdGVyL0Zs
  81.193 -YXRlRGVjb2RlL0xlbmd0aCAzMjg5Pj5zdHJlYW0NCkiJbJdJkhu5EkT3PAUvoDQgAuMx+gw0
  81.194 -+1YLcvHvv2l3DwBJtWRaFJ+QAGJCDO0a1Z/5qs9+9VbwK6fyHFeq9vyVLm/P12NcPjrJxni+
  81.195 -gTbtma6qD82Nmxp/59l41CjY1K+RudLaeLZrjInf0/OzXmP6+v16+FXLgnx5mjy2t/X7l12G
  81.196 -P6/HwoKj69Ov1CFbu8wGTuv5wOvRrtZ9Y79abc9f9ZqtQjifk9BxhFSyTiwtcy1XQup9Q8Hm
  81.197 -Hh8S/WowxXujXRMXAJoTBnScVxqCTpP9PDJkmZmypDKen8OQwCpOyvWqIVErUB4UAtVSD0GI
  81.198 -QSsthml75taiG2kV/GeB8Wm91GFih5oOI85C4Q82WOxNnI0mbmXEMWV2ohUew5th/nYAHk9U
  81.199 -ZmOI8z68hMUxox5F4sql5hFhmeENw5hvk0647vPFXia+MINC/gdDeafdDCE1yo3pKviMokKX
  81.200 -POF5nJWvgTjICOOhk2uXOQ7zZh1l6S9crt7bF0NPmA2Ua9964t6cv/TcvPWEVnn8hbf7oZXl
  81.201 -fE5bOuOmcVPI8fqySMj58yU5bfShZgPHHJvBDs0VjSl3ylooW4JVuvTAJZB3MrbWUYE6G2Fd
  81.202 -ZcMyGLibERqFXxgSxVRy6LRKv7Jl0oTFDUGOC7E3VUl+2EuJvY5g5dmFWwufNaDdBLsU5o/N
  81.203 -eMVtxlbx0JPlQSmTquta/gG1VOPaxXym2DsvhyX/wvz+TRWL6+wKXbbC66ZFHeozxWxGWokg
  81.204 -waYc77zx44GwBOTxxC0ZkUqAvZDrYDGoxp3InA6n4jXTyTDrpkgs+HZxxurTYb5BEzfIg1MY
  81.205 -UYte1IXHLQY1aoarTFQEDI7Xb74dkEy+bV0uaHQIBGZq1XWAyvQpkPDF95oz4SsN5vMboae8
  81.206 -v3nphW0MlipLU55RNkn21OtZhTBZGZHRets5e5fwDhPXyJiIqc/DYciqJ+TyojO56xE5qg2o
  81.207 -psioSWQ3QcoCq92rJXyInXZTgQA9vhXjoSiN8p5Zf+PpMmLGgyF1PZeJhw4aTbVzSON9VvB7
  81.208 -M9BnoBcm7IH3DkTmanybSXl/4b0ZpXC962BDagxBqgV371+Crv3/Zbiq1S9mUfUnaN7hC8k6
  81.209 -lTzBjBqEGrNXUTvXKuKIxi6R+zyK4f8e/zz+/4Se+IegqBA8wfwTjUHH39fnwZXPg7UUTk8Q
  81.210 -Zv1kD6JEr1wWHMbvTarXML1qK9IOT3soniNYV3SnHkHvh/DSxv6W7OhL6ILNcNxQhFNLZBvT
  81.211 -J70uwEZEC/LWWoPm8cdyO1TQMTk/XYyihdPeh/E4Wt922prBlGNsvXUNWSZhh1W+f97W6TC5
  81.212 -zihZSTPXfM5fFLe/HpvLlmYxn5NUGFkpbAQlNHW/mHxLSFPRevxid6cjBhNGR8irP8thHxK+
  81.213 -ZUrws2qowhKtm8yfbIlm4QV3ZdHwW87q3Mr5zWD0+FAc7nsfPs5NMxzfThnin6K9eJNTRqph
  81.214 -nR49Ljam2+A/D+nbJwtrqK62l2lG7i64r6pK0fdtbEDRkS4L4Xy5ZqHrEaOFKkqcBZUcTeXs
  81.215 -G9gLs3ifteRaYxLGO1Zn2ZXwaRVT9UF0umyTK3vmMQWuR7fQVOnebKGbDm+QPhJG9Kro6m3u
  81.216 -Jvb1WOh6yO9HtAxAQ6izrdSa758FRS92CcMC741dVT+p+V8RxFTm26bct7Dr7VkUrz8wHIAx
  81.217 -IUKPDljqhQMWbAccS3RXw3JZFfJpQGeTNzIqtO8uivB6QJs0N8J9U5o31JwF7HS7PhQ21bb3
  81.218 -RiUC/M6+hUQ+TfXW9mCo94MZaUYDxGj9cLBaFbdxDqkKZLb18RvxWmN2WbMZlFxbkvIJjotW
  81.219 -LCtBoWOZ/V7TCBW7DsSBC+OutSuE+E3A1wNtU7b7cRwsay6s5TyQoc4jIiB+wztqbYIQl9qE
  81.220 -G6JRbYiOvoMUbm8QTlE/1Eku3HGJS+64hMg5BoZsG8rqQBfG5e+NIRcOsbkFXqPj9tXB7SvM
  81.221 -YLx6vcgPB5sU/Sr5/cUsW+I2pRmbA1CPLokjm2uQZWyVtmYkUzYthsjmjmhNEK+gmhVrNTMB
  81.222 -Z84CQ00QRi/OQkOdCspfztHVutIbPs3RfzKV6FtL48iTZdclrb5dHNrAtbP/BZdu7EGVQNiA
  81.223 -gXIMH7qHJajH6+PByAUSN5vx1hpVslBe1IBVPTw083hG05c9azQYSN7bmsifTTNvGnqpva0B
  81.224 -tUQEpKJVtvFb0+O30PSHw1FBMKyY0PA04zlPZM48NOewMmGVI2M7hJtQZ+1eRbmPFqkwATf1
  81.225 -VSyKZvFtT9HhoyxyNA1qVcR0SMqslRzYtLUixxPk1QJ3HrBI64EIfMQlx75+KgjuGyPf9YSy
  81.226 -1nsVER3+7/RS22XVlNFgpWYKyYGynNkIqzGsdR5iX72+FTeNMzxpKC1P+onjWt30om1Vx9Yq
  81.227 -5I1V9gBLZxwzwi9MPb49Jb9YPQzigMM0jqxOWgVIz/xmQ3qnD7vytU15VENnkOzSou11GS2F
  81.228 -I9xlJI/GzZVCM5+dOj+nIfDtiaTfpUVZNrUyfNTDOFot3gXYcsiETIfIMfYkkeoQMpY0ap4i
  81.229 -vNmVurU3F3nHYu8qW8YeYNEuxZt3Ld4cKY8nRfwy5+Ee7/1OejevAuzRYPzJkfGho60KwNOW
  81.230 -xuumRbsoby4a67S3RAQ29F8gRbXj5fCWZXS9I7A6r7NaSnyLbhnU4pTaa3yrjBipFdSjE2h1
  81.231 -kKaOqZNPzkpkUlcyMkaDVq1+U8o5vhVH9wBSwx4Pi1fauJ+dMXHZWUUKjR4thZq5tx0kDHqM
  81.232 -ubaHjw8ptyOj8fHopEEJu/KTWjipijAeSsK4zXrE+LoUzXubXyJhomvlrNbI3jTz/KJZZ3wr
  81.233 -LmqoQYOKo4lFb4BzVeLrLYLism4By1StRft0Q08jPhV3RQwoDQVlhS9xbAxSBEkw7awx6+Q9
  81.234 -joByU3CnFm4ZNW5UqB9kyIFmpG62iFutLnfoEovVDlWoZgQy05RxCil3EqNxx0lq8EqJQcDH
  81.235 -ARYCyb4YowusaXw4rpEO+Y5eWTUsMgaSTbyIwtUas1TRMLaJ4Z1D3MU5BMzR3PchahFwfSxx
  81.236 -reSz2nfetCYaUTmnhomfh6+xDyEHJ3we3nYlcJQ276pIrKXsZxdlVTQ0tIfNnKseU23Dy8Q5
  81.237 -ajFLYs1wFlsx5Qcl1ML0xOX8g3X0AugaONqun2e0dc46fR/leEgUD4SA3JRBEmhxUyv4PqzW
  81.238 -nAfVaP4QX56jW0ZcNjZWN0euc9Zi++J61YPOC3QUXUlVzy2ySosuZyKKHI+4H5E24bCwy2Lk
  81.239 -FyrXdyfVqdztGSWsH8qUPGqgetDNSOrJQ2YxGnueVtTQc9zFFSDVaVBilDivFLOebm1hdMQM
  81.240 -aNwk7yWqu1bxPNrct9401clshrGRFalDdIOUmLdEPi6q2t8ajRoK1WhZh1yPeyPXD1lZoRvN
  81.241 -7ib2LSvAxPiDBCuBbb1R5/Mb2+/S3NoJgyVAV+LdBGdJvHLaYibOz6PAss03O1o6mzF45ENI
  81.242 -LJNPazPfU3n+y3e15bgNw8B/n8IXCCBboh7HKPrRAwTtzyYLtPf/6MxQlL0oUCyQzcQmTZPU
  81.243 -cAjL8ziCQ8JvMEzJwU66WsQeQOlcAC/hu+fE3hUwzK7EGdDXcJ8Mv/nI6IkLZiElBAxTTsUL
  81.244 -gW61PARGE6NiNMyLk+F2uORzwgZOaRE43jQXsXA5FwAXq98D+44CNMa5AvoSLe7FOWp2rZsX
  81.245 -dvVRqpxO9QHUPcFUH4FCfUycJFllSpoGU+3FxI+IawhQriZNe1gF5Lh/EYrOgVlRczGbOIsu
  81.246 -wPaTZa83FRZ4Rme+zc7ITWy4VNiFY/c0ylw1BI/we7McmTjkHficTYy3Mg4JeU/lQirHc5sw
  81.247 -EmEorBJhcGyoK2kZuRGgvIxULMiEyE5MxVTkHUi7TVKYF+pqpcCnxMOLrkSXp4ScURevngUq
  81.248 -6SamytCoif7uTrvgR3BNoNhLAjcpYVhqNvmRsuSbZxw44NrWATTd13E7n1+9tYfdYnd6eN0w
  81.249 -7YT7kJ8K9jHqzSky4HVVrXTfPMNaK89biThynDE+ukeN7XDmc6R4zwULl0c/YTg9gdA1NXvK
  81.250 -hCmX9eLM3FxTgEZdK4yqWq6LMxxyUVtVBFfXpuh/bd/w93vnxE74LFjg7GyZzHfwDd8bL7y3
  81.251 -x9GwgGFScJx/p40uIKPqoU6aGvufn9uP/fPmrx3YPhBAB9vYgOhbDtP+6JDODGs6XEZo5CzK
  81.252 -ZP3KZdKSspD+MSgwwBpQCoVWullwg8KilCXxX/gRdVsPvHuoqEJm/7F1KU2WC/fwuFw87j7+
  81.253 -lwXoIqyUesTH7VHQsGfH6lKgXZqlcYsWB7Nq0pv+2eHsQx7GYK450HNjCVMN/Noo3zBY0Apd
  81.254 -MPmyASMdWspzXx/0Paspntv+V4ABAMjGeEoNZW5kc3RyZWFtDWVuZG9iag0xMiAwIG9iag08
  81.255 -PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIyNTY+PnN0cmVhbQ0KSInsV0uOXDkO3Ocp
  81.256 -8gL1IJL6HmMwizlAYRoGJj1A9/0XE0FSyvSgbPTSi4SBsiL1RIpfBT/KJXpvlwy7f8hVxgJY
  81.257 -9f6hl1iL9ecNaJrkjl22uNN1EoxGoGb8rl7V1r1e2uX+IJRRAYs6tGt2A6xzuZhGZWKD2lrV
  81.258 -BBAjV2917wlu2HGq1bWBAUh8SIjTxffmtLtcTf3+HTvl6tb5oV2qkFWu0ql6rkkwKr6EZNdS
  81.259 -S5oQsMMVuDNOzPrEIQBqK2SLC+lwYLkMegCkTAj5doN63LBeC5Z/vzW4ZSR6AI06Yd0ogfro
  81.260 -RKsD6aVQv5FcA65S9wP3Sm9AWvm3QZZeNga8UbTl+vNWcRVLBI1T4JGukutyNcjgV0QfcW9E
  81.261 -ZLjNClPsqu2ATygdEJ5QPc44NRF72SLoYPi+O2ilYmdACYF0am/j+VlT3xmKjSq+MQe/qsU3
  81.262 -1orvjLLdz9iqvlbjd21ltKp/N+LmbdAbGoem0gHTbIPPG6zqkSJCV2ike10ro0LNg/YiHE3d
  81.263 -MYMJueZkcGWvUSKe6YEQEWG0FOlnzAxDMC2W1Gk1f4cXJ0M0Ow+ZMqgMP1NF5jWpMlLs+ws2
  81.264 -fP0gFizoAPgGqAzfVSTRRgU+cn8Ehpm4xmNDXAEXkYHCawADOSrd6ykAznXE1/YejGOJ9cpl
  81.265 -hxqWvIelwSRChdlCgxbyU6r7LDIFHyGdPI9ovbDWxhaM3+DroxTH7eyxYlwts0E9L/H5dKuQ
  81.266 -aoNQGvYQc09F9CKsqzvXQxfIvKphOyJqNMkzsqRmXn+hurihjacCqWvwU9VLjpECaF5Zs7yA
  81.267 -SLyyM7lubS3rRF2d53aEbKH+2o4nFSaMjgJbadYXOMOP5H4JP2zM8Gs96IQ/cBS/H51G2AHp
  81.268 -U2YCsk6YjpIAp+AjOXsImJvJlpogGoh/OH8wOnGWJjz/NJrBjSILq584zWxIwC9gGl3Ry4+o
  81.269 -6gHeNifCJUJw4JPyAeFEGgPQs2txbf20SSiU5UmLvnXS3D3Q0fJfvNPhxLH3hvdihe4DYAJc
  81.270 -hQ8DsnVE8x77/fJKHRDQjkmot+hj6Z2Dwx14QOYVUY+mcGD4R4c3ypRGtPXEeieEo+0aB9EL
  81.271 -sLRT79rzGYmyBCx1V6niKdKZ3QCgeh1GN1DShp7dQKs/CtERlG/8aQhAiFv0AzX/MYWjol+a
  81.272 -kKq/G7mnqYv9AEB6Pf1AYVGp2Q8AkDneDrBU78rRDxLuhqDlCoE4inVoZj+Q5fm9G0LC3RGU
  81.273 -7X/s3g3QLDvCAd4REp3i2DiyFojP9g7/wiP7WhwHR/iVb2v9Cmf4xUOwww909Pj6hJ9odwOA
  81.274 -3rMZ0KG6Ex6gl3kSXumVnf8A3W1kO0iw20HCp8WJox0oSdqxWOkyeVr8xGlh840vcFpcPSu2
  81.275 -NLw4x2Jf727g6CQ8QXQCLJunBlsBAdM5WwF0ld0JToq78XgIXx3T4cC29/q1nI2xEyTYnSDh
  81.276 -6QQbZ4X2TU3clI5IvLwOT7w7wR+3f9z+vIO64R84OGurINlnRVDIwD6/37jFvx9TmY2M9j//
  81.277 -7xRqtdq81zrgnPo8NIoT35JHfjy0cGjyEIg8y+acAktmN2MxM/LlDm7xVOsftQVeBFfOinCs
  81.278 -+1//vv3r/t9X6YuFC35Xm5O68ZQewj+e0j9exaN04WqX859XeRUtcqGCqyGUTNfnbREIz5HR
  81.279 -etBSDw57CClm1418UKilb/zghDHoHq8/HwfackYebNeJyOwr13Yt8SHiV1NV/elUVX8xVc1f
  81.280 -TlX6OlXN91T1nqreU9VvOFUVec9V77nqPVe956r3XPWeq95z1W80Vwn62GKzmgX9ZckPc5UZ
  81.281 -974YkUTYP/D+gwDhFHj4c+iI8SUnJXDemGH2oPX3hiQR2oZnGa2SI1h7yg/xW/qPwn8yIqFt
  81.282 -wkWo7YlI2Vj6aiNfcouJpyxy71piTOgk5a3YBvRozhOEA1R9xTmSQjTA5oNCw2iDO3M+QAcA
  81.283 -JUSwVsupwSGayYND0MAxpICHlBMSvgLkWwQA5tF9GEgQFNGHJ8K4zGPDvCjSsfRtQqgL8472
  81.284 -4imAjrycS/tb0PwhA73Bh3g2ndfP0chlzXJN6t7nSvTgXOAsp3fzqaM6KZvmA9+IAWvkGjJX
  81.285 -kGGi7ny0OdcNHzLJJNfkuYrcDhS0Fq4tbJjsInCmDxIxB/gIycGGpBtmxMhjdKs4Nx54MKFQ
  81.286 -vE83yzUHlurCiJj/DIvqzDVyU2Oq6WT0Mjn7BKPVwr9k/7iPhF9m55sY9xX4gUSx3WM4KZ7m
  81.287 -e1Sh9+F7jni+4nuD0Jmr97mldF64GgkIpxBS+hmTCJ+YinCh8pB+Cee1GpNWcGKvW+O5jXiX
  81.288 -OMI+yhPqUxzXn6gf0ulAw9tNnNjrkLURtcSJo/7laskXPak5ecBn7tgeNKpNRjLZWCtE1XMJ
  81.289 -pwpS68CSzyeD4zAY/wqCykcQ1R/MfbaRwNmk9Lb3eJyhsr3kpGtJOoWPjlXfM7esdqeYOjdw
  81.290 -Y1obe4+hYTgnHMIruYgyVnD3vggF9ydxd48KKiPZ/8uH5hJXW9zT6gVV/EM17vRp8SHTLVKD
  81.291 -YBDUGhJ1eVq1VB2RQYWwFYvtaIj46/KMDRK2RKyYXXBWoT0ynJaPRg2jjBy4pvc7CiUPw3ot
  81.292 -yTWqSiQ+mxzLelBqcjxS4kU/smMHcMUyzx4LZWR74IU7d8zd842MskMzG/NeosrEuSaXcA7f
  81.293 -vsLfq8kGTN+W76TzuNY0n8nCp4KMk6RU2DEM1Uw2MCVBPNigFrnHi7JBMV2CeGJ7JPEU9oi5
  81.294 -nI5wFgIj6E486TF8HNQNfQI+Jw1wajR0beEcxuypGLNnP3sSurQ1rtnAIKFbcEESxMpXjNSv
  81.295 -VSrzjoNMWLxG9UJNiH7sbxp4IBkweDVjuFJ3UQRs+tTIFu+x3LC3Fuc43maUlmctPXEAR7MV
  81.296 -RJMw+sdjQwQHYgAiwRk2KKi+Y5L6HAav5cv2utwxh5wddfwXUW9tg93CEkbd+yk2OyRVkHmJ
  81.297 -KE2uu1isnTBabbmj/powugewc3ze7v8TYAB5DXT9DWVuZHN0cmVhbQ1lbmRvYmoNMTMgMCBv
  81.298 -YmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNDE1Pj5zdHJlYW0NCkiJbFdJjmy5
  81.299 -DdznKfIC9SyJ1MAT9LrRRyi4+wOuWti+P+CIoPQyC23Uol6kKIlDcFBr1+jzWa9m/fn1aAnL
  81.300 -5W5PgO4BYAugXqt0glqfn48Duccvm+3Hp4QA7Zq1nQPsGsV5dO8H4No8LaFdvbfcl3AuSvZo
  81.301 -+A6cRDDW06/SB7fhozmg+xPfzhUs4zOq5TeE+jVG7JV+hb6rn2+72tpihNAIun4dCG2tUnTZ
  81.302 -PHb0q7Z4OWJD7Pn1sHl1Gvz8vj+3K2xcq50jACaOzcM3yAh8PjY8rtjQr9kWRStM7ThkPq1f
  81.303 -rcQG2OfXguv3msNP+G6IIr6tLIAye8qVQketGE+DowddA9/g26Aw3AjXQ86wgecVqG1gAmix
  81.304 -D69XrPq6uCJA47WWlzUE2coVWinDKFiuYbxtmdbIFFxdgyBv7jXlKi/2pkCE4g8vL8R/7atL
  81.305 -GwTeGeYwBeLA0Xvuq85Qd59PgtV5w7oBuRncl5D+971v9UPTgBPuwC9w4y0DNmSQyrXq+PF5
  81.306 -wl6uhsDtsMMwa/voDfLaNNraZrb2eRAaIP04ksDwr/thNqJS5+Y5vl0W1nUDBDSlfNtHv2yY
  81.307 -GQ5gt304e1i77TuQe/x6/zi2gaN+9hq4fJuW4CT3hjejD5zinJ/cJv9kZuY24Ootc3tTOA1F
  81.308 -Krw8AJbE3Av9mvpGbu/vk9sbntzecKcfy0M/ZoBMfbxcsKFy+8/H74/y5F99/uvxj9/+qM+/
  81.309 -/vv4N1D+NhGlhRLUF3Y1KPH5LfnvB0pleg8l054f42pjJGxvcNcYfM3LRxILhkFiXuGiJiRe
  81.310 -6NcDTIVXPmAAzvl+wRnxBEBl/GAV6wQIC26qYjzgHLp4UZC6AuBQfE9+9mkSM5PYLANLdBbA
  81.311 -QqiQkl0rK6oEh7bF5BELfIeSpYJzBYkaB30+gK3Y22qvSxtxGtCYUpJukOxqUmw2rYZptTtQ
  81.312 -RQ3TlS0Y3wpOux/8RWxHpSdALVLCbXErix3QLDQSuDU5FcpLB+i34KhUfm7w+WC2O1FBHcJZ
  81.313 -UAq7sDTFeXi6BhN5QzAWeT1BTJyOKguAg2AZQJHggpuhSPZYeL4I4EZdnECZQD/R94npCZ7Z
  81.314 -VBqgviVifZY5yGfAOSotLzN4Yy1CTCKgPud2Guot8GJ5wAkW1Jt0III/PthGesqO0oijSHag
  81.315 -xn2wyq83RBp+gpdUcUi6w45v4amj4XKCKp9ExnWGlBgZSeAmlftKTqTLHJQWX4aQbVlbMohx
  81.316 -ZaHtAr3eLkyUDK0Jl6gsBVx8Zarf97P421EOoPaj986utElWIuLgInztYNC38Ez1Gssjccwf
  81.317 -2DLggcpe6a6MFL/DZ1JBAc+SwBDT7AHJLoR0rFMjj8IvJ2yMKFZRf1yWDrwxeUlsxrNKl18W
  81.318 -6Y57MxIowp9UcNJLHBCGFJTx4k4Xv+iKNlPUjzekv5lWFxowkav0NA0SB5+6VVH5mSHv2BW5
  81.319 -roZPbNKxYZ2oifwLrK2Mkx+fMwoNZWLNZDG5RjwtAxrPVlQMeTYICTSGZeQ1PoJQLWmBQ4Gs
  81.320 -bwYZUR1+EKyIrBvALEDgUHq9s1LcjGL9l+zG0XNVriqmjZ0kgVvPoUoUMgdoTkk2EjoQnGRf
  81.321 -zqcguDLSIi1hIYX/OZiXqpVxJnPPjRMMAJpLhy4QvLEWmoqVNAX2OokdIee8P7ODLMn21bOo
  81.322 -WspqFSU4ulZZEVCuMQQ00nGqsM8tW0NV1iAEHYJJjtJIP0Mjk+xIHTgniA6oZzTs1FyGgP1h
  81.323 -F2D68V6rGARrkmoKedd1I1omRYRWncUMtd6zGyD6RFVmWbI+NCUTmxKGTVCdDmQAMLwC2IQy
  81.324 -zt100Gp7K6sGD8b5DFi2Nmnuu89l6Gz21xprqrreEkFrPW6U6Oo6cnZRMrLrjrdvk40vzL7E
  81.325 -faFw1CXZVWVTiU30mbJkCn3MEpFVh/oUUWDF3DyzniTQSaUomWcVQ1cVGhr96RCPLP2Nqy20
  81.326 -kz8CFbYXUGuoqC3sFWayAfWUbSxxiF/RWl01ZRt7BOZ8BgE9d9SkMMMXIvdYPSO9TPnkoCxj
  81.327 -uzOoxY04XqbohiNJsbISGjKQV1QhDkpSoKogh+t+yrBUg9zSXGj4pmWJLM+IAylR/PTqw+DT
  81.328 -yRXt1yqJH9o5lRYcEnhuiUyh0nXP6ko3jR+caJvSzeopeiqDdF2covqBs/BIYnH7zz/vtdOo
  81.329 -Wr4LIaTch6xmY4KU5qqesFAhOzubYuKibCgojXgfzJEDWj5MqBkUaLHfMzOUAotDdsnuuVR+
  81.330 -8KpqHJ92YuMhZWwAexFJPOrZCFQzdfLYhlSYcS4F2lMpFToo1ZWssIuWZycni3Wfi2FsKJv2
  81.331 -rZyC9MyURnD6eKl7oniMydVjaO48bjjnHiflrceBqdFP98oPZfnL3S/sRTqV2NM+QW3auqzn
  81.332 -1toVi8KURvpknBooSpSlgRFOd6cLe+hRy6JMh5rQyJk/h3DgufoZ0YFi1TO+yy3+Gu6Bfb4t
  81.333 -jqyi2shXwXw7FqUyXyC8FB4sUY9C9O58aQvY0jLaYvky23YSeXt5gbjvSVSLw473Xih9fTAf
  81.334 -eHlQVxWZ1u5j0VzrFq2bRut59OFc5EdZjosrRUtOsxOt7ViJglPW7QNTuZUP9kzqmRI+z7x6
  81.335 -PHum1+P3vbpjsjfuiN3H7njuS3est0KbCUfdw5O05XAo7TwM20447EsPHWam937yFl7wY3fB
  81.336 -6rdwDsIFZQjv3r6LKydSAFtKrgGdgMaeqaciih5VskSioNu42l09AYbFW1aCanZnqaFgzPuV
  81.337 -ZJw15uuVZCwuWWs7FyMTmOXdaLdSPzTpAre0BREAMHm+kWAAkXHYgj72oN25yCcLXYtjXohl
  81.338 -JWUjXiMwdF//DzuJ/A7ZSolWHoYeSTQUmKr3ALHnEA/SAmX4FzofQTa5uR02+jiPU6A+xDGM
  81.339 -u8bKmYOy70Ot5Gi8tFq9HToyRN5fZGUI422RjywexDRjtxcROEpLtObja4VkS9nPRCgL0qyx
  81.340 -XZCcIrw9RFXm33H2uK+bgwf/ejji2zznJ7ISOIomrYqccNM/zkRomkB9aibqi13HOcnntIJY
  81.341 -u+tNwHkEJAWaI4NDGvhutq6W5JyF/FjsPYcVNnGK4upk4cKU5hzkxuGo59S9e4xkhavMIuJ8
  81.342 -lJO0sxoGUT8qLJ5UUeKkwhhCDWo6020lailb4l6ERUOXcESjYUUbh0ldlIIcGxYyy0lGJVi1
  81.343 -eEMuf2VuJ/y6YWW6wZdlSgM+FehpDvVoomVfUkhKlmB5etDTfItN6c6RLZF8UpiOexV05jui
  81.344 -aDRy9Peqc9nWITtzFbeiGwCtuT22hNLXVrbsykhMeANoZprwOQvUSz4vm6Vssww3UgI6RFLY
  81.345 -6RSkVMmnl+YcxrtG1kmRYWYL78hX2rYb+kw3hGXXq4pEj+zYAtby4eWRopbvF+IvahS+/o5P
  81.346 -ppw8OBiZEZk7SHpkd01y/4/pKkiOJAZh935FP8Fgg+1n7BtStZVD5rD/vyyS3DOpXEYxbWMM
  81.347 -QpQeTMjBZ1HmryuqlEX2i+QOPPmxVSoGntNVZANodvqd5NKAEpfrFf0oyupUjK2iFBhs90dN
  81.348 -BLJv/Frd55L1MgHeoHxIhiBCxQHNwNW+qBGsAvug8tdDtgdHsVa8w94rJtjnCDIWHc7R8NMq
  81.349 -MeCD+iPKHv4lEcYk+huLomHyLktDSiUF7jlpmdZPFAYxJCFi5Ad1xs9ILbFPxIjR3UFjsJbg
  81.350 -GPp2uzpQhuLJRB3d5REomDphYJWjGniZCH38jBO03S7cGME2JWJxivo6O2KeCDZTv3RG8Ajn
  81.351 -jF+oU408uGhrcycXMUGNYN/O+SPYueCDqKnnUnznw0wBds0PbRV2McpZbU7bPhkVpCb23Qph
  81.352 -cteFm1UgN/1reP03Ot4a9czBFe0j1+Fhfes8jBQygWZfIhid4g/34JFmPrwU6tpv1kJwS8s8
  81.353 -q5WHkxzGBKycbbSFtCnblC7ViBFo0WTDXa2qEPmjQkDxG6gN9gRIp0JbkU5/gHNQpeWOLsll
  81.354 -WFzONGFIcIakJ1s0PCDbbbi6U82aKcJmUBm4TlkRDwbnB3hLL6LGeQ8WB65TKJta+zxnLMl2
  81.355 -lD68U4GCVx6kCU++J+kGTQ07aeq1YHxMTBdPqaeJuhrTjUmiKRPFMdd7BEWSoB4IC7Cv1Hed
  81.356 -Dx0iQKWTSx9OSoHKmLWG3NlEGjIWZeb39ff6c/277W71Z/cMdNR9pyOVkHKvCyuvq9601fZ4
  81.357 -Z+bUqDKxUiTq1Ov8/rqY1PZZgvQzdTqH643jVtlVCtfD135HFBUbtwqL9EUDsGkyBMT5p2EH
  81.358 -u6Y3ieccyuohW1/EI3XgpG3kVkWxAnKYHN3ad5ryMLg6kex1icWsXnYuNZx5vcQVzkV+bxo7
  81.359 -ClHasBL0b+d+Q/vhSVFR0icQYF9XQdUDOKcsJZ9GpRg24UFBIWykuSOmikMkswZ+hyLrLWiX
  81.360 -kgkj0SY5hDkrs4DmKtuDhnNSgltRIi5HSbCCDwIFUzwYXS42yswMKpcMTbOKka0DGPrR4sks
  81.361 -HCQhkUH6z9gSp7SFgJY89SVd6ipE0wjB8saox301HwD+AC5NCKn3P82Gfa9cWJLnBgq+/wsw
  81.362 -AMl9eIMNZW5kc3RyZWFtDWVuZG9iag0xNCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUv
  81.363 -TGVuZ3RoIDMxNTg+PnN0cmVhbQ0KSIlsV0tyZKsOnHsV3oArACE+63HciB60J2//g5eZElS1
  81.364 -7Ul3pdEBfZJE+miPNur7R3/0td4/6mOb0GiDqO9x0OcbsLXxslr7Fir4sjz26EQ+G23LY67A
  81.365 -Nrg66o5TCPoIUDxMrRFq8/KocWark6hsmZY5w7Tgmw977N7fAXojmHM8gc8KywutxTZVn1Vz
  81.366 -HdGwaXvsnec37Aa8hnHVthFN5qVgv0E01s6wAtaumJ3AvUc6llCtmSyXaR9KrMcZnUfXx6xC
  81.367 -PEq2ewWu2qIN7dtaj+21T62yhZt9EpcyFFJr3HAhbIa7WmxPU3sMVpNna3HZJDKVmL9QOJj1
  81.368 -R6R6WSTelSPv7QXVnaYNWyEJ8IVVQDFqnGlYWQCr7PByIJQWVcRfd31n7HKujJUgil8sYVG1
  81.369 -+NHC74W/4EtGQuLhd0fECGYaV0vlb9GplA6jP2/jMXCaKzNfQF4E22jv49F2J+io8XgUpsDB
  81.370 -XDrrUWr+195h0YxgdQMoLAgAidIfkwwVAltjv4k0gZ6Nv72RpMZ1ngSECmxtYPjpQxvXPmTV
  81.371 -m27aBsEtb8DC/nYu5Gguu8rtWAjuETTesODvKfanmauIFTH8pau/QJw5e0DeVTgHFwCW2DFR
  81.372 -lq768YQaEccdRh7xc+W9xO8dN9/MlT9lCffZmbJaZefOZOpmdfGQhjYUC+nDdCnOiduDPNYL
  81.373 -aLhR5ITjKMLgb4uTuB0K7HKjLq4M131Yk9UeN9zPpMXJxXq0Hwh74yYLLVW14OYtMFPlNhcw
  81.374 -VXUs05bT2oF/Qb0Kisa13KDtV+DQH9wKULepcBP/AY2icseNJt5x16AxlZQX6ritQDvY4M5U
  81.375 -V8qA/IVaA/CLTBNQ3/OZQ+DpL4vbb6DVbpEkq8BtxplDqxaUM95AZNFVw+AtcKrJHlp1Epzs
  81.376 -0Zd6GfBHt7ANnhlDIZihWE8U+UpT4Qk5yA8R0Wp3V8piOrClkoWCk+4gawwznUVG5wpbhcKH
  81.377 -TLYKs6qiJwkVHJ2RL6WIOt7eM3sQq30zKyBDpf2sVR1f/RYLO44VhVUpqZDvp8pVKnE4kEp9
  81.378 -CIKYtkwthB8m/xLr821DcSSsOOnr0C7g38vCkMfAY/2DvenhcpcT0+LFGzpob6FWk2qtC5eh
  81.379 -OJ3Cz+eXuQGLAkTpWugwJJlCtbUnRKOSqHrU11KOcbN21ANXslIW+bB1v7+TDUKmK12voljV
  81.380 -joyfuinRBzaJvFfRZq5Q6KbrsfdTvRnP3AlP6K72hGny3HRHOcjYxH8vdokGUauh8ARtP3Vh
  81.381 -635dXUCx4jHhu87KheIjk/uE4foOAjL1iIQufSVEg9HkwHrwYAT5RFfC6tZT+QPDMxT5mn+D
  81.382 -phwFDL2pKBGRK9nsU4BCQlJ8FloEuyKyWW/qC13buBMvAg7c/WKgkVrfheYOFMVOzKT18H92
  81.383 -5XQWHTNmvM46Rs0QwTzHtHiGF1ctigFVA2BABLum81EaJJxhzkMNAPWohyczemB2ADhx4sZE
  81.384 -RfEBEEmoNyFta23xYGyulmohq+9ZT8hkKFHAWwS8cH38xKeGf95ak2Yllaho+WL+77+7dsjS
  81.385 -2CPydrJnoSnUClcMnoYxF49iNI929WXfqW6aprF2TSf2sJdjAh9Stq1wDysT3hAshOQHPiEf
  81.386 -++/4EJO4+CEmUfQcJCZQ7fZkJnDLyQQ1BurFDjUbCdSf1ARe/WKjavVDTaAaHU9Q8+BDTeLe
  81.387 -DjX57ehJTWy7k7Wipo7xQ822tWNQE8DXk5l0fq1kJuMMuoOMbSnVh5mAFlwkM1GNHc0pmQkU
  81.388 -nwUxAb34ISYLV/K9fz9VPcw8+NYBPZbtn/hJTWvq53+lUK4dCpmfVtNEoSd27EkUzQO0HGDV
  81.389 -GFOcIkwcXXEBH4ikyHXqu92iQ6ktTHcoSkfKDe192JL3QC30bVBoAXOGZQ8K1NeTC2gUlz+Z
  81.390 -Arz99leGux48IseALK+6unkkce7TQQHFd20JjCHTYhoP9p1pjfklbsFWPDa2IkF4asAUY8Vj
  81.391 -bOktjlkz9K/KI7v0kPN2uWLs0eMlRA5w1ooBAxQ1Np5Vj61ZmCYuiM/Y1WtgtUAzmoIVtujo
  81.392 -TQ0EWyAWZfR8+dOB0xUwXahCQObAokVg7pZC5yZbyVu41BI/rU2TaqAuAHuonbM6InW1qBEb
  81.393 -yApRNBPbhZo6CFNfQOjqEgcpATQjZEjjQUFKPr70r65oMRdpOjV9cWvkneUcSsmI4vYuJ7qt
  81.394 -CNRWONm02nbcJhKcnJHsVzXawCUkukIzkbG1ajaSp37ZZIqn2XOuoLQ8aGQt6D5ePeBN2dc/
  81.395 -aky9vueFa9mT/nnrK27vmVSIl67kgmgCDZHcOfOtmCqhIqp+J5UlOfhrx+1IwuEcoFrqpV8H
  81.396 -T9pd6+eB5WfgoteXPS3eozzRYuhKZxKdtvCJC0h4vqzK1Nk3Wl3Y5qFFtU5/yMbr62HqCSQX
  81.397 -M8b8LjNwd4305JGZuXTnn7zKAanHzXNi0xNCNKXChj/CvVLESNfE2kO3P6KfJYoKgQqdTag6
  81.398 -x+ojMx35M6glkI3QoSnkMS7GnAc87ivZWapx1A1JSFUK7QO27i+r3p9fDkhVe9kWPI5mT4ci
  81.399 -nXGKHCLj/cVd3IiIjLFQI8YNE1enzpckAFu9KSJaN32JbrIvHjt2MpVCDuW+nGd2urCSRfP9
  81.400 -OFTVPB13eZUyNAWDq7ZEeQUaU9ZJwxkgT5JigDwJ1H0+2c3LfVIfa1GU/CordvfMeuaJWev0
  81.401 -JplwfU2aZCRJoYwyCXZzkPTLDF2qKnv/EPfzzQ1tDtpkcf7rzTH9cVKAY2hJ0VxyOpSSAvTK
  81.402 -MSXUGrBxfoPyONcqpp8QQoACzxG+tzDkTWRfiR2hW3w2qFr8Pfik+NCGIWkcV6vWUPEiJSXw
  81.403 -23tqxx1zbvQsB5+e5th/x2duc5zxGz72nXPIL/iel/av2BhhgyQRoAiIagfYir1SngF7Y08N
  81.404 -b/kbbzj7a/4ehXmebYfZNNZgxxq7ISQY/3rVi8PUR8bULiNjWprIOorUVKu6dgIlrK/6XJsg
  81.405 -B75CJbL6TQTk++FTxb5TQeIzFTjf7OesmvBmYvBH/4lvJdL+Oz5TAbHfqYBorzMVODur9pwK
  81.406 -gGvMr1QtIPN2pgLnSGpPvfMdjU5goB09G6cC+hjNXkwFB5+pYLCtqWcqIKqWUwE2WvtlKtAx
  81.407 -/UwF/pxtJ4Hn9KqxwNnQzBwLGFrL1xVBrzu8fjIjbfbz1qIaa8wzFQAN38+xALjH8EdtYOUi
  81.408 -l0j1KesZCw6+hRgxpXzHz7Fg8Ka3c2m+Do5RAFlqEs9vkC9rbYlnO50msIUS45qghkD87KNI
  81.409 -DoG8CXGi/KTtXNGHcpX9rOfzDuBolc9bD8ghI9cgoP12pUAePUJ0pcPVkPNIXJTBVle2juIO
  81.410 -NRYhuwPdRHas8AmoRedIvSVSo9ak++OOVnzhiGboNfY7CFqosh58JAiez99w0+v4iluEnW0f
  81.411 -myKiaDvXnpGFWfXmTJmOeIAGXknmK/rXvneYutUzDgB1k22TqRUxgldRpjUgLhZAqdm/sl7M
  81.412 -zXn+WL7hzzWqIT9D2oGyYe6FLAQr9grnsCcosv7PdBldSQzCMLCVKyEkYJn+GzsJI9jPeZtk
  81.413 -wdjY89Zki0XRHID16GIHiAnJikdc+bws+RTN1/ZJ0sV77FPcu+1TVAIl/SSNL69+kuPp1k9R
  81.414 -TVLST1K+/egncdar0k8o884IBmUe7pUEpX77+RVltbrMSLP/+Cearz75J5RwnwVUhLgCCl7v
  81.415 -7b0CSo5vWEBJH2ABhbpsXAGFRo+0gK5VeOhHFY6vpUju/7WBBi+i2W2gJJSslYFeloGS5rgp
  81.416 -Rzl8xjVQcvawgepgENtA9wpc64rYnBsVhOFSJ8S4lQ7NSFXba/sd2z8JCu/xzxW5af8kZdmo
  81.417 -/FPEEB0BFcP+KShTkH+arn9qdTWwln8uTjsc2i6sqLN9xrzypzOYsH6KnmH9XDnTr36So+ZO
  81.418 -DU3QfGHj9Om5RJWn0/pJguVTyY+f/9cJ1GlpdSqqslgt3AV35RNZTc5SZGbZ80YR9QrMV7TL
  81.419 -dejkyfGsEoXiQBrVrxhEEt5VK61HPbvOhiX6rl81nLg6Zs3J1heo0X6nsrifMwdADTp+SlLt
  81.420 -PM3JbMp6kTWRmu5+po9U41j/yb2kYp1VkVM0soaY9tWjoUGFe2EZkLCCoGlDkGubo9WT2Uob
  81.421 -n/Wd3NFr3yHP7ZfBzPCbTOmW57PK1r2C3Xw4e3g5ahffWSybhVbw9y/AANF6dtINZW5kc3Ry
  81.422 -ZWFtDWVuZG9iag0xNSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMyMzI+
  81.423 -PnN0cmVhbQ0KSIlsV0mSZCsO3Ocp8gIVhsQgOEafIa3b/iJr0X3/Rbu7gBc1WJlVhvMECMc1
  81.424 -MMurrfn5w17d43OWVxXA//jt1Ql8zM+vD+AyK7H1z1ivmdPKIhgxNvj6AGz1+eQ1JzUnKrNp
  81.425 -yRa0nK/lS/v19gk0SxDRI6BwIxox03Z0uTPTdhSs66/SZNvpgMPVNO2tEbbp+shN/BWY8aDl
  81.426 -nqeawJxpnz8/Jub43PD7wB/t1bHSO17dPokatu2valMIRkADNOXK0w7+Fu6VuJnYnXURWV8X
  81.427 -Yd3S9lybB2suD9RfvW7utdEUsOgb6OitaNMJPyPwRw52q0StzWcT4DIGcbX4jPGa5LCC5nHR
  81.428 -oenB1jpXKlP31kYQdUjiB88bue4iSdASrlOXsYjgF7ytEZ/4XXoqZQzfEGDVIcMhfmxpmttm
  81.429 -pOUysAGQFsqrQwskq2i/WPFc6cbfH/98TKjQ6znNT2HTWSckMaHCMF0y/AVqUxdTqq4Rp1nC
  81.430 -HR8DXOkiJuQ8B4ReL/cTJt3ux/aaOMeeB45TG3tR7DzH3RKcM+y2OxtdhV5cavs8MxEy/qxL
  81.431 -Boy2e1OwhhMdh8jv9fZwf46yP+5T7ombg7vsZmhvutnbDv3CrVjwZW9cb1yVAYAqtgeqlD0Q
  81.432 -CazgqOXcqmsJHHEyUISQDQiWAsT62FwngbVq1eDvFvpN+kltRFqupdsdq5MEm7INKmcoUyWA
  81.433 -6cg8dj/OmHdi6LTPsoGF6t00cMi47oRU/jiLwLsHYbDEPWNkcFwCgBEQhx6idanb6BJ98Vi5
  81.434 -Emf68UfrIo+1tW25K69MKm6S0MTpj7PIs2MfTEdBbE+ZWib92uKScPL3oSiz+6FPiX9Tu0vC
  81.435 -oT0/7Ruxowjd111Td7n327e8fdkauJ5ugexzpHb2Cbew7vm37PxIZEtUzP0i2K+PVbFscrUq
  81.436 -BEzsPQuPfwLVkXR5I/KkspWZc82TIETywpJmeepJNEq/lAC2eiBALVkmB0EWvppmZplqm/FT
  81.437 -6bIbRYbFRF0s6mwZMqg04BW2lmXCweE7mqJZONUEEXGmKRAN96t1mlTY6l63K2g7/hBNZasY
  81.438 -OlXJEF6zpb8lFCe25KFlMNbIg9XMer7PVl14QIEkpN/oI1s+ntgkl1VhHPCfPKMOcSbKJG9h
  81.439 -F7Ix8hbqVOSarqg1Ob9INFCm2hHMbAvFcLWDv4VN5dRo3fI6IVFclVxqN92TwTpOqV3UrzI8
  81.440 -RVIkSVZaNSQryzf8g1gW+6qVW86LrvouNlz0nojLT1OtWtR6yQFtiZKY97urpx1PT6onH+4n
  81.441 -1QNJCSywPKEChZV0Jh8RqgoLV3TYMUn1oAyML9TVtZB0VAAL5PiTWPw4MhF+K+QRpDBZ7PT0
  81.442 -baT62c0JB20njpBU4oArMmwOz/Eap9vBb89FAydfI1Xb1bvCcmA4OyxgoL60TOVvaQvX2kZa
  81.443 -qvg1VT0gN10XuyUg6/o2vKdtyTrgXSuVlnpHh0gkbcWxVB9kg80iHf8TQoDRDlQhGIh2omg3
  81.444 -qAK9qsoAxSgKospBdAsEoVKY83a1q3VbijuUpS7WS5Fp72LZqsrSqJZ34F0HC5NtS0oUfuyv
  81.445 -21v4oTcft26ulf0fVhLwyEqoVaGBLo9s6uMucDOkCeklOfi6+jkUWWEC/NtAFuE9EFJAgZ4E
  81.446 -szvjC4LQfT49ODYY2QBnD/4PFgBvq2VvE9AsByS+HPjWQFv9xARh2Ok8iZT9Tl9qhXI/XSvR
  81.447 -KKejtQJB2BOHxLXdnotw5FoFZ7CC6tq0lM80h9qzsa5IToQ1BdWmkB5uaIWtbuvh4i5a1/c4
  81.448 -XXkuHqFaUVqa4/arfKFLhKi0x2/Qhj0ev9Gax7x+W7n5hH4D7p4z3TbmqXXdBtytJd02XFj1
  81.449 -N7cx4IyD7bax8s/rtrGyjje3ObBUAZ0XDtizz0BVEOpZnJdv6z6UwBgVCVXarfZ3WEe75vHI
  81.450 -RQf/64CrQftlwDdzq2cb0i1hNkxTTxMNFBX3SOvZ1D8NdByESr6mPieto+h7jZbXUnQ8T+uW
  81.451 -TbnNs3at4sqgA0Ibu/vQ/a7cqqx9/WO+f23ZV7BqSxvjra3hAOVNR6u0tLrQIuuE2XqRk1Ti
  81.452 -quOdtZGe/THw0HgHfAdO9f7QOE57dGhExk6mIq3dHxaRv7ckNotM4PGwiPYz21SxyJrzC4uo
  81.453 -LdmmJYsoLtUvT8gzXt9YRBrqz1cWEH9YZKLt7yy2Xc1FIlP2w2E7DerhcA88lDn8an8ZeHLl
  81.454 -zWw5gGRnyPzKvnXwLfbgXhlcTW0ki05pCasq0kwfOJAFovjM70ttlkXOjkz01XybT5N5UyS3
  81.455 -rM5Nj1AzUFXzOZWBjFqc01l9CHd7p7AG62ZP+eFAzP58H6ck4CfWiXyYDZlSLPreRn5XO9+U
  81.456 -ngSzdPGdQPNQk7YHvjWg9IWteKmAu41g3SHM/rA137upVMM/a9ubvrsVHaOs28mYsbzvlpGU
  81.457 -oOkrooQbClalklWTojvAlpqzLZNZ3XBkXZrbHEfY5WNf7tr9YPL55HNjXaon25OSkVVpEzqz
  81.458 -BvsamyHvStk96WBWYY4XCj1OWEE3malq9p9mSBv5lFl9w0yOteStYmCqoxxSzNRDiQSseGCq
  81.459 -90t6hqtNExzp6GcOZACu5vK9ZsM69t2rNTE1/XlwzxcZ04tuKx9XrnjgwzSfsxFbdflqpZU0
  81.460 -WM4jdlN6M4HkXM9bL8WfD0GpG2JavzjS5OF1lHEZzzEyTPOUOrijiBbdQSx1LZ4dOu/BlUGd
  81.461 -O+v6O+o8IcNSXUsIcvhpW9z0pjl9i6Mkjlv/gVg2r16A57hdjUOHa169AJ6lUy/OdjjrP4Xo
  81.462 -7GIFO6nwtpvkMcSxs1HMPoUxAeiZnUtJWFNBnjxzQDfWGQNAzUXjhPcXImAy4M7ATZo8yV8H
  81.463 -biV6BnxTMe2pRICx3gs6B7JURlqHjVuKnMJ+L+gkdvoNYcA2b0H39OEpRRjwarcUAe4iTP3x
  81.464 -AuNNgM49+9vXutYtRc6+uL6VIqqlxqlFFNNbMSKkdm4xOgOXNUOrkS+v3wZuMXoEe4uRMxNf
  81.465 -m593gEpO6qfSEu7W3vHbous0xL8NZA/5NuWPARQ11LA9UHq+T3hWwMz2zZegmgcWrVQQWiF/
  81.466 -qg1gK/rOdyuhnm23TmFgtjtA/8p+VLWEfBQRuqrHGSCPbR/IWpYTqQ/zh75H7rbaShR3N6k5
  81.467 -2FsDcl3CPFnXUyiWnZNMDcya5w47hcpDd3ALFXDNMOHrkhe1LJ9VMQVzat0cDZS5nm+ypc8t
  81.468 -C3CPz3vrVU+Ir0cGzxVhoYzp3wYe7fzn418f//1EBcM/+wyk7Qq/Rg9eE1b9+cEvPz+w50I+
  81.469 -LZi0fzINAmW/+AugEaPEzi+GA32mTFg25xv+52PCJ7sjdJYZJ98l//v3+czOqsORqUS/H1cM
  81.470 -O0Q9Yq3LFnX9iKTmExR8+sHfF+di39f+d8xEoeiDlu08qS681kPd3h/47pbmv0HsYW1jpvkf
  81.471 -7D6YznH+OQTVHnWJbCPc7mmuMcAOYORrjr3KJBp7qS4pHJytllzLd0eTRqnU/5Nd5chxxDAw
  81.472 -1yv8AhdJgNd7lHr/n7oPDndVCjEHbnQDaYn7ALpiuyY85r7p2fx4DeKIowwOwsYS0rJe8gxG
  81.473 -q3UHhylgKiRWLm6Irtm1VTxbCGTrQWpC/lrQ4Yj8KwdA+27Kw9wsPQgNyKkPALuMt4gGyCo+
  81.474 -Bzr2zF/dhIAxoegQ8NZibFvs/ZIsoijiPQxIlQOASjxuGniaS/F1Y9ZdBEAXZrkRY1gDZFuw
  81.475 -EB8lazRS74NA64c/TzAexFEci7fSQNc5di5eQbCe8mQBkyCOabGIOiLOBugH/76iedBCuYB2
  81.476 -rQqsaZNvdX2WGJGM4qlbcBqBZnPROMGN94ldNd83Fr3LGhdObib6m5NRrwhM7dNfSwaIANK5
  81.477 -phC1eD0Oqp4+MrY1d20vohH4ycbVZkp+JrBODVwrRHVm0OPaqlISReO3kMdoBnSCEwkjuE9s
  81.478 -WcW4IFuV6eDJ0SQR3d0EbBvomly1lpa1l2R6ObVX09J2BMBleLHM2WlL2M/Scw4VLPo27YFr
  81.479 -RQ0+mbSYs2X6fckV25S31Xpr64TpbTsx0WSUOUDa9lYAYGUKJGd7S/978ZbgCryuDPZBq/Xi
  81.480 -C3Fodc7tQw2AkvQpQX4hkNyoT5LF5VSiK5NHWLz9TwQd477FkPku1Z+oc64PvTwv4lpFK3Eg
  81.481 -7RElFOJ2zPMWDVWh4/m18mBYV7Ogk/gGwy09mINejObB2UgHXCzLgNNy2Ofe3MxcPRBSGe8x
  81.482 -fSK8U5vz2D7vSeDz/TfoaMendmwKupOO9a3ePJ6dTF+/n0KcuJ4qnah/FvH7689/AQYAnKh9
  81.483 -Qg1lbmRzdHJlYW0NZW5kb2JqDTE2IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
  81.484 -dGggMzE4OD4+c3RyZWFtDQpIiWxXO7YcOwjM7ypmA+4jJCTQepy8wN5/+qoAdfe1Hc0UrQ/f
  81.485 -Aum6rI3Pj3H11j+/v9QvbTPwkI/uay0ncv3Mdununx/zat0/P7+mXN3xcV3i+wO0fH1+2DWx
  81.486 -8aB9tWm5NrC0a+LAs1Xk2rg9ThbAcbWlWB73crleffZPKNUDOnbruta2gFuEy6GS6PN9XLbs
  81.487 -2d2vPdf79H7J6PftKpfJvnU78Kh+cBp29qbRcbQ9Lombd/krtLLbld8cDY/Ma6mEktMcnj8C
  81.488 -vWzY59fXHJfiir/wgB6TuNb/iQWajcLSPw2enJ+5LjX5yDW9f6ZfXSbBitj4tfognAgFzO78
  81.489 -pjYJFKbLNcbgwoTt6rZ5wb5kEY6xeOZuTsDbcCJ0ToB9dtle55sh9FRLeJtdbSNwPJIL17UZ
  81.490 -WKQDbiCiQS0cQNSZMlfTVWsj5teYYd9uDDlipTdCrLrW2mYvV+3Q+S98u7rW/4krVr++/vta
  81.491 -8JOfFb+/FnX1Z8fB54Za/gc8oTK4RictXfLGZ7n1y+wf+Nx21v+JBQ7QIxhZYExbQO8JrQHK
  81.492 -5TJv+JPnd6nvcCDghJ6EqA+gXWdNz8WJNXaHdvNU6+DyxpIgQmxx1xrjVbvQZdt6vjP2eRj4
  81.493 -AkjEy/HUDI6zmZcN6x9A3fldEHfAkYXuzXJ1L8PUJz/LSMhfwvACvDlXLm97hGAgzCdIMKCt
  81.494 -G0lU2U+kgKGi4QEUf2+CHAC+EbwAvkgmgPXm7+J3WDX8oQJHTjcNDL4AshZ1PaCzIxQ91lqY
  81.495 -BGzJEq3vj8MSCY5QCIHGim9b41zEi2Gclw5+NFMCcDgAzgaJqWgu9B2ktuEuoI00BOGNoS+0
  81.496 -THJt4LsWoNFS+4fAcK0VppJQQ5XmLQ8lFXlgGzkyAjVqQkft/Crhtpbm2QaCR/OcqbEW5CGh
  81.497 -dWfiVDQMGb5u5JHIP+9Y3UoatNnjbwHoJKKX6wv99+XoQCR6JhjrndiyZcCpQEH7Qn5FBLFq
  81.498 -Zh6xl8JnG07fkXh9fTaqL9oTwrPnZ6NI13pVHwRb9RZsRjGXK1J/I9Xd4vAdrAyBad2Gbrfn
  81.499 -JaGJg1IB+grUZhyNzslMK8GvLyzYs0pb4/ChWbobXWAjFU1exQrVxavRorZhF0sjGm26oY/U
  81.500 -tHnYjRRY1eYnviNgsbtFXh54Gu3BCDNqhXvZ7tBowfc8ekcmbC+Pth0M7tQT/cPldFpo7VOf
  81.501 -8qIDu53y2pq5To5QOihyFefGaAAHDc/2DuIDMrqDpdwDsRQzB8gA2M3mgyxjBH8Th5YwBISC
  81.502 -m7alBVhE1yLarIK8iapr5DaIjDHnvZn3tGDtpyqYMVUl/NquVt0KvROeYLNkVXSG2NmI49aO
  81.503 -0AGx47MqJkGwZapLA4RJRWJCAjvz+hZYJB2haJy2kMkiLO0YAY1RIG4ZFsctgjj3Nk5tS0Pa
  81.504 -T3nMkIZr5ny+G7Is+aolVA0GZTficjZR4+WG+BFai/xgvgeUsMbXqOUhQHysvkfF7vjvbJjI
  81.505 -PI3pIc6emZpMYV4u0SpQwmA94hFF2INouQNZEHWK9oYJkNjp+CjED23r1SR7P9Zy9IpGCbvo
  81.506 -DibCqWtiq9rLwqf/ql2hauhckfwuyx7nU75yPb9kOXcQeQRPkpaaZ/Re0c0NWoMB59ZXvCFx
  81.507 -I9fxGt1Z4z1SAIdbvxt0qD38RQo0VMzu8ZueaTO5lfVIX49Vt+705YxuQsU5GRLnfNKCMAJT
  81.508 -zx1zfW4IQTqZUEcWJqdaHkceYpRXLWdVsQhapgKHWtaIW+mznqn9VjjG9tucUdrT3v3QiVDJ
  81.509 -YpuWSc+Ow36d3vLZs19rlchsUecNp9DfLXN+Dn8iBOJ4xwccPi2CkYLqQ8KxSP5AkaLbvgs2
  81.510 -lxFqdZbtgV3W3fPyvinfB1vp4CvGImn59yOwqGbpqM9pOSxowNHiCbSjK4M3c0TjFILQdvJc
  81.511 -v2u+wx39zQkd6fXihM5J1e7dAudnqOp0CMT7fbug+ve6dQNkTt4t5f6OmAlr8Gxn0Myf82NS
  81.512 -DpdAgVbJukIdLRrYK/Fu2Zt7Egn0z5YJV8IOYvdntr4Nfqq8j9LhrMCvztcJek/f5w69lr2U
  81.513 -mNkASsUKwMuEitAx8gTwOOF7hLmhdMyM/h0XksROCeBAdTv1ge0jx8oqnw7uzPLj44JwJk/P
  81.514 -2Fzwua0EHJ5Y7Gc7pwRWK89vOS21pWUQ5/cgFBRXqvfwDdWvvC5G6myYrxUI83wfgLSIYfi5
  81.515 -QphBjw5iUZ+3jgc/iVWCMrK2lwfi+DfBxP2PA6nderz7zftYPdB7SAqZ479DEDwPlsCQJmPl
  81.516 -CJg1JINvoXdJDVKRnXFBBtIk36rsgYSR4EmRXC7JZ+jxTL8hYcRpswfC8jFreQjgmgHr7u1w
  81.517 -ncrrfORj32H9UaBa461fDcC3AU+JDFgqT2sk9p0n6NrhAe1VEdnZBvt5dWcSA1zWNfu7sz0f
  81.518 -n7Imsj0PtGdbt+RXSEbNr0vzlq1PXlHP2b7lGSzb0u95mL6wet1yIJbBx+1rIKaAz8MzEUvf
  81.519 -Rck5Et/4KZYS5FAc+7ucqZj3tRwMt5/g+DhjMR3dOFBUolF/f3cyuNX6ujsZ7A2PgId6ulBH
  81.520 -DHeyvDwmO1qZhzvgwGT+GM+OPzNrY7pUP0/ZidxBIusOBivBr0fw9LCXJJrYBB8X40YTI46x
  81.521 -625ivGW9n3L3vTxDZ0nWrGENplKC8W1l6Dr4G+6sZlnB1pks9wRbtXpBDUIKjVaSijHlgLul
  81.522 -HiMnUu2osZQ0DpXAY2dDXr0HlpFMJ0kUKtWverxZiG1k/0F4Aq+Z+bPmqh2zyo9TYWDNjKJ2
  81.523 -b6zazw79FgTMftL/IWBWIhYlSTUoCNPNa1JNZ63+fsPSneuYyhqHu7V2sFsR75pVZjY5hEhr
  81.524 -IvdYcYKIGmI6HrzD+5Ffk08gyXHJmV8QxENpRpVB7zmjlFkQdM5EkPddAdh0vxuzIBY6ZCZs
  81.525 -59S1MJvsINLGrgHoke+rR0IsMlyMNhtPBMKadAa0kUWu4lE7PbJwSlaXxmGsonFepbI4EY+3
  81.526 -Kis6z/0dfOYBh8+A0eDo7+CJBe5acXkLXTzfFkxZxGeBT/JhtjMHIOgrPEeOB9Ieb8jdA03S
  81.527 -NTg2h28KpmRlz/xu8UQcTOoHcqSv5fatHqlcm/+SkGKsBD1bJmuM9o0m91QI7wzzV4uD93pS
  81.528 -UbQ4+jojwfAyEtvimTpzaoQgSndFPAklejcH94M8pq5cLP5N2RaG/0PyqI+W7o/6EyT2aD+R
  81.529 -6/7WHmm4MxyhPaCksaH9nFnRt/YQxPOktI+sv7UvdGtf+NF1ks77vyR4FYkdASOOOmI6AKqF
  81.530 -ekNWQvFDD3VF94cvUInG5O4szrHi0UCBJ+1MdkLg4flUjTcY8GZ687XZ4lRLe2NKwK2G9Ksp
  81.531 -OQjEMI/4tyHBHGm5nyHBkNMjhwblYwDYW0/OH8HH3qI041LWILBJTn1OtgXmiETcZtzhKHHZ
  81.532 -twS+csm6jCEhb9kzn1D7f7arJbmSGITtc4pcIFV2+wfHmDOkKquZ+28jAcZ+k1Q2Ea/bbWyQ
  81.533 -xOP7bPJiEpCYHIuAxGdch1mEBWoa7fYIi/+14xEWSFf1eISN0yPsQHgEvF9LT48AaLWaHmFR
  81.534 -r2qaBG5PjxvF/mmxDhHxWPshKpzRKG5laT5xHI/zjrqRRkDVxkO6Kh6gHTn2Rm4h5GJeJ0bi
  81.535 -4h4J3gLK8s+x91aBwtn31LOhOwUszlv+OeyuGw/QzFpJqGRjMRfpV+OxqPr1+3A1Zct0g0XN
  81.536 -GY9H46TohNh4tCKAlVtF5w1H4MfYuKcyoZI9W43JYK3XdtyRbD4G3I9b8xGe3gPqq1+9h08s
  81.537 -ubXavumvT9kBpyIyAgNr2zrhGQmk4bjAqiVHPb9vRalrXjfQ8snFdEdxf7VfuqOPtc7WHeUy
  81.538 -I3UHsPd16Y6ym9fWHaUsb9kB0DYv2WFgScoOoVe5yc6BITs7cI4ae9tu/L9I8jYDZSRvM9u5
  81.539 -kriFNK5X/eDs5JqsAKtna8TNg/bFwtIgUNQy4GJRHKgePYi8HdWjYkaaqzXjUIUF0LEDf08g
  81.540 -L3+/8iPAGa1ZAClg/vkgd7wE9iu4dYj/80vgfDZe+RGgK+0ZCXvH4fApcJvBkuRmuDHgdrE3
  81.541 -I7LZG/XHr5J/3FIaHLHgEHt+B7qt4Pus3S8cuXLBVVfac2Izd0nE3NR82vUE3F4o/aKUIolt
  81.542 -6Nmin5ZWU3+isXeAawwJ7H3iUnzAk+gHibEClW8NI96vPJgWePogstzAM9LdCdPjnCvESFTm
  81.543 -hasJDkvl6+0P/t6/BRgA6y9qdQ1lbmRzdHJlYW0NZW5kb2JqDTE3IDAgb2JqDTw8L0FJUyBm
  81.544 -YWxzZS9CTS9Ob3JtYWwvQ0EgMS4wL09QIGZhbHNlL09QTSAxL1NBIHRydWUvU01hc2svTm9u
  81.545 -ZS9UeXBlL0V4dEdTdGF0ZS9jYSAxLjAvb3AgZmFsc2U+Pg1lbmRvYmoNMTggMCBvYmoNPDwv
  81.546 -QUlTIGZhbHNlL0JNL05vcm1hbC9DQSAxLjAvT1AgdHJ1ZS9PUE0gMS9TQSB0cnVlL1NNYXNr
  81.547 -L05vbmUvVHlwZS9FeHRHU3RhdGUvY2EgMS4wL29wIHRydWU+Pg1lbmRvYmoNMSAwIG9iag08
  81.548 -PC9OdW1zWzAgMiAwIFJdPj4NZW5kb2JqDTIgMCBvYmoNPDwvUy9EL1N0IDk+Pg1lbmRvYmoN
  81.549 -MyAwIG9iag08PC9Db3VudCAxL0tpZHNbOCAwIFJdL1R5cGUvUGFnZXM+Pg1lbmRvYmoNNCAw
  81.550 -IG9iag08PC9MZW5ndGggMjQ4MC9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5zdHJlYW0N
  81.551 -Cjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+
  81.552 -Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhN
  81.553 -UCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAg
  81.554 -Ij4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy
  81.555 -LXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK
  81.556 -ICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgog
  81.557 -ICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21t
  81.558 -LyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
  81.559 -MC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6
  81.560 -Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAg
  81.561 -IHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAg
  81.562 -ICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAg
  81.563 -PHhtcDpDcmVhdGVEYXRlPjIwMTQtMDgtMTBUMjE6NTA6MjMrMDI6MDA8L3htcDpDcmVhdGVE
  81.564 -YXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTA4LTEwVDIxOjUwOjIzKzAy
  81.565 -OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0w
  81.566 -OC0xMFQyMTo1MDoyMyswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3Jl
  81.567 -YXRvclRvb2w+QWRvYmUgSW5EZXNpZ24gQ0MgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9v
  81.568 -bD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDpkN2UxNWU4NC0yMjA0LWZhNGQt
  81.569 -YTNjMi0xODc0YjhkYTI4NDg8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpP
  81.570 -cmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDplYjk4OTk1Yy00ZmZlLTRjOWMtOTNjNy1iZGQ4
  81.571 -ZDU0Y2U3MDk8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRv
  81.572 -Y3VtZW50SUQ+eG1wLmlkOjZjMmQ1ODhjLWJhMmItNGJkOS1hMWYxLTAxMDRkOTA1MmMyODwv
  81.573 -eG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOlJlbmRpdGlvbkNsYXNzPnByb29m
  81.574 -OnBkZjwveG1wTU06UmVuZGl0aW9uQ2xhc3M+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5Pgog
  81.575 -ICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
  81.576 -eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVy
  81.577 -dGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJz
  81.578 -PmZyb20gYXBwbGljYXRpb24veC1pbmRlc2lnbiB0byBhcHBsaWNhdGlvbi9wZGY8L3N0RXZ0
  81.579 -OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFk
  81.580 -b2JlIEluRGVzaWduIENDIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAg
  81.581 -ICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAg
  81.582 -ICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTA4LTEwVDIxOjUwOjIzKzAyOjAwPC9zdEV2
  81.583 -dDp3aGVuPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2Vx
  81.584 -PgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJv
  81.585 -bSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5j
  81.586 -ZUlEPnhtcC5paWQ6Mjg0NzZlZDgtM2VlYi00ZTlhLWI4NDMtNzJhYTU4MGFjYTVhPC9zdFJl
  81.587 -ZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOmVi
  81.588 -OTg5OTVjLTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6ZG9jdW1lbnRJRD4K
  81.589 -ICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmViOTg5OTVj
  81.590 -LTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE
  81.591 -PgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+ZGVmYXVsdDwvc3RSZWY6cmVu
  81.592 -ZGl0aW9uQ2xhc3M+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxk
  81.593 -Yzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwZGY6UHJv
  81.594 -ZHVjZXI+QWRvYmUgUERGIExpYnJhcnkgMTAuMC4xPC9wZGY6UHJvZHVjZXI+CiAgICAgICAg
  81.595 -IDxwZGY6VHJhcHBlZD5GYWxzZTwvcGRmOlRyYXBwZWQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0
  81.596 -aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+DWVu
  81.597 -ZHN0cmVhbQ1lbmRvYmoNNSAwIG9iag08PC9DcmVhdGlvbkRhdGUoRDoyMDE0MDgxMDIxNTAy
  81.598 -MyswMicwMCcpL0NyZWF0b3IoQWRvYmUgSW5EZXNpZ24gQ0MgXChNYWNpbnRvc2hcKSkvTW9k
  81.599 -RGF0ZShEOjIwMTQwODEwMjE1MDIzKzAyJzAwJykvUHJvZHVjZXIoQWRvYmUgUERGIExpYnJh
  81.600 -cnkgMTAuMC4xKS9UcmFwcGVkL0ZhbHNlPj4NZW5kb2JqDXhyZWYNMCA2DTAwMDAwMDAwMDAg
  81.601 -NjU1MzUgZg0KMDAwMDAyNzI2MSAwMDAwMCBuDQowMDAwMDI3Mjk1IDAwMDAwIG4NCjAwMDAw
  81.602 -MjczMjQgMDAwMDAgbg0KMDAwMDAyNzM3NSAwMDAwMCBuDQowMDAwMDI5OTMxIDAwMDAwIG4N
  81.603 -CnRyYWlsZXINPDwvU2l6ZSA2L0lEWzxDODIwMjYzOUE5Njc0MDgyQjQyNTI2OThGNkQ4OTNC
  81.604 -OD48QUM4OEI2NkM5ODAwNEY4MzlEM0U1REMyNjA4NjVDQzE+XT4+DXN0YXJ0eHJlZg0xMTYN
  81.605 -JSVFT0YN
  81.606 -
  81.607 ---cEobB2knsyc5ebfU--
  81.608 -
    82.1 --- a/test/msg3.asc	Sat Aug 31 15:40:25 2019 +0200
    82.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    82.3 @@ -1,17 +0,0 @@
    82.4 -From: =?ISO-8859-1?Q?=22Eifler@dontpanic.ulm.ccc.de
    82.5 -To: mail@ccc.de
    82.6 -MIME-Version: 1.0
    82.7 -Subject: =?ISO-8859-1?Q?elektronische_=DCbermittlung_von_Steuerdaten?=
    82.8 -Content-Type: text/plain; charset="iso-8859-1"
    82.9 -Content-Transfer-Encoding: 8bit
   82.10 -Status: RO
   82.11 -Content-Length: 1136
   82.12 -Lines: 29
   82.13 -
   82.14 -ab dem 1.1.2005 ist es verbindlich vorgeschrieben, dass die monatlichen
   82.15 -Steueranmeldungen an das Finanzamt bzgl. Lohnsteuer und Umsatzsteuer 
   82.16 -elektronisch, d.h. in aller Regel ber das Internet, bermitteln werden
   82.17 -mssen. Ein Ausweichen auf die Papierform ist nur in Ausnahmefllen
   82.18 -zulssig. 
   82.19 -Gru und macht weiter
   82.20 -
    83.1 --- a/test/msg_no_key.asc	Sat Aug 31 15:40:25 2019 +0200
    83.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    83.3 @@ -1,44 +0,0 @@
    83.4 -To: notreal@kgrothoff.org
    83.5 -From: Krista Grothoff <notreal@kgrothoff.org>
    83.6 -Subject: test3
    83.7 -Message-ID: <579B4AB5.4090402@kgrothoff.org>
    83.8 -Date: Fri, 29 Jul 2016 14:23:17 +0200
    83.9 -User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
   83.10 - Thunderbird/38.8.0
   83.11 -MIME-Version: 1.0
   83.12 -Content-Type: multipart/encrypted;
   83.13 - protocol="application/pgp-encrypted";
   83.14 - boundary="Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU"
   83.15 -
   83.16 -This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
   83.17 ---Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU
   83.18 -Content-Type: application/pgp-encrypted
   83.19 -Content-Description: PGP/MIME version identification
   83.20 -
   83.21 -Version: 1
   83.22 -
   83.23 ---Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU
   83.24 -Content-Type: application/octet-stream; name="encrypted.asc"
   83.25 -Content-Description: OpenPGP encrypted message
   83.26 -Content-Disposition: inline; filename="encrypted.asc"
   83.27 -
   83.28 ------BEGIN PGP MESSAGE-----
   83.29 -
   83.30 -hQEMAxqoixpCqEC5AQgAw2FSvhWUNOLTXDigj/0sSAvjsiRnywXoa+IWXECZhIy0
   83.31 -78J+Ib66VgdVUuHuxa2tw1EojKWtSrDlcxJUnWwcewRaRzwGmZ2OTTvMb+ri8y4B
   83.32 -YdwDsL0MthWiXO/V81kiYjyA5jn6e1p4kYPWJCHTeBu1DKZFreulD/ckMFBFgbwt
   83.33 -fttSaMMDuU3gjlQET3kOppWLatMevosXiwUOBr3fhDZvGIGu9OI6tiXlul0B1+aG
   83.34 -YSn81tIaZKPixlgVVmJYXVbz/P1PM2ilbGbOOyrcDvY2YDFiQfjdjh7V+noshB9u
   83.35 -n3MBQ/altgUdjfPX8KDp7RACddr2QuoY2SGF1PMcwNLAmgFZ4T1kAtaT4l7+/nF5
   83.36 -c/DhDccRFLtb3wNjuhMs1QJQy+2O5cJBvT42U+0TM72MFTwRNwXlWNkn8r8eJfZj
   83.37 -6TUyZqNK6LqKKZksNUIVhGPcore3HPhfiSVV8k7iRG8mZ2wfMe25hhGG/0+pCOiB
   83.38 -9/OCXKOgFNlWSVzfmbQ9dAvxaZVlDOrgy7weS8aGkH73B+u70SX9iXNvmfLoXv90
   83.39 -0oimyhfkMd+9lK9rFwqh/RankVun1V03lQJhyaPMotWOIw06Z+8s495G3h6UiUIu
   83.40 -vqBfr6mPzIVVrIuSeWSBY/lE+1+3DUUTbx5lDWynRxND7bd7m1uwcl2nIAcmsJ+R
   83.41 -JKm1+JTEwoYgcPBUT+lxshFexqXv19hk7NWIAmhNmEpRRsi27gqmk5IVDmeR4upr
   83.42 -w65H7Es9EN0no0C5ZjUdGke4jQ0ILL8akqDFTWp8vCUuQgKZNHRayQZ84cg=
   83.43 -=q/R9
   83.44 ------END PGP MESSAGE-----
   83.45 -
   83.46 ---Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU--
   83.47 -
    84.1 --- a/test/no_key.asc	Sat Aug 31 15:40:25 2019 +0200
    84.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    84.3 @@ -1,56 +0,0 @@
    84.4 ------BEGIN PGP PRIVATE KEY BLOCK-----
    84.5 -
    84.6 -lQOYBFdifLABCADG3TqnFQ8npE/XboLx7tv3kU/+qI5aI9fmJ4xZaiyc++/9YXeH
    84.7 -uUN5cTUpzSLIsrVuKDRn7hXorrok92ELrFhL5DbSfn0np6SLxr53821cmJKh2PxQ
    84.8 -3ucA8Mu/QgXE21HeVFGAbaLMaDm4B+0Tp3PAKNDnHNpWtc6+EQGCib4yW6HQ5+9e
    84.9 -aJhglGPbXGr2qanREDiyshuDCaDPrgrs+5CQnUR+vwNfPv7ovyPX7BLmxpaP0gve
   84.10 -4ehpYaK0rUpzvXCNbHt+Shu40aXa0uRU8JajF3tvisJwsXkZcpqVJsP+OGWka7rp
   84.11 -ikicjT0FOCBCYskjTRMfptQnfMF2z7J9yb4ZABEBAAEAB/9EV4IRKpUXOAoyTKnW
   84.12 -sBJLTdaSe2XUh43qbDv4/JqRZqmux+C2tY4BPc0Z7QQfuf7M+Sctcm54FRgmnRdu
   84.13 -Vg/QIQFQLKUhTCUp3ibV/UPftxVpZrMrrbbwpVA4Dd4CrabAg/SwcL0qh0USwDKS
   84.14 -9xC6AKzuSAWnF/sRabG9pU3GawkV5s9bjSCAWuZBQhL0aELGREE8ap+R3bBfz5Et
   84.15 -ModEKGtJwqp/5nRl8NdiO9qNE71MVKFwskSuLNKxPSmi6OBUgCa14713lq0AJdho
   84.16 -RxpOrTI/dhNXBZBhPOsnFTla7V4Z9dPkqoRDyfpki1dmFRSunJILmoR2zSFzWZQo
   84.17 -xts7BADbA8JkCdJClweAK0EyyRE8EzIzgz6QEwj4rHym2ZpQdPrNsKyndQA8PBkF
   84.18 -l9NbeagthSq5je0Ho7McDMX4YeCj2vgKrUu6LNZLb5585AEO5keG8JGeFQv/55Uz
   84.19 -cumrDvgNZLMWrIOi+Ez+wPvwSTNL8z45gxIDS4kD4QsopnH/GwQA6HJXcg8MNy72
   84.20 -bN9+rcZ0Q64RT6f4k8q82QTLTEbw973XswQ4yTJWTuoU5a9AbXFsYS/G8Jhxd3aJ
   84.21 -kdKaaUMaBaTq6/iSc/H+Z3DlNT1wpWDC6yx6UV+ho2xaX0MybM+wohe/E5y7b6/9
   84.22 -XHeDEx1r/r7eUE2syuNhBSMGAkUbptsEAKGFOM6cz44tONKfiJhYVe7M770Rbbld
   84.23 -dmH5AIhw6PFGtlM40DRiMiwLe5VH2ymyoTJ3cKg3Cd51Etgk8ph+w3VwUNh6C3Br
   84.24 -BDTbBpVG7B5CLRVFG+M+CV/UFKzCoR2lt2WEzviweI85IrKM7awyi34vM3uytoKA
   84.25 -savQ6HgApiehNQq0HVRlc3Qgbm8ga2V5IDx0ZXN0QG5va2V5LnBsb3A+iQE3BBMB
   84.26 -CgAhBQJXYnywAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEAwGnPcHfiud
   84.27 -2iUH/iYCQVb4I2PIExOKPZZPFcoFFBrnifR+99G1X9bS65pTsN8aQ3h25DU1YvOY
   84.28 -tGhOFlx1qEBBy0YKzVMrmEl8HfZsqcjnJWvTmAcddENJQZ0ODJRnJC9JhSB5PUfR
   84.29 -X5+QG4At6pdxexKoEbZYsZf3QF8IzUlvybucl9t5sCMd2PBpscmLV2qbR6amivq4
   84.30 -WaBlu8oyenNTGKjGY4g5Xm2hchem87DFnyycY3bOYlWFBQrDe0Dr1Vkk5q7taErf
   84.31 -E561X06HKO2ee6EjHj0+fCKPsY/wbIAMSpwTJ5eFcXILxsH9C+KEt5JYrwe+vlrY
   84.32 -VGt2ytaUD//x+QZ8aHu4SzrqDnedA5gEV2J8sAEIALoZLH5f8bFukM495mR1symr
   84.33 -8cd6PI/Fqze1I3zDOt2cZ+ZdvhCSTAHNi+J9jj1/QG6HxvHp0y9XKjyLOsAiDUJ8
   84.34 -32cEmSdyH+TPWiBSyj+DVyJkQVuUB5++qjJJd53hOoC6/Y7yoCDE1vTaetwzxgAr
   84.35 -+30FjvmTg7uFzLEwclRL1n77x8dzUHqhL6OxTVGtEezF+rE4MYv4bElNp4AgsEaZ
   84.36 -XR4kKxwTE97nmBR78nmXuor2TsyUfLtlpuIE2jkQTDI+YZCAPsVrDy7/uTGtKeoa
   84.37 -8qvnINvl64uy3QZBTpGAL/dtwDjwgl8rO5SAOUs76UAQs+KNpAa1Ne2+Bx9GBlMA
   84.38 -EQEAAQAH/Rxrp8iNAoOkbRJHkHNF07IeLkiBOdUtzPOEWFe/a7Kt0OL07LKUhRhp
   84.39 -ZF7slIJ+d+qUFc/wHm5xE2Q3pyXx4rCFaDYlakuvOYEKIat6DqUbJn18GMx8PkXT
   84.40 -1SOPkL2tyJohny5A44TdoC5jXLawZCFhQNZbuPVoj9+y6WB4vkfHzTGy2y68hmbU
   84.41 -rKm0l8iqvelC4FP8WWNoVDcn992OJ0s/hsMjWAGE0h7KoDi/c50ZZ0JND2VuNMUk
   84.42 -FYH99q15wXQ4a6n9hC7wg632UW+O3MOdCCW9Wfve8DiyHuQ53ytQ7vto/fFKq3aY
   84.43 -TuKvUu4zjsPevVfyTxXXIdq1KfHgYqEEANbRRMXa3w20qutiid9K4Cj72vy4Ba7u
   84.44 -mg8Az65o6V1r1lykFzI4XP3+uSRDaeWt3GTQPtX3hanv/u6VdKqxyPhHsUoy+SqG
   84.45 -S/xqR08x1u55ySFfISNL9UU1tklbi5MJLxljTq2eVg4CSY41kFFllqmNBGro16zJ
   84.46 -I3tHla3Kx6c5BADdxnBWyOWjLyCnTJkK44YPxKXs5kT58zcNaILFxtVA6glKG1vb
   84.47 -7i1STOtYKFD6sI8k7zYXC09kzzuucO5ubh2yiapfUFVZ8WpF+ulM2ANX3n8/+yRL
   84.48 -Y9H886gcwVF3QqyZGh2jyyJoMIS04ePpQZxkJ2fbVM+V3tLKNFglT+6t6wP+Pbus
   84.49 -Pk4P/ALuJx8XIUe9wvMaKBXBeq1fEOKszhP3kTEPAgq0Xc2gHUULNvaBpz003o+t
   84.50 -87j9pMvCsN/bkZcFDvUCEL7Y55gZT8nhRq96JfRZFazXToq8OtlT6C4TJ1bx0KB6
   84.51 -MhWyHRjXWXRJ9406H+S9MnZA+5Ndjm0m7bExNyBLa4kBHwQYAQoACQUCV2J8sAIb
   84.52 -DAAKCRAMBpz3B34rnU9KB/99tygAltB4L2xLz/lOwvigD45Y3D54NKGvR+XtMUnP
   84.53 -lpsoL08KW1S7hugRGNrVMXy5BnTjDOY/IjCPGG2pkw9ZBvDev1ZR/9SFi8Qtp0Wv
   84.54 -+wKZHHGLo6s5FJ13JjwW7eGUsKDjlHl7ET6NZZxBuRS4cuFbnrgBmA3ugVKX0TLK
   84.55 -6sYoiubAZkanpJIusZeqT3cdZZV86B3urVDQqPwMkF+UBw/yBA3e2z7JFwhrzFnl
   84.56 -TZ05Tvx6m6NCxIWQh6ck34c+fQdcLSy8DF/dK0DKmMf5pIgJB7UVbVC5zuEoCa/i
   84.57 -/TBCkEmrTYZDJGv46Dx+ytdjKBHc1SvDyHYpMm1Z/b0d
   84.58 -=NB6+
   84.59 ------END PGP PRIVATE KEY BLOCK-----
    85.1 --- a/test/pEpEngineTest.cc	Sat Aug 31 15:40:25 2019 +0200
    85.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    85.3 @@ -1,360 +0,0 @@
    85.4 -// This file is under GNU General Public License 3.0
    85.5 -// see LICENSE.txt
    85.6 -
    85.7 -#include <iostream>
    85.8 -#include <fstream>
    85.9 -#include <stdexcept>
   85.10 -#include <string>
   85.11 -#include <vector>
   85.12 -
   85.13 -#include <assert.h>
   85.14 -#include <string.h>
   85.15 -#include <sstream>
   85.16 -
   85.17 -
   85.18 -#include "../src/pEpEngine.h"
   85.19 -#include "../src/keymanagement.h"
   85.20 -
   85.21 -using namespace std;
   85.22 -
   85.23 -typedef std::string Buffer;
   85.24 -
   85.25 -std::string slurp(const std::string& filename)
   85.26 -{
   85.27 -        std::ifstream input(filename.c_str());
   85.28 -        if(!input)
   85.29 -        {
   85.30 -                throw std::runtime_error("Cannot read file \"" + filename + "\"! ");
   85.31 -        }
   85.32 -
   85.33 -        std::stringstream sstr;
   85.34 -        sstr << input.rdbuf();
   85.35 -        return sstr.str();
   85.36 -}
   85.37 -
   85.38 -// no C++11, yet? So do our own implementation:1G
   85.39 -namespace{
   85.40 -    std::string to_string(unsigned long u)
   85.41 -    {
   85.42 -        char buf[32];
   85.43 -        snprintf(buf,31, "%lu", u);
   85.44 -        return buf;
   85.45 -    }
   85.46 -    
   85.47 -    std::string status(PEP_STATUS status)
   85.48 -    {
   85.49 -        char buf[32] = {0};
   85.50 -        if(status==0)
   85.51 -        {
   85.52 -            return "PEP_STATUS_OK";
   85.53 -        }else{
   85.54 -            if(status>0)
   85.55 -            {
   85.56 -                snprintf(buf,31, "%u (0x%x)", status, status);
   85.57 -            }else{
   85.58 -                snprintf(buf,31, "%d", status);
   85.59 -            }
   85.60 -        }
   85.61 -        return buf;
   85.62 -    }
   85.63 -
   85.64 -} // end of anonymous namespace
   85.65 -
   85.66 -
   85.67 -Buffer ReadFileIntoMem(const char *fname){
   85.68 -    cout << "opening " << fname << " for reading\n";
   85.69 -    ifstream txtFile (fname, ifstream::binary);
   85.70 -    assert(txtFile.is_open());
   85.71 -    if (!txtFile)
   85.72 -    {
   85.73 -        throw std::runtime_error( "error: cannot open file \"" + std::string(fname) + "\"" );
   85.74 -    }
   85.75 -
   85.76 -    Buffer buffer;
   85.77 -
   85.78 -    // get length of file:
   85.79 -    txtFile.seekg (0, txtFile.end);
   85.80 -    const size_t length = txtFile.tellg();
   85.81 -    txtFile.seekg (0, txtFile.beg);
   85.82 -    buffer.resize(length);
   85.83 -
   85.84 -    cout << "Reading " << length << " characters... ";
   85.85 -    txtFile.read (&buffer[0], length);
   85.86 -
   85.87 -    if (!txtFile)
   85.88 -    {
   85.89 -        throw std::runtime_error( "error: only " + to_string(txtFile.gcount()) + " could be read from file" + fname );
   85.90 -    }
   85.91 -
   85.92 -    cout << "all characters read successfully." << std::endl;
   85.93 -    return buffer;
   85.94 -}
   85.95 -
   85.96 -
   85.97 -int main(int argc, char* argv[])
   85.98 -{
   85.99 -    PEP_SESSION session;
  85.100 -
  85.101 -    cout << "calling init()\n";
  85.102 -    PEP_STATUS init_result = init(&session, NULL, NULL);
  85.103 -    
  85.104 -    cout << "returning from init() with result == " << status(init_result) << endl;
  85.105 -    assert(init_result == PEP_STATUS_OK);
  85.106 -
  85.107 -    PEP_SESSION second_session;
  85.108 -    cout << "second session test\n";
  85.109 -    PEP_STATUS second_init_result = init(&second_session, NULL, NULL);
  85.110 -    cout << "returning from second init() with result == " << status(second_init_result) << endl;
  85.111 -    assert(second_init_result == PEP_STATUS_OK);
  85.112 -    assert(second_session);
  85.113 -    cout << "dropping second session\n";
  85.114 -    release(second_session);
  85.115 -
  85.116 -    cout << "Importing keys...";
  85.117 -    string pub_key = slurp("test_keys/pub/pep-test-alice-0x6FF00E97_pub.asc");
  85.118 -    string priv_key = slurp("test_keys/priv/pep-test-alice-0x6FF00E97_priv.asc");
  85.119 -
  85.120 -    PEP_STATUS statuspub = import_key(session, pub_key.c_str(), pub_key.length(), NULL);
  85.121 -    PEP_STATUS statuspriv = import_key(session, priv_key.c_str(), priv_key.length(), NULL);
  85.122 -    assert(statuspub == PEP_STATUS_OK);
  85.123 -    assert(statuspriv == PEP_STATUS_OK);
  85.124 -
  85.125 -    pub_key = slurp("test_keys/pub/pep-test-john-0x70DCF575_pub.asc");
  85.126 -    priv_key = slurp("test_keys/priv/pep-test-john-0x70DCF575_priv.asc");
  85.127 -
  85.128 -    statuspub = import_key(session, pub_key.c_str(), pub_key.length(), NULL);
  85.129 -    statuspriv = import_key(session, priv_key.c_str(), priv_key.length(), NULL);
  85.130 -    assert(statuspub == PEP_STATUS_OK);
  85.131 -    assert(statuspriv == PEP_STATUS_OK);
  85.132 -
  85.133 -    pub_key = slurp("test_keys/pub/pep-test-bob-0xC9C2EE39_pub.asc");
  85.134 -
  85.135 -    statuspub = import_key(session, pub_key.c_str(), pub_key.length(), NULL);
  85.136 -    assert(statuspub == PEP_STATUS_OK);
  85.137 -    assert(statuspriv == PEP_STATUS_OK);
  85.138 -
  85.139 -
  85.140 -    cout << "creating message…\n";
  85.141 -    pEp_identity* alice = new_identity("pep.test.alice@pep-project.org", "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97", PEP_OWN_USERID, "Alice Test");
  85.142 -    pEp_identity* bob = new_identity("pep.test.bob@pep-project.org", NULL, "42", "Bob Test");
  85.143 -
  85.144 -
  85.145 -    cout << "logging test\n";
  85.146 -    log_event(session, "log test", "pEp Engine Test", "This is a logging test sample.", "please ignore this line");
  85.147 -
  85.148 -    // Our test user :
  85.149 -    // pEp Test Alice (test key don't use) <pep.test.alice@pep-project.org>
  85.150 -    //                                 6FF00E97 -- won't work as search term with NetPGP
  85.151 -    //                         A9411D176FF00E97 -- won't work as search term with NetPGP
  85.152 -    // 4ABE3AAF59AC32CFE4F86500A9411D176FF00E97 -- full key fingerprint
  85.153 -    // 
  85.154 -    // Other peers :
  85.155 -    // pEp Test Bob (test key, don't use) <pep.test.bob@pep-project.org> 
  85.156 -    //                                 C9C2EE39 -- won't work as search term with NetPGP
  85.157 -    //                         59BFF488C9C2EE39 -- won't work as search term with NetPGP
  85.158 -    // BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39 -- full key fingerprint
  85.159 -    // 
  85.160 -    // pEp Test John (test key, don't use) <pep.test.john@pep-project.org>
  85.161 -    //                                 70DCF575 -- won't work as search term with NetPGP
  85.162 -    //                         135CD6D170DCF575 -- won't work as search term with NetPGP
  85.163 -    // AA2E4BEB93E5FE33DEFD8BE1135CD6D170DCF575 -- full key fingerprint
  85.164 -
  85.165 -    const char *kflist[] = {
  85.166 -        "0x6FF00E97.asc",
  85.167 -        "0xC9C2EE39.asc",
  85.168 -        "0x70DCF575.asc",
  85.169 -        NULL
  85.170 -    };
  85.171 -
  85.172 -    const char** kf = kflist;
  85.173 -    while(*kf){
  85.174 -        const Buffer k_user_buffer =  ReadFileIntoMem(*kf);
  85.175 -        cout << "import_key(" << *kf << ")\n";
  85.176 -        PEP_STATUS import_status = import_key(session, k_user_buffer.data(), k_user_buffer.size(), NULL);
  85.177 -        assert(import_status == PEP_STATUS_OK);
  85.178 -        cout << "successfully imported key\n";
  85.179 -        kf++;
  85.180 -    }
  85.181 -
  85.182 -    const Buffer cipher_buffer = ReadFileIntoMem("msg.asc");
  85.183 -    cout << "\n" << cipher_buffer.data();
  85.184 -
  85.185 -    char *buf_text = NULL;
  85.186 -    size_t buf_size = 0;
  85.187 -    stringlist_t *keylist;
  85.188 -
  85.189 -    cout << "calling decrypt_and_verify()\n";
  85.190 -    PEP_STATUS decrypt_result = decrypt_and_verify(session, cipher_buffer.data(), cipher_buffer.size(), NULL, 0, &buf_text, &buf_size, &keylist);
  85.191 -
  85.192 -    cout << "returning from decrypt_and_verify() with result == " << status(decrypt_result) << endl;
  85.193 -    assert(decrypt_result == PEP_DECRYPTED_AND_VERIFIED);
  85.194 -    assert(buf_text);
  85.195 -    assert(keylist);
  85.196 -
  85.197 -    for (stringlist_t *_keylist=keylist; _keylist!=NULL; _keylist=_keylist->next) {
  85.198 -        assert(_keylist->value);
  85.199 -        cout << "signed with " << _keylist->value << endl;
  85.200 -    }
  85.201 -
  85.202 -    free_stringlist(keylist);
  85.203 -    buf_text[buf_size] = 0;
  85.204 -    const string plain(buf_text);
  85.205 -    pEp_free(buf_text);
  85.206 -    cout << "\n" << plain;
  85.207 -
  85.208 -    const Buffer t1_buffer = ReadFileIntoMem("t1.txt");
  85.209 -    const Buffer sig_buffer = ReadFileIntoMem("signature.asc");
  85.210 -
  85.211 -    cout << "\ncalling verify_text()\n";
  85.212 -    PEP_STATUS verify_result = verify_text(session, t1_buffer.data(), t1_buffer.size(), sig_buffer.data(), sig_buffer.size(), &keylist);
  85.213 -    cout << "returning from verify_text() with result == " << status(verify_result) << endl;
  85.214 -    assert(verify_result == PEP_VERIFIED || verify_result == PEP_VERIFIED_AND_TRUSTED);
  85.215 -    assert(keylist->value);
  85.216 -    cout << "signed with " << keylist->value << endl;
  85.217 -    free_stringlist(keylist);
  85.218 -
  85.219 -    const Buffer t2_buffer = ReadFileIntoMem("t2.txt");
  85.220 -
  85.221 -    cout << "\ncalling verify_text()\n";
  85.222 -    verify_result = verify_text(session, t2_buffer.data(), t2_buffer.size(), sig_buffer.data(), sig_buffer.size(), &keylist);
  85.223 -    assert(verify_result == PEP_DECRYPT_SIGNATURE_DOES_NOT_MATCH);
  85.224 -    free_stringlist(keylist);
  85.225 -
  85.226 -    keylist = new_stringlist("4ABE3AAF59AC32CFE4F86500A9411D176FF00E97");
  85.227 -    stringlist_add(keylist, "BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39");
  85.228 -    stringlist_add(keylist, "AA2E4BEB93E5FE33DEFD8BE1135CD6D170DCF575");
  85.229 -
  85.230 -    buf_text = NULL;
  85.231 -    buf_size = 0;
  85.232 -
  85.233 -    cout << "\ncalling encrypt_and_sign()\n";
  85.234 -    PEP_STATUS encrypt_result = encrypt_and_sign(session, keylist, plain.c_str(), plain.length(), &buf_text, &buf_size);
  85.235 -    cout << "returning from encrypt_and_sign() with result == " << status(encrypt_result) << endl;
  85.236 -    assert(encrypt_result == PEP_STATUS_OK);
  85.237 -    free_stringlist(keylist);
  85.238 -
  85.239 -    buf_text[buf_size] = '\0';
  85.240 -    const string cipher2(buf_text);
  85.241 -    cout << "\n" << cipher2;
  85.242 -    pEp_free(buf_text);
  85.243 -
  85.244 -    cout << "\nfinding English trustword for 2342...\n";
  85.245 -    char * word = NULL;
  85.246 -    size_t wsize;
  85.247 -    trustword(session, 2342, "en", &word, &wsize);
  85.248 -    assert(word);
  85.249 -    cout << "the English trustword for 2342 is " << word << endl;
  85.250 -    pEp_free(word);
  85.251 -    cout << "\nfinding French trustword for 2342...\n";
  85.252 -    trustword(session, 2342, "fr", &word, &wsize);
  85.253 -    assert(word);
  85.254 -    cout << "the French trustword for 2342 is " << word << endl;
  85.255 -    pEp_free(word);
  85.256 -
  85.257 -    const string fingerprint = "4942 2235 FC99 585B 891C  6653 0C7B 109B FA72 61F7";
  85.258 -    char * words = NULL;
  85.259 -
  85.260 -    cout << "\nfinding German trustwords for " << fingerprint << "...\n";
  85.261 -    trustwords(session, fingerprint.c_str(), "de", &words, &wsize, 5);
  85.262 -    assert(words);
  85.263 -    cout << words << endl;
  85.264 -    pEp_free(words);
  85.265 -
  85.266 -    pEp_identity* identity  = new_identity(
  85.267 -            "leon.schumacher@digitalekho.com",
  85.268 -            "8BD08954C74D830EEFFB5DEB2682A17F7C87F73D",
  85.269 -            "23",
  85.270 -            "Leon Schumacher"
  85.271 -        );
  85.272 -    identity->comm_type = PEP_ct_pEp;
  85.273 -
  85.274 -    cout << "\nsetting identity...\n";
  85.275 -    PEP_STATUS pep_set_result = set_identity(session, identity);
  85.276 -    cout << pep_set_result << endl;
  85.277 -    assert(pep_set_result == PEP_STATUS_OK);
  85.278 -    free_identity(identity);
  85.279 -    get_identity(session, "leon.schumacher@digitalekho.com", "23", &identity);
  85.280 -    assert(identity);
  85.281 -    cout << "set: " << identity->address << ", " << identity->fpr << ", " << identity->user_id << ", " << identity->username << endl;
  85.282 -
  85.283 -    PEP_STATUS get_trust_result = get_trust(session, identity);
  85.284 -    assert(get_trust_result == PEP_STATUS_OK);
  85.285 -    cout << "trust of " << identity->user_id << " is " << identity->comm_type << endl;
  85.286 -
  85.287 -    free_identity(identity);
  85.288 -
  85.289 -    cout << "\ngenerating key for testuser\n";
  85.290 -    identity = new_identity(
  85.291 -            "testuser@pibit.ch",
  85.292 -            NULL,
  85.293 -            "423",
  85.294 -            "Alfred E. Neuman"
  85.295 -        );
  85.296 -
  85.297 -    assert(identity);
  85.298 -    PEP_STATUS generate_status = generate_keypair(session, identity);
  85.299 -    cout << "generate_keypair() exits with " << status(generate_status) << endl;
  85.300 -    assert(generate_status == PEP_STATUS_OK);
  85.301 -    cout << "generated key is " << identity->fpr << endl;
  85.302 -
  85.303 -    const string key(identity->fpr);
  85.304 -    free_identity(identity);
  85.305 -
  85.306 -    char *key_data = NULL;
  85.307 -    size_t size = 0;
  85.308 -
  85.309 -    cout << "export_key()\n\n";
  85.310 -    PEP_STATUS export_status = export_key(session, key.c_str(), &key_data, &size);
  85.311 -    cout << "export_key() exits with " << status(export_status) << endl;
  85.312 -    assert(export_status == PEP_STATUS_OK);
  85.313 -    cout << key_data << "\n\n";
  85.314 -
  85.315 -    cout << "deleting key pair " << key.c_str() << endl;
  85.316 -    PEP_STATUS delete_status = delete_keypair(session, key.c_str());
  85.317 -    cout << "delete_keypair() exits with " << status(delete_status) << endl;
  85.318 -    assert(delete_status == PEP_STATUS_OK);
  85.319 -    
  85.320 -    cout << "import_key()\n";
  85.321 -    PEP_STATUS import_status = import_key(session, key_data, size, NULL);
  85.322 -    assert(import_status == PEP_STATUS_OK);
  85.323 -    cout << "successfully imported key\n";
  85.324 -
  85.325 -    pEp_free(key_data);
  85.326 -    key_data=NULL;
  85.327 -
  85.328 -    cout << "deleting key " << key.c_str() << " again\n";
  85.329 -    delete_status = delete_keypair(session, key.c_str());
  85.330 -    cout << "delete_keypair() exits with " << status(delete_status) << endl;
  85.331 -    assert(delete_status == PEP_STATUS_OK);
  85.332 -
  85.333 -    cout << "finding key for pep.test.john@pep-project.org\n";
  85.334 -    PEP_STATUS find_keys_status = find_keys(session, "pep.test.john@pep-project.org", &keylist);
  85.335 -    cout << "find_keys() exits with " << status(find_keys_status) << endl;
  85.336 -    assert(find_keys_status == PEP_STATUS_OK);
  85.337 -    assert(keylist);
  85.338 -    cout << "found: " << keylist->value << endl;
  85.339 -    assert(keylist->next == NULL);
  85.340 -    free_stringlist(keylist);
  85.341 -
  85.342 -    cout << "searching for vb@ulm.ccc.de on keyserver\n";
  85.343 -    PEP_STATUS recv_key_status = recv_key(session, "vb@ulm.ccc.de");
  85.344 -    cout << "recv_key() exits with " << status(recv_key_status) << endl;
  85.345 -    assert(recv_key_status == PEP_STATUS_OK);
  85.346 -
  85.347 -    cout << "sending vb@ulm.ccc.de to keyserver\n";
  85.348 -    PEP_STATUS send_key_status = send_key(session, "vb@ulm.ccc.de");
  85.349 -    cout << "send_key() exits with " << status(send_key_status) << endl;
  85.350 -    assert(send_key_status == PEP_STATUS_OK);
  85.351 -
  85.352 -    PEP_comm_type tcomm_type;
  85.353 -    PEP_STATUS tstatus = get_key_rating(session, "BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39", &tcomm_type);
  85.354 -    cout << "get_key_rating() exits with " << status(tstatus) << endl;
  85.355 -    assert(tstatus == PEP_STATUS_OK);
  85.356 -    assert(tcomm_type == PEP_ct_OpenPGP_unconfirmed);
  85.357 -    
  85.358 -    cout << "\ncalling release()\n";
  85.359 -    cout << endl << "End of pEpEngineTest for engine version " << get_engine_version() << endl;
  85.360 -
  85.361 -    release(session);
  85.362 -    return 0;
  85.363 -}
    86.1 --- a/test/pgp_mime_msg.txt	Sat Aug 31 15:40:25 2019 +0200
    86.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    86.3 @@ -1,64 +0,0 @@
    86.4 -From: Outlook Test <outlooktest@dingens.org>
    86.5 -To: Volker Birk <vb@dingens.org>
    86.6 -Subject: pEp
    86.7 -MIME-Version: 1.0
    86.8 -Content-Type: multipart/encrypted; boundary="74b0dc5119495cff2ae8944a625558ec";
    86.9 - protocol="application/pgp-encrypted"
   86.10 -
   86.11 ---74b0dc5119495cff2ae8944a625558ec
   86.12 -Content-Type: application/pgp-encrypted
   86.13 -
   86.14 -Version: 1
   86.15 ---74b0dc5119495cff2ae8944a625558ec
   86.16 -Content-Type: application/octet-stream
   86.17 -Content-Transfer-Encoding: 7bit
   86.18 -Content-Disposition: inline; filename="msg.asc"
   86.19 -
   86.20 ------BEGIN PGP MESSAGE-----
   86.21 -
   86.22 -hQIMA0v8ThRgMMUcARAAojvf51FXw3aLU01IttNWqIeASe1T1f6rVXQtem1LZf3d
   86.23 -osmQkTEvR/OJ6DRU4z2+XosSyPFLQM3er3Z/m3f9Pl+eI29ibwcAlkko6ihS8LSG
   86.24 -WALPaUIuF7wF9hCd4STuTSRcJmahGMaWIS96x28TSE+FEyKPZOBWbSR+VH2V47+R
   86.25 -ZhAZGwGAfAUi+2/hNqP5Kk1085F8OXgETzIvoNYm1AFIm3vshH4e3vu5fpl3y9gO
   86.26 -uxOIwtbWEqKEWi156yaaI/+NcSq3OUH0AS2rHFutBwqLJNhkOT2cnqZq8xFJXUVD
   86.27 -WCYDEDbf3yzSyvNR1zgHgLnPvWsgTj4kaQl3aJcAuV1knLaRAkOUM0/SVDMHQy9K
   86.28 -4Z/B6hSCuGtwhUWU5qZFIal+VR4JR39GVMYHKUOocJ9pWH0dN4v+LTNqNYUHV9z5
   86.29 -/4pIpqfC50JxvfD2K5KZV0JM4qZC96w6bJZI+mtfe3b29OHvMZPYObiI23F7x8d4
   86.30 -debhNsPLGd6jo7WGUEIUQwPuzJl9pK7QRl2PKWaSy2RNYp/jQMdlp+fWlpUcJLu9
   86.31 -C92ZB3vFMafNHl00VLF2dJ4/Kh+9g+7HkQk5yMfId0GLoC1y0O00mVx9SrU2I4oc
   86.32 -Uu8cNQEcD7MnML0fC5ounhQc9xrW+5OikbDbu9AzzwBz3dCzIR/1QdzM71SCY1eF
   86.33 -AgwDG1JJ1ISHNiMBD/9VPWOjJBudcaASm/lSx3+Pz6CVOsg4eiwUVEsTWRR6QF8i
   86.34 -WOoscQ0jesZk2mIfxdtPFCD0BgPWJVBMJuXNIvm6k70dBdVCxUWira7QFOErl6Sc
   86.35 -e/17srha+WM5lgSkvzyzQdmFvZwwk5QsiSlp43VU6G7zSOUx9ROQMq/zRjdcVRQc
   86.36 -opC4uSNXt0lXVjJV2DTRg8mkS52UxTy1XiYCfH4r88O/uCey+3M8tdsTGtA+BSGU
   86.37 -TLzPhDRVJqNSp2w0wXhxX31fNIwvY5RXHS4dRnR3QdbJuEiplUFsL6WxzD4UkTKY
   86.38 -gIQbtEq0NvQB7ktEOvAvn33zRe1U2mmtjuTAjNcrHSQ4OqHuSe9e4SQnNkqc0fGz
   86.39 -SHpPUcfb6qj+LEHYnOEkl2bfxSDjut5FT30adDJff0co9Qm3IdVAHSxC+36OHBxE
   86.40 -dbBK87tdZK1S1d59/F3v72b5fB0uRTCDDHSRfKalnqiqB5YvU2zysqwPUTbK+70K
   86.41 -yyq4URe+jCqo9fTNcDaPwTfgoWXKi4yBOc3or+acNN26dKfzGZIZvgADigIOH2vr
   86.42 -8T7ryx9Z6lVpEYETRqlbvNbjQY/4+6xriSGQbzv2pQQI+nBJRVbS/X30x+XBen+u
   86.43 -w7wKZLgoZaiWf4qRCQAshGPFo0DrzPupEUCL2N2FHwwL9MR/okAN2j7PPxTyAtLp
   86.44 -AZjQt49N9wHmcVWmPn7JwaYQNWotuZnPXKEQUIvzK/jN1HJWIZok3BIwjrvCp0EF
   86.45 -Fi1houL6RrxLm65pjtMHzmxx1McLgmnA1I3cJt7Em8p4v5LSkhCRZhupA/x9IeSq
   86.46 -ZUEsSONVeR/jc6AotWiK/uESMp3LoWbDbuiq0hpGH4zxBXa0XmWhaBOsSBkgjbra
   86.47 -cUxoqFoYyu8TsJaglbnpqRDAzROykKFNjnh2jpi4T1gpl4oNFZYI3JvEySR72IXJ
   86.48 -H+N9zYJjNpHzpLnBKENIxagGC05SQb/LhnJSx6CuXNMQQ36tUqh36pHHF1q0pGrY
   86.49 -lOBHy87L+10c85mH58g4qesDE294jWXezOu1RC0LgwO9hyM0cJ3h9wdBOZa0k8uU
   86.50 -LRov86C0OSxqwG/pBYt1apS30IDz2/juukbUayP0VYpEJEvYgyPEJHPviPAqiErT
   86.51 -96b1lFKf6x86+IR1AirXHys5xTyXEP3AghH2MtcCGmPXzLLSqRfcsgN/pW7o1SG8
   86.52 -uLD2zGmbXZlmSoxp4LTV9jsAYc95HsXXrEp4vMeML0WLe9wyr6yCwdUWsLsoANFi
   86.53 -KMpduMpMcKAFY6VPR9Pw7TfmnPaaaHEeXYBjYt8PUQutxaxnuHvi7Ee+WEkJZh75
   86.54 -WQmH5U6+rrGsWxE0SSQlRqD0pZiPBhwO6YhQSBfwO7DAvdLGSaQ1z+kFRlKI5X2a
   86.55 -BJRZZXEXKUE3X8fUXfmx57WNdduZ4hC0o3v+Fv4yTVXsqJ3ezoc/1JWf1WXZEwWF
   86.56 -6L4+mUHAfO+FcS0E+i+FaRNCDieF/te4E41evLcmwmCYLKsr0Cg8uUD/XHuhJskQ
   86.57 -sEEVqT9xlX5NShzfWx9HWNDXjjTBPJDb+Q0+G7SJU2Qo050joqkmZJwazoCrQZ1O
   86.58 -Mz6QzwVpoLbwB/15NvcxOEPf1drIdbADAjUYgj0Td8qYPHBnwyq65dlN0q+GLQYb
   86.59 -3FomPLxegdOr5DN54l1V2CBe5+5eiDySbWA0R+QbPMB+oLd6eyVMR6pxpX+GlAv1
   86.60 -8pv3BldSv/7pJ/w786wf9sLfNrREGHDKhdAFPWf3aewIzpiodjynzNFvTnUY23dU
   86.61 -ubIf1d1tm3M0bSEsyDHN82sSQjPrTJHopzrCATl4Tc52lnfSMGfigG6pUi4oLGcQ
   86.62 -Goz6CTj6j7oTMjTZycgV9JTNj8BnMBdUCJ51APU2EQ==
   86.63 -=SlpO
   86.64 ------END PGP MESSAGE-----
   86.65 -
   86.66 ---74b0dc5119495cff2ae8944a625558ec--
   86.67 -
    87.1 --- a/test/signature.asc	Sat Aug 31 15:40:25 2019 +0200
    87.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    87.3 @@ -1,12 +0,0 @@
    87.4 ------BEGIN PGP SIGNATURE-----
    87.5 -
    87.6 -xA0DAAgBqUEdF2/wDpcBy25iAAAAAABHcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
    87.7 -cnJycnJycnJycnJycnJycnJycnJycnJycnJyISBJIG1lYW4sIHlvLiBHcmVldGluZ3MgdG8gTWVl
    87.8 -c3RpLgogLSBBbGljZcLAYgQAAQgAFgUCXA5z3wUDAAAAAAkQqUEdF2/wDpcAACPWCADKn9DvovER
    87.9 -KCQ2I7p0QnYYdxLB0C7rCOyLg16ut84R+C0iXAAC2/eTq75SAac9TF22eI5PJr8G3PRAaM0Cg4IQ
   87.10 -a9TvH08LjlhkOWz4wLRrcV2hfDC9W63EcWsYbq+p/SLKG8kI53vb7PV0zQqZot1ZSNwcgK0gpp2X
   87.11 -0BNbP3M/fcOtUGWCa8nMymx17eLuR3qdWpB7mkWniMwUPaUCTVmkOuAdfJxpo+2jUwSStNlvx5xi
   87.12 -oBOTJcrcN3RhUAUNvQ7DlxVqLB+3VC2gHUmkfUhtybrQ79s+qRa/KN6rYiw8YGLoP6nyKsFHHtzk
   87.13 -ir51+MOi8C2jApkQNkoa82bnYJE4
   87.14 -=4cwe
   87.15 ------END PGP SIGNATURE-----
    88.1 --- a/test/src/EncryptForIdentityTest.cc	Sat Aug 31 15:40:25 2019 +0200
    88.2 +++ b/test/src/EncryptForIdentityTest.cc	Mon Sep 02 20:53:32 2019 +0200
    88.3 @@ -162,8 +162,8 @@
    88.4      ASSERT_EQ(status, PEP_STATUS_OK);
    88.5      const string string3 = encoded_text;
    88.6  
    88.7 -    unlink("msg_encrypt_for_self.asc");
    88.8 -    ofstream outFile3("msg_encrypt_for_self.asc");
    88.9 +    unlink("tmp/msg_encrypt_for_self.asc");
   88.10 +    ofstream outFile3("tmp/msg_encrypt_for_self.asc");
   88.11      outFile3.write(string3.c_str(), string3.size());
   88.12      outFile3.close();
   88.13  
    89.1 --- a/test/src/MessageApiTest.cc	Sat Aug 31 15:40:25 2019 +0200
    89.2 +++ b/test/src/MessageApiTest.cc	Mon Sep 02 20:53:32 2019 +0200
    89.3 @@ -148,8 +148,8 @@
    89.4      const string string3 = text2;
    89.5      //free(text2);
    89.6  
    89.7 -    unlink("msg4.asc");
    89.8 -    ofstream outFile3("msg4.asc");
    89.9 +    unlink("tmp/msg4.asc");
   89.10 +    ofstream outFile3("tmp/msg4.asc");
   89.11      outFile3.write(string3.c_str(), string3.size());
   89.12      outFile3.close();
   89.13  
   89.14 @@ -181,7 +181,7 @@
   89.15      free_stringlist(keylist4);
   89.16  
   89.17      output_stream << "opening msg_no_key.asc for reading\n";
   89.18 -    ifstream inFile3 ("msg_no_key.asc");
   89.19 +    ifstream inFile3 ("test_mails/msg_no_key.asc");
   89.20      ASSERT_TRUE(inFile3.is_open());
   89.21  
   89.22      string text3;
    90.1 --- a/test/src/MessageTwoPointOhTest.cc	Sat Aug 31 15:40:25 2019 +0200
    90.2 +++ b/test/src/MessageTwoPointOhTest.cc	Mon Sep 02 20:53:32 2019 +0200
    90.3 @@ -187,8 +187,8 @@
    90.4      ASSERT_EQ(status , PEP_STATUS_OK);
    90.5      const string string3 = encoded_text;
    90.6  
    90.7 -    unlink("msg_2.0.asc");
    90.8 -    ofstream outFile3("msg_2.0.asc");
    90.9 +    unlink("tmp/msg_2.0.asc");
   90.10 +    ofstream outFile3("tmp/msg_2.0.asc");
   90.11      outFile3.write(string3.c_str(), string3.size());
   90.12      outFile3.close();
   90.13  
    91.1 --- a/test/src/MimeTest.cc	Sat Aug 31 15:40:25 2019 +0200
    91.2 +++ b/test/src/MimeTest.cc	Mon Sep 02 20:53:32 2019 +0200
    91.3 @@ -157,7 +157,7 @@
    91.4      free(result2);
    91.5      free_message(msg2);
    91.6  
    91.7 -    test_mime_decoding("msg1.asc");
    91.8 -    test_mime_decoding("msg2.asc");
    91.9 -    test_mime_decoding("msg3.asc");
   91.10 +    test_mime_decoding("test_mails/msg1.asc");
   91.11 +    test_mime_decoding("test_mails/msg2.asc");
   91.12 +    test_mime_decoding("test_mails/msg3.asc");
   91.13  }
    92.1 --- a/test/src/SignOnlyTest.cc	Sat Aug 31 15:40:25 2019 +0200
    92.2 +++ b/test/src/SignOnlyTest.cc	Mon Sep 02 20:53:32 2019 +0200
    92.3 @@ -89,7 +89,7 @@
    92.4      const char* alice_fpr = "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97";
    92.5      string msg_text = "Grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr! I mean, yo. Greetings to Meesti.\n - Alice";
    92.6      ofstream test_file;
    92.7 -    test_file.open("signed_text.txt");
    92.8 +    test_file.open("tmp/signed_text.txt");
    92.9      test_file << msg_text;
   92.10      test_file.close();
   92.11      char* signed_text = NULL;
   92.12 @@ -100,7 +100,7 @@
   92.13      PEP_STATUS status = sign_only(session, msg_text.c_str(), msg_text.size(), alice_fpr, &signed_text, &signed_text_size);
   92.14      ASSERT_EQ(status , PEP_STATUS_OK);
   92.15      output_stream << signed_text << endl;
   92.16 -    test_file.open("signature.txt");
   92.17 +    test_file.open("tmp/signature.txt");
   92.18      test_file << signed_text;
   92.19      test_file.close();
   92.20  
    93.1 --- a/test/still_no_key.asc	Sat Aug 31 15:40:25 2019 +0200
    93.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    93.3 @@ -1,56 +0,0 @@
    93.4 ------BEGIN PGP PRIVATE KEY BLOCK-----
    93.5 -
    93.6 -lQOYBFdisVYBCAC32OZTBZdKW9RwRdMyGxm8yG0hYp3ZA8Z7bUBlQQDwOOT0K2YV
    93.7 -1v5DEXYTIovVe4HYY4sPqmM1atpmCM/RlyYbghSIUha5OaH3/GOv9+Yg9WomrF4b
    93.8 -tPtGIlikcp/n69t/468hX9kzHf916VxwgVT7cSaHN0U6lKsPti08z3fDJKjr+O7S
    93.9 -7p1bYp+Lc9vsqSLBdTCoaPjs4RM1z2TLPHowKRVjwAKX/IjwwD0B9lg6fuOXqb+v
   93.10 -YBfRF0OZ/O+TX+k68y9qHgH1BPxUJAoAR7D/JgJzlH+H0kvVsCSnpph3a+dxnFsr
   93.11 -FFU1V4XRUsZtoR6URuOp3+0iC+LFE1HPt7F3ABEBAAEAB/0Vz46rpMspEDHoy+/d
   93.12 -TufDxMdloYx2dYMzm2d7W7XfyfAno4pt5t6tWEH4zS1nu0pRQKX7yswQR0f3uO3m
   93.13 -wJbNxqXm8k4t1U+I2xF8i91qZZMdWW+ku9jfni2D/PFJk2qsBnf9bqCW9uUauP+1
   93.14 -fTJ2zhqzCfSVmZOdvpApWbesl9YGqN/LLYVMjWhDs/QVL/n4MkJCrixdvVVELJty
   93.15 -j5E4nV3Z8PfsMjEE3goDzrhU0urPYubWHr/NXBcSG9mzhx48zacEPQyqcrSLc8Yy
   93.16 -rWZGSHgjYGdtYmajFDF4r3kr6efE5p2PRF1sU757oMLXW/J1eOq9Tal2halK/Jvm
   93.17 -2zEJBADCkUMr9vkSOhkpz2zAXx2wdtZBWb1pqQ0ZNDEaHTi0hbzO9nrRtvCEV60d
   93.18 -08xJDSVUfGi+WAihF+Woyg2yVTmsdcsnCHUH2yhNcke1buXGowxW7zcCT+mfB4Mh
   93.19 -gNJ/SIWvMj0Ku/P2JzAfvzngAIMpSNkq213f3yHNuHftH00y/QQA8eUiZvX+ST4b
   93.20 -XpV21S9wrCMJRVhWDJWX4uiQ1mEhxmJUF5AcqdgN66vGV5ZzJolnIvejLvFqkDzN
   93.21 -ftGM7aXnwGDNKaxd+X3x67EFVbSX+0tRATqG8xFTQYQ6wd0CmDtongdA8PPSJjO/
   93.22 -+/iBdTCKQggMro82ABW8WqIxeVGFIoMEAI78UWIBKF1dr4Ol4hP3Je27v0Duw+zi
   93.23 -EywJ84GFI3P9TKS3bYpxqQ7ymeVVUwFCpZeJEMIvX/GwsWsy9yZX5DADik3gwfGw
   93.24 -M5b9J0VYGp7UXP9npHM3rx3lMdfPUTUcYM5X6D0oXbPB+zbt1sBV7mPJK4nZ++qG
   93.25 -VWe/1eI2D8uvSWi0H1N0aWxsIG5vIGtleSA8c3RpbGxAbm9rZXkuYmx1cD6JATcE
   93.26 -EwEKACEFAldisVYCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQOz+djmF7
   93.27 -X+NDFgf/Sp3BqUviZXCjxBMtL1XKWc8xouq/wnghfsURAKdUV9RXNghHTbAJftAb
   93.28 -SiQoTeGlhWWESMOJOq5rYbvIyzsVDqH2KeYCSJKucO09+viInrlw5Z9Sd7Mtp3+U
   93.29 -gMzE3mY9tJRy+OTv6B6KNDlplrTRhWpJkglLWKIB4qA0FZTRmcfub61+BOxgyiI0
   93.30 -KMCjxKYHH234T45ZELCT1XyBO5kZlItomrxQYpMkKIvDsm+ND73bi8rOafZaQoKj
   93.31 -ufG835AmGAvvFsiFm/AK98ZlI4rPNTfI6lHML1xozApi8Ga8Q/RSa/r5O6x3kdFb
   93.32 -DAutMCNn4F8i98v43f3M0KNlsOiJ450DmARXYrFWAQgAqnPL0cLdd1Tp0YB9RU0s
   93.33 -cwblmOBUaD3rN7lM0fqaw5eOqde0ZM75rhw/dvQH1pmC1AWHKo/3baqZLPAOHYr7
   93.34 -qlrGusEfm2SLuo6eGRi3InTIMB+dwaWaRuJDSQ+u0MAaCqEe3P7UijTZTVmj5DLL
   93.35 -lyCL2dh5x6HIe4jM9bJ1KjHmmMNurJ+zzIDxXyyZmQRGb8W6curR/KaiYP6sinMy
   93.36 -M+l7b9uhEqaLv9b0zOZjxSekfb6ICyVUvzJCONtEfaQ/QVK5XLMLhpbC4y27E7Vz
   93.37 -coa7381ewTrPaB6gS9R8/EgNGOQTIgYmestaZFeG/9UqtN+ox8+7a/XRVsm4PlE4
   93.38 -hwARAQABAAf9Gtey000NX2DUlD+DJXS/zpAu0WJn0yVdHiC6Q58O3EUecbTHHdD9
   93.39 -FOQx7Q5aZaXgf88sYrwv9OnsHAg50NaK8grq8jdo6NRur2m3kAWKYYy5MeA+Ebl9
   93.40 -5YfK8iiGw9eyF4EZa9KzBIjKEm+kFahs01c2xDmzrofVxfkx0xzQGAgTL3yGKEAM
   93.41 -S2Kr2J3nhejEOcEGjY2tvD1UMxZQCu6qpAyNU/lYBG8Fg3p67psUORWOBnAZkJNs
   93.42 -BTpsaVQR0/wja3x8efIjg41+W6O0NMQ7FE+vS2A9CBLOnKrLFw7jsVHQnk58MAnb
   93.43 -M3CPIusyhQXXOPrp0OnzfBA1hULF8EEKYQQAxvZXWFWuGoA1K5/Kn6nahHevYtkk
   93.44 -8rFb5uqIxTUqc2d0S/YJT2ksohyKwIa2wTWU51Dvi5WxmBJKAtWq96Xpvay99YgH
   93.45 -UZPw3xh5qi6Wv7JbhA/+lokURTxtyqofNcJDIAiGUwEryyjojhB1eEoV8mRfpL/B
   93.46 -78Uu7W/W1uY1rn8EANtRIvBnB1BrbTYpxH8n9V316BDTui6fCfb//2Ru5eJ/4ZSZ
   93.47 -dJ+8YncgoJAOrFDAT70xFp8tPwmJeak+PAMnt0ehLyZTzc4Dn1f3CTL/d9ZQmGau
   93.48 -w1hotJZBWgZAm10VI4UYuQkj3Iq20ENaY92XZMr40hlmmSeHAGXKy+hDlAH5A/9z
   93.49 -wP21mtgzGfLijeaXS9xzYQ5fgbWNJJ1bPALl1ZLGma/Ajbt8GgBgCSXnm8z9TYkt
   93.50 -j3R5PyFV3qTm+1L/JS3bepkGZnjy1Uqa0ZXIgKKOmYABuNJoFw1HfE47ZeZFwbmd
   93.51 -1MkC0L1eQqU1Dmz0Aq5Bj3yDuL5QOxBhxIb1wmrc2z6FiQEfBBgBCgAJBQJXYrFW
   93.52 -AhsMAAoJEDs/nY5he1/jekoH/1Bqm52W64DYJtGoxh0LOtTKYRk6fat1c1pzNctL
   93.53 -A2idl1ReT3XkI2pOZfDLXKiG4zHzUaOkO5P0a9oZxkUCRjuZjfHzaG/mmtCMJVPl
   93.54 -hcjD9Djzyw9HhXSubyWmMrbZ6uLaJfAs795b/ZXDkjghgN4IflEUX3NgqnIwciL/
   93.55 -8sdYE4olihmBHzcW5Pg8fQXXsGKeZfHdMnuMUrZk5htzkXN28FVcqrNHtSP+g3nw
   93.56 -YrOLfjw52fUDo7+SdGWUw0AUGYAFVoBdK38UkmWmhkeN8uqNI6/dqajzmMiMAwPQ
   93.57 -dvZ7djEg7DiKGSQ+dMVj9IzT27IuJqcXO+47fGHkU0iPpgI=
   93.58 -=3QWb
   93.59 ------END PGP PRIVATE KEY BLOCK-----
    94.1 --- a/test/t1.txt	Sat Aug 31 15:40:25 2019 +0200
    94.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    94.3 @@ -1,10 +0,0 @@
    94.4 -Content-Type: text/plain; charset=us-ascii
    94.5 -Content-Disposition: inline
    94.6 -Content-Transfer-Encoding: quoted-printable
    94.7 -
    94.8 -Ohne Anhang.
    94.9 ---=20
   94.10 -Volker Birk, Oberer Graben 4, CH-8400 Winterthur, Schweiz,
   94.11 -Erde, Solar-System, Orion Arm, Milchstrasse, Lokale Gruppe,
   94.12 -Virgo-Superhaufen, Coma-Virgo-Filament. mailto:dingens@bumens.org
   94.13 -http://fdik.org  D-IRCNet fdik!vb@dragon.pibit.ch
    95.1 --- a/test/t2.txt	Sat Aug 31 15:40:25 2019 +0200
    95.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    95.3 @@ -1,1 +0,0 @@
    95.4 -Something else
    96.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    96.2 +++ b/test/test_mails/msg1.asc	Mon Sep 02 20:53:32 2019 +0200
    96.3 @@ -0,0 +1,20 @@
    96.4 +Subject: my =?utf-8?Q?s=C3=BCbject?=
    96.5 +From: Volker Birk <vb@dingens.org>
    96.6 +To: Patricia =?utf-8?Q?B=C3=A4dnar?= <trischa@dingens.org>
    96.7 +X-pEp-Version: 1.0
    96.8 +MIME-Version: 1.0
    96.9 +Content-Type: multipart/alternative; boundary="54fdd7c7_6b8b4567_1505"
   96.10 +
   96.11 +--54fdd7c7_6b8b4567_1505
   96.12 +Content-Type: text/plain; charset="utf-8"
   96.13 +Content-Transfer-Encoding: quoted-printable
   96.14 +Content-Disposition: inline
   96.15 +
   96.16 +my m=C3=A8ssage to yo=C3=BC
   96.17 +--54fdd7c7_6b8b4567_1505
   96.18 +Content-Type: text/html; charset="utf-8"
   96.19 +Content-Transfer-Encoding: quoted-printable
   96.20 +Content-Disposition: inline
   96.21 +
   96.22 +<html><body><p>my message to you</p></body></html>
   96.23 +--54fdd7c7_6b8b4567_1505--
    97.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    97.2 +++ b/test/test_mails/msg2.asc	Mon Sep 02 20:53:32 2019 +0200
    97.3 @@ -0,0 +1,605 @@
    97.4 +Return-Path: <vb@dingens.org>
    97.5 +X-Original-To: vb@dingens.org
    97.6 +Delivered-To: vb@dingens.org
    97.7 +Received: from localhost (localhost [127.0.0.1])
    97.8 +	by dragon.pibit.ch (Postfix) with ESMTP id AFEEF171C059
    97.9 +	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:34 +0100 (CET)
   97.10 +Received: from dragon.pibit.ch ([127.0.0.1])
   97.11 +	by localhost (dragon.pibit.ch [127.0.0.1]) (amavisd-new, port 10024)
   97.12 +	with ESMTP id LIqI5IZE3-af for <vb@dingens.org>;
   97.13 +	Sat, 28 Mar 2015 10:07:32 +0100 (CET)
   97.14 +Received: from localhost (161.238.195.178.dynamic.wline.res.cust.swisscom.ch [178.195.238.161])
   97.15 +	by dragon.pibit.ch (Postfix) with ESMTPSA id 4742A171C055
   97.16 +	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:32 +0100 (CET)
   97.17 +Date: Sat, 28 Mar 2015 10:07:31 +0100
   97.18 +From: Volker Birk <vb@dingens.org>
   97.19 +To: Volker Birk <vb@dingens.org>
   97.20 +Subject: Dingens
   97.21 +Message-ID: <20150328090731.GI44028@dingens.org>
   97.22 +MIME-Version: 1.0
   97.23 +Content-Type: multipart/mixed; boundary="cEobB2knsyc5ebfU"
   97.24 +Content-Disposition: inline
   97.25 +X-PGP-Key: http://fdik.org/vb.key
   97.26 +
   97.27 +
   97.28 +--cEobB2knsyc5ebfU
   97.29 +Content-Type: text/plain; charset=us-ascii
   97.30 +Content-Disposition: inline
   97.31 +
   97.32 +VB.
   97.33 +-- 
   97.34 +Volker Birk
   97.35 +Oberer Graben 4, 8400 Winterthur, Schweiz
   97.36 +mailto:vb@dingens.org  http://fdik.org
   97.37 +
   97.38 +--cEobB2knsyc5ebfU
   97.39 +Content-Type: application/pdf
   97.40 +Content-Disposition: attachment; filename="pep_Dokument_Titel.pdf"
   97.41 +Content-Transfer-Encoding: base64
   97.42 +
   97.43 +JVBERi0xLjQNJeLjz9MNCjYgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMzAzNTQvTyA4L0Ug
   97.44 +MjcyNjEvTiAxL1QgMzAxMjAvSCBbIDU3NiAxNTldPj4NZW5kb2JqDSAgICAgICAgICAgICAg
   97.45 +ICAgICAgIA14cmVmDTYgMTQNMDAwMDAwMDAxNiAwMDAwMCBuDQowMDAwMDAwNzM1IDAwMDAw
   97.46 +IG4NCjAwMDAwMDA4NDggMDAwMDAgbg0KMDAwMDAwMTE3NiAwMDAwMCBuDQowMDAwMDA0NjUz
   97.47 +IDAwMDAwIG4NCjAwMDAwMDgwNzkgMDAwMDAgbg0KMDAwMDAxMTQzOCAwMDAwMCBuDQowMDAw
   97.48 +MDEzNzY0IDAwMDAwIG4NCjAwMDAwMTcyNDkgMDAwMDAgbg0KMDAwMDAyMDQ3NyAwMDAwMCBu
   97.49 +DQowMDAwMDIzNzc5IDAwMDAwIG4NCjAwMDAwMjcwMzcgMDAwMDAgbg0KMDAwMDAyNzE1MCAw
   97.50 +MDAwMCBuDQowMDAwMDAwNTc2IDAwMDAwIG4NCnRyYWlsZXINPDwvU2l6ZSAyMC9Sb290IDcg
   97.51 +MCBSL0luZm8gNSAwIFIvSURbPEM4MjAyNjM5QTk2NzQwODJCNDI1MjY5OEY2RDg5M0I4PjxB
   97.52 +Qzg4QjY2Qzk4MDA0RjgzOUQzRTVEQzI2MDg2NUNDMT5dL1ByZXYgMzAxMTI+Pg1zdGFydHhy
   97.53 +ZWYNMA0lJUVPRg0gICAgICAgICAgICAgICAgICAgICAgICANMTkgMCBvYmoNPDwvRmlsdGVy
   97.54 +L0ZsYXRlRGVjb2RlL0kgOTUvTCA3OS9MZW5ndGggNzYvUyAzNj4+c3RyZWFtDQpo3mJgYOBm
   97.55 +YGDayAAE6boMmICFgQOJxw3FDAz5DDy8c9XO22zoqtU7dKf8yAYmqBJGBobMe0AaxLcHYlYG
   97.56 +hhIfiDjDVoAAAwAUHgw/DWVuZHN0cmVhbQ1lbmRvYmoNNyAwIG9iag08PC9NZXRhZGF0YSA0
   97.57 +IDAgUi9QYWdlTGFiZWxzIDEgMCBSL1BhZ2VzIDMgMCBSL1R5cGUvQ2F0YWxvZy9WaWV3ZXJQ
   97.58 +cmVmZXJlbmNlczw8L0RpcmVjdGlvbi9MMlI+Pj4+DWVuZG9iag04IDAgb2JqDTw8L0FydEJv
   97.59 +eFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9CbGVlZEJveFswLjAgMC4wIDU5NS4yNzYgODQx
   97.60 +Ljg5XS9Db250ZW50c1s5IDAgUiAxMCAwIFIgMTEgMCBSIDEyIDAgUiAxMyAwIFIgMTQgMCBS
   97.61 +IDE1IDAgUiAxNiAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vTWVkaWFC
   97.62 +b3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vUGFyZW50IDMgMCBSL1Jlc291cmNlczw8L0V4
   97.63 +dEdTdGF0ZTw8L0dTMCAxNyAwIFIvR1MxIDE4IDAgUj4+Pj4vUm90YXRlIDAvVHJpbUJveFsw
   97.64 +LjAgMC4wIDU5NS4yNzYgODQxLjg5XS9UeXBlL1BhZ2U+Pg1lbmRvYmoNOSAwIG9iag08PC9G
   97.65 +aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM0MDg+PnN0cmVhbQ0KSIm0V02O5roN3H+n8AXa
   97.66 +kSiJkk6QRZBF8BY5wCAvA0x3gJfcH0hVUbI90/OSTYIG+nPZ+qHIYpFK5+j5SGcp8+CvuR3f
   97.67 +Xn/44y/p+Pu/Xunwnk8v9WizndbbkefZaj3++Td+m/nMfRwffM7p9JZ/Pq6kM8+qca3O0338
   97.68 +ZNyvr9/wPa0vfoyazzH55a/HP16/0Tr85WPa2Yvno890tm75+PKhefyfz9rK8ZbONNthOJoT
   97.69 +2KhHxZrHlxdQa0c7Ha/wPKcffk6fxxuOibXGmW1wHDaZ48ChWsWC7Uy5HzmfHRa9Daw1iYZr
   97.70 +LJ5KsetzLmcdTXMT5uYKeztWTlmD2znhcZiQGz762bCInbMuZBNn4bh4hl01V30qMHbZRZhL
   97.71 +Pt7qmZvtZZMsbY5hgI3r+znwnTZMr7R8GVHP0vvxNs88hixu8OgbTM7GX8PsITzSPmJr/JJj
   97.72 +XXwpaQjTCVi4z3xBTGgRCfoEhyhYV5Na4lnwzm5jGJJBy71VMDCBiTjmhAtTuMIMLxH4s2eS
   97.73 +jTjnTH/LwYAwGmew0YUKQggHpG7LkT6vF+/Ls4ptSX29qLk9X8B7hheG9y7vWZrcYSaXd6qD
   97.74 +DYhrF6cwsXvhDq3LFYgA44FBCEDtdSPxalk3QBXMa5MLmTjQyRqkFHz05VXl0X5OuKPhuZHC
   97.75 +Zaxn+iWe4M0JgmBvnr6cI3M82AqH9ly0kmOXt44R48AAEmHKWbGlwpwZCqSwaFiDXAUBmuIS
   97.76 +R4H18M7bfZSJEN8vtArjCOwiLr0X1Gu+SJdSvCmmcYVmMnDCYDjthAcgLN+lQLx5v9+YM/X5
   97.77 +ZnHjfvP1BYWZWBhZyGiVChXRYTqshJqsz6BdcbBpw3GW2v/D8EzSlXsCzM809/cmUBQmxw9E
   97.78 +dEif4ik0Cs9p+NKoAdchuZdGAYFNoVF4zvgJjerQSmy5NarD5FG2RnUoAiK7RKgjgZLdGuXz
   97.79 +HHXsr97h0EuhHByFBK909MZsCnlyUAeJG+pEAC0h89bj0iagTjkNacL81G5h4nK9b10CcspT
   97.80 +yBI2NubX3hlvU92iRBvtkiQfmFgeioQDebn0qON1t0t/cPoyH2rUkQo2thrBb0rjUCM4tYxx
   97.81 +GUHnm201QpQsX3K0I4nUg411XooEmPrWozYk8EuPgHjUS47grDrsVqPlykt76EzKx4VpyCVF
   97.82 +cNFam0oEpzDDLyGCF2owE3nZLUQtsrNjTPJbhzrNKluHcDDKzBKigdX9oUSDFcuWFA1a4EuL
   97.83 +FqBH1uNSIyBmw5KjwczOtyBhQfIlBAkg1UuR1t63JMG0Ybcmwe7stjWJLO/loUloVrrV6wUc
   97.84 +UswuSaK/+kORQLHM6hSCBE8PUSr0CIEYZg85uki/1Wi/uKRnseKpRb++/oK/dMTfNzwZjHbz
   97.85 +uwHi6DajA2IfRco9+q2hmP7X/ij9pI/706sefz5ebzhng+/20t2RUxSHa+lfZKPDsqdh/Dz+
   97.86 +Nztr5fy7O7eG94jX/2HrvfTPtv7Z9G+PTrNMCK6jSlQ2VyDp3Wmeycj7dzwZ6BndENKPNb01
   97.87 +viB5UN8rqYNMYmczIe+QTJYAWoIkKPH45WXq3gCAUEkSV3ArzDMyCrYjl9UUwOK3pORtUflA
   97.88 +eRxoAVOaszdIUcGdrW+fnYpcRz5I9clUNNUQJGhVl5KwfVHCs2XBD8odizVAWUcYfUMeVM1l
   97.89 +KjwkfcEVC01M+/Gdj0NCxTqNsf4Zw1sokoHZelDtVUoSYgavsvmmJeW4WlHsV31Bpljap/7Q
   97.90 +t6R20+T9NAWo/VSCSieYRadTWSHgk0pXN/ajSOfCffpQY82axoEU3DdKBuOTp5yXiiLJTioA
   97.91 +HdSHb8jTDM1ylk9rWj4UDbqs+uio6OizZ43QcJIPjSMPOa6HVck4cFAWcZau20JScJs8Ashm
   97.92 +nbLFsJFlLFjuNwhSXLAad9MsOLf6XpH1MrbWbll+WXagndFA2ZhVlDlQ9rN9KUccDP7L+8i8
   97.93 +oBUNkzvgdDQo4SfEg31x+DCASDbnhsvznDR3VJAUionixexilBVJZtfcUcY6XjRQDIBgN20p
   97.94 +cuDEzPrbLVCENBehPoiWrU5iDvXvD9iTLilovFD0xbKKfEcvLJJ5o1vQbBWOGkXXDJtMGTWF
   97.95 +sHlqr8njBqLt4ML7i41je8JedZmdIAeVSEfh9Qgty4xjmms7i2uV4QRT7VdWmiPbSrRpY+ig
   97.96 +dBij3HnTjeKFsusEHupRVKADupofFDokxvwOWrtTFzDaaXYEqGW8nSDLJp89X3n79cWupUV2
   97.97 +OrP1xjUuV3FT1M1KFw+I01Rq1RCHqg6cKJKm4KTsCzxSKChExVTqOcnGe66Suau90eUBidhn
   97.98 +DPWuqWzuMl+3K7lbXIGu7G7U7ftjb3WnN3uNZ37jjpKr7QwHMnBFSkNQ2CRVqRyGjohc4Hfi
   97.99 +nHpYdOSuto6dM+YAqVfGZtliF6/qpK2NsGGrM223+ZBupjphmerqRtZJctN9YIC9DHyWSxbO
  97.100 +alF45akify9qQbuJj9TfLy81uGQ57WBQwKMoYMuAVdrorb5KHmyoSowpwM6Ylx15uOsCxtzv
  97.101 +Ors2Tk3dAOsMk9/z8louygVqMm5Bpsaz9kA9utAZQ2vS+UqL2m8qKANqt1HQUQSFebrw6jLx
  97.102 +IaxrA1J8KJLhm8xO2qM+sk/1iEeyUKiuvnomHQD9Q/BFGqKSwv58KGNqVrTKuPRwhe4SRFJU
  97.103 +U3XTI5u1RxOwyLtlACLQ6mUe++jb9JVpcTAe1Shb9RK9BRHvyepsxpTktW9caBdcY0H6AdGi
  97.104 +cU/8ESKP214oamuBzgG1omRwkB9IIr3rLnB3u0qoSQSZf+CIFbRsj+QEbnd2AvVVmLkujh57
  97.105 +zukxVhjBZIdOyBC7VANoLMTqWaLYuXrS2EZJVnBk2gD5I2J5BomyhhbdLGAvOtVopVwn9boT
  97.106 +EojBvNLTkGw5vsIkoDR7iC0Qa4huo0O3U2NF1ckLHMyohS6OpLE1VCnVGWOFdzAyKkPQ7jt8
  97.107 +N1LW1IRenAh4cYL3v3GTIuDFAxRAnz/Cmwgx+hO+mNFVvjczuhR5M2NEW3oxg+l/EQNJXNpF
  97.108 +DFS48eDFUNA3L2bIxuIFK/Z88GLhzYsZSr14MXX52LyYURsuXnCbcRFj7NCLGCylD17A9jEv
  97.109 +XkDY8sUEnHqUR8cNnLxcvEA1XXqfhWw8aOFRMBctmtqxTYsI402Lha9QoCqW9gnftChY1W+p
  97.110 +KNDpdge+IIHYHODUgz1/yWp0bmzR77kuHMDo8Nu9PD4Xs+dq0QKz3gesfuOvrwoJKbwiDZS0
  97.111 +j1el6/uC7xsaCQJUJTDfI94wmsfYnu0zhkaCLPf4HzF/aGoFC2r5jHeXtCy98NdXQ0BcrTkc
  97.112 +9EHoI6oRmsDGBqYFqkRWoo1PbMiAWVg1145GhVPvPpHgQA3dJnIpGVkPbHHvSXBK46VON4cM
  97.113 +jjZTnwDtEhcag9PjJjH5scfQjvU2qupyY2xgtthAarKoa1xUmcTuUvvndWUCMYBI9ZWDQD7L
  97.114 +naGNXd/9FacOqjK1W93NUvRVjZ6eu6+i96LrqjwlNs9xveseY3ukQHJ9HUttitYVqXBodeHE
  97.115 +/6a6SpIcAWHYV/oJbDb4T/3/82iBpOeSigpCwJZlOW5QdIejxQ5v8F/GsLO7ItFiD9lHfGyP
  97.116 +fvC9uzdP/iP897SBUR8HXkWtpd0D4GXZ/g9BHYou7b2ifE3zVuzGlHPS9zofT8X3ISt3iWWv
  97.117 +GgKRAUpCTGUKWhaeNiEzAEtjFZUyUraL1/W+0yTX9HJEJeY3CO4XpYznw6E56Ze4hlK6t35b
  97.118 +oXJvU7+tGldU8dOwV78aS9il3bSDQOQr7e75A4Y0n9g9nfhXtdPUixt3IzbNqmo27v2V0Rie
  97.119 +CS2jjH35ChA5psm2ghMR9nLmVLsNXAzI/CsyDCDEahaXtl7MtGuruMkRMyhnqsjTp/ceQQ5K
  97.120 +/I8u27m67tNsQlmeIooMIP2OmDK2ZGBvoZVClyv9TW3TBKwmsg7X8rBgtL0dhezygxIbaENK
  97.121 +6za49wQEaNQTG9E8MTZSmJZWc9erCGxttyYNmzTwwsZPleB5hjjurAXS+z5MoG0v2gRLu6sn
  97.122 +iago/CM2crTR3iGqduukSAOUrorxQdKT0Kl9ixZzSeEnAsNiMscjrkypmJE53oAaptWCQHKt
  97.123 +71fo9Ms5lC7NHOyCwLOW3ff+ARp162cQdV84JtOfyMxSWOgwgLalgeqWXfp1EfYydldGcG6T
  97.124 +46TpM3Cs291p2BF6gKQpAl/QKIG2UzbVEXhoKKEceJInaG80oX5EjMjty4Zx4kV4Sgv3wCSI
  97.125 +rWNKOcxpq4rnQs6S7ljMZdDzThygXTLaiZxaSXGo2wYrgBEA2pLurpFNq+ozAQIDrVSnOYgl
  97.126 +0DjSmq6WkJw6JROLT5lKBlBC4YCWW81ZygI61hiv8pmjmU8lmIW5vprBcFpeiKNQWfZ7bLdw
  97.127 +hnbk1oFD9adiUHvgRrvuXhQFzqJC/fhQTZdUDBoO4tDycs6W3pn6nmXHW/c6xx22QpelY1HP
  97.128 +9NUzHlL+dvbP6rBvYEddevS5wRwOyb0gOzsp7lDTDHzRWFTgn38CDAC5cXuEDWVuZHN0cmVh
  97.129 +bQ1lbmRvYmoNMTAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzMzU2Pj5z
  97.130 +dHJlYW0NCkiJZFdLbmy7DZz3KnoDboj6kNIaggyCDLIAI8EF4hvgZf+DVBUluf0ysbuOKInf
  97.131 +IuX11X0+P/rLSjwdyIDaa81K1BJNiHw+gKs14vDG1TKFPObT7bWqZN06Ze01cARwj8rVOrXa
  97.132 +sAWodBfqQdnyirKIq/cnUJuDyMKISki2uEN2rFfE86O+VvQnQF+daI5GVPskilJTtBTJjo7V
  97.133 ++Zo2iFqrRB7aWUKy8zWovr1mNa72MYj6qm+oQC/JClPrydUxgqhNIWpbXlZ7iq7Rn4Bd+tma
  97.134 +AM0tVTeAUVe6wKBWgSFOmyPWE/fJc731/K0IGDTKFVjdBrcgbnAlQoLT5E8EbHGlAjoiu6hR
  97.135 +nU5Q+5IpgxH99QioA4fiFNjy+xFwT9QNvx5O/RFF+A6mA/trNXvD8YqF8/xVq+THy3x+bw84
  97.136 +e7yfNltjrpU+NvZvCGVW3k5F8BMnF3zHz7GoYsMpADMtRQgmvLbo3ugGawCHUflVg2tzbFdN
  97.137 +pB9iv504kcYhxCUkluz32ggc4Wf4jJGeXYH7KMovoF4anRcWFzHbPGWFcUTnovmiaX0aj42C
  97.138 +Y4e8BFEkuslrBTugTmdKO/Z3qtqjCbVj01gHy3rJFmTL9hHPbVR3u2/jr4sRRKgIzHD4/2Nc
  97.139 +sdrGNU72EhUGr8EFABUGZSTzpuo3sDdy2xsZPpc3apWiHbVM4qgKoSOecE6tlodNMzkLeQC0
  97.140 +4EEgR64wwkMoZk93UB3gNbQ6Qo4tLSNOcxJB1rB33lU4tuqW5coIrzqXV0t2QlHeCjOBlnuG
  97.141 +LxigkjpU3/ljqWFB7TKbcDxtAw0qt2T3kKOIk9lQxAJL5IXTv9FOoIt7jefeiKu631Oh5NFA
  97.142 +d4JjwQZHH4Nr/GoL4+u2TLbAOQjysRMlY9cJ9GJL0Z7p35WI8h75oV/fJsq0DHtbbVknHexy
  97.143 +YoaayugqnixSZYJizRpdNxNwlbeUVZ5AL9DgyaGqRvAzw6ABqGfaJS7AKbu6M5UJu7/hqTZS
  97.144 +1LIAmmiDNA5AwvIhZ6GFFOV1QyyhnahmodxXkRb0IuQ2ohlIly/tm/EDk0GImUAoONhO1m2L
  97.145 +KBgQBkiGoIGEcIUlQL0q1K1KthUFs8+ZsmbCk/GDUVVNjNxO1JKQWktZYRfZQCeQBl1/8Xit
  97.146 +Fd/VTzyzU9B4ICcvVqoB0Nqt/l+Phfz2eza7KJIjoE08//vPs3pCA+hgK44L6sbm4N4Js1KU
  97.147 +a2xYRlHUef3e6DCzX5ZZDFsOJ6Ml7nW84aWp5Yhb4Ujyth3JxV527F+gNG4/+Bd2eLqkKuS/
  97.148 +9WEq5yYqk8itJeyCLWeIVehwfrDE6EJWhmiWcHRBTw6klyg9QOkijgLbCWsXc3BIICx7YupL
  97.149 +4l3WiFmoC5grxYPjwYHkpLrF94dWc301jXnDUxmrgizKVKYVNazVltY5M23qJJzNvplVltrb
  97.150 +OjzRL7cSDmvf5CrHRRx2JYxsjjLc1ahJr+FbWkMGbPFcX6Ewz5aHr5l+mOuIr3amyRtD+BF1
  97.151 +9KeQUhxcrOKbpgizF4vmgtJNQ8ZHzmiEnF4/OIP2vdk10NTStTwHOYEzM11MxkU5+QmYL7XM
  97.152 +SI82TEamniH/IQv2QJIuWHcx4L61Z0ErKHlR0pAkamByrVnTmmvgKbIcxBIinbZFV1d9e+c5
  97.153 +K+mAU2x/hzyB4vsDsrJn+Sz5Hx8i9v7VcvTI/ZYEkLs5LNSNv4Tr0GmT8yph1aQy5juqs+/d
  97.154 +tdTz4UsOiZ6XaYPLQg5BO3ltfI9I9HR3MVuvVWFR/rjGIMLBOh/izAyiya7BmbCwmlUKS9kI
  97.155 +OJWcbMaUvh/I+ISrKJWLyrAmtSMTrG3xFZHvoNDlRbnbLTUzt1PjOxk9s3NmQvV8o0Qk9CJ4
  97.156 +UqrluM0hvSnjSk/+35TQ9pMmtlsi3y3JXnDb0uwfs20+UiVEXW/shYSY6XK93wBjfZeRaZL9
  97.157 +fLx9KG3ukO12Mj3lm3LRI6twWrbnOAQSPXN1jmTWRJbSI+fQOuaW7iUH083DSq6iIVvZ4Rcm
  97.158 +mUXWtEVSaQ81tlY8KzHrYozDfbWomYd0gZ9a9vK1YXqRjMHmhw6M4OaYAm7+nR9qDmBQH2j0
  97.159 +dM1I2JbU46PuU9LssFSAvGHtDGiNcQEccecuijeR0f5AaHkcJxtCcpOqXIEx9htZi/ARzci3
  97.160 +a0tUpWjVq5cfolo+e13rmY2VqX6Rn4OZCkxOxEpwZXuLhFFz4L96RNfoO/KsWPkCOGp1FVXR
  97.161 +i1Val5rtKrS+ZrarMdLmLLrdrizfFadd0UXzTvqEzqnptiu6eGW7qlMRqTnATzZDwG5SZvS+
  97.162 +A8SBmBxABmZ0OUsyTpYw+7aPjCfHgnk+fOnDQPGTSie1I9MkPVnb2tU3+oKxY63zADSz7Nwc
  97.163 +16pga6KvOtQCrJynCi8hHC7t3N/gGZPvB9a5P+/uoofkPb1oHqB43o50svU8qiF7Sr2an65F
  97.164 +v2nNTEZWY2eMqEKhcbvlZASPtEx5kwu3x4pY4cKsJ5VYrWLnMwniPfoa9j3aVdy6+JCdc8jj
  97.165 +7FV/+rBaZD/SDgtV/z3B+NRobyei3COHjj7Oh3yl5odfj389/vbg0+YJC57l+ZfHH/pf8LdV
  97.166 +10ONUwS89/n7we/82yb84tj/d+x+34CHEOsHKc23yN3BCsmHaSm89iPQ8zCH7xP+pEF//vX5
  97.167 +41Q+HrG9oTA6K+scm6eeQ3+e+YdkxhoawGZnv+Bs/o/nf95v+/f7RR0ONyRQ5eMM/nmzGEGv
  97.168 +HMfJOYvDiajb9EZFLpZ2AFLPWZ4bhpJA+yYOQLxG9j7+5rREbkHbdPHy5+PC4MTxkfzjIiVB
  97.169 +g1s9e1xVcFyjzgZDBPP52DB1+Tpw61n3a1AW5HVp3b29KDNwMryLrXgF/b6I09/XY2iE/Ikw
  97.170 +4E26qIuWDkKMEDIohkyn2e3JmUN+ghQim+PLRryLJ3DS/olM9H1QUfPjhDS2JRgyNKemIRtB
  97.171 +HvzDeH3/2oEEfZ0wpvpsPed3XvZ5zUxFfl3FaPbvB726rhM4MxmTEfzX1ICGhqsuvuTYRhbI
  97.172 +ExLpdYaJc04l2fmJcYGG2kS4mFxqoHgVFq6RXTcwTYKfjw2bOv/XgXxzQiaQdtSk4ZUKRiKR
  97.173 +JMA+EDr0v2u10Xw+12xockNjCV2AoWqyziayEKA1Vrhz8O9KuC6OhyBb2eQ+tjsOBO0czzYS
  97.174 +31cjz+KusS1SLbYC9ePKI1wci6EQ6Y2rm9ZK522uCQO9l3r0kf1GEAFTdAGr0zbTVLgvl1ps
  97.175 +CkydlZPtRj7Ej+wj45mjDoFn/PwABNZyGhNkCPre53ozDU64SPm2A7fUXjOmn4+NxMQ3L8/P
  97.176 +E3fD0HDjbqLyfXCCvFQmTwW6DM9jzAkb2zvcmFGa9D0aRf6W6zmk5EpX5+rKuw1avrMSZIp9
  97.177 +HQg1mB1dI+BWkG/LdQ08kHv4NPEfP/9HdZVk1w3DsH1O0Qukz5ql82Sb+68LgKC+u4oRf9vi
  97.178 +ABLICIe2h1+AGjnCkQCfjbcFvJ2dkPoX1US9oV64a9mp1ZnQY6OqK3u2coRLrfJJBObvar6z
  97.179 +tDc7vYKv0aHbPyPEkTTODE1EjPNeMhBMyNY+mTAUy6sWi1iel85F3aBT9SsAapt+uUGy3DBz
  97.180 +YRgsr0saI+iEpb1Ku1QDbGt97j2zm+V1SKgkyysFXTXLAbi9guWQKbvMy3KqljVNJ4Bn5oCp
  97.181 +GLuvAVMpcO+96q+R5RRCl+Pctt0UhwRipwTFAab2e1DcMCkutTRNceia+LIoDpqNdSmeKChe
  97.182 +OQyaKU6wjylukBQ3TIobBhMBxr6FP2jIFwUM+QymV31fZdExrD5FL6KqXxwgKW6YFAc8mnmk
  97.183 +OFXRdGdXLp+enY28z+U+x/VRhKS4QVDcICluGBQH2Dc+lhGrIeNLyGcgiDmqXpcZISrRc4hV
  97.184 +VmKa4gZJccPb1gmX2u5Q9YniBJfgeDszIIK7iyNYLLFXGhaEYfEdCuUSBPd1EtwwCW5oDmJG
  97.185 +zJNhYHy8ZnnCq6L/F5KtYCLth820X0L4UdNyQ0wZh6FUVHndSqOE7mSI3498F7faCWnJGXSa
  97.186 +bO0q0yAkm2Sn7rHOLNXpO4FfjF8al7/DDld/ygxJuCVL5wnt2kIcPvSzOEoX6vOD2ITLB+2y
  97.187 +hdz2POkWWrQZWNjhYIl01lb7vdvkVGn5QF16A0pj/HO0OG2nWm2yPL/ELSKkgGIsS/5x9HgW
  97.188 +cvD9HdketMbQdxb2KxAFGsM4MqrUEvptOTKmpUlHc6faYX1TfcxEipWzwRiN4MBDeEaOuOB/
  97.189 +vgyxhYsqsE5RNtDk8qzyhWPV0Opzycryw6gmwmdSKfED3QIm3CNOyv2GVdf58Km+1jE3kuNb
  97.190 +GFWTD9FCfPtcj/YlPSm20ZYn6MgyVf7TVsLfD1xTBqsW/XajgQCiwgfBGESif74MuTZaPHeU
  97.191 +KHCCrocBDpEHrqcIDI3qqTXGMkKEIclLT+2Hq23Pk4DynuPCkK6i5McNkOqppSYYPGtaLUWb
  97.192 +ZxWlC7/480+AAQDBlngrDWVuZHN0cmVhbQ1lbmRvYmoNMTEgMCBvYmoNPDwvRmlsdGVyL0Zs
  97.193 +YXRlRGVjb2RlL0xlbmd0aCAzMjg5Pj5zdHJlYW0NCkiJbJdJkhu5EkT3PAUvoDQgAuMx+gw0
  97.194 ++1YLcvHvv2l3DwBJtWRaFJ+QAGJCDO0a1Z/5qs9+9VbwK6fyHFeq9vyVLm/P12NcPjrJxni+
  97.195 +gTbtma6qD82Nmxp/59l41CjY1K+RudLaeLZrjInf0/OzXmP6+v16+FXLgnx5mjy2t/X7l12G
  97.196 +P6/HwoKj69Ov1CFbu8wGTuv5wOvRrtZ9Y79abc9f9ZqtQjifk9BxhFSyTiwtcy1XQup9Q8Hm
  97.197 +Hh8S/WowxXujXRMXAJoTBnScVxqCTpP9PDJkmZmypDKen8OQwCpOyvWqIVErUB4UAtVSD0GI
  97.198 +QSsthml75taiG2kV/GeB8Wm91GFih5oOI85C4Q82WOxNnI0mbmXEMWV2ohUew5th/nYAHk9U
  97.199 +ZmOI8z68hMUxox5F4sql5hFhmeENw5hvk0647vPFXia+MINC/gdDeafdDCE1yo3pKviMokKX
  97.200 +POF5nJWvgTjICOOhk2uXOQ7zZh1l6S9crt7bF0NPmA2Ua9964t6cv/TcvPWEVnn8hbf7oZXl
  97.201 +fE5bOuOmcVPI8fqySMj58yU5bfShZgPHHJvBDs0VjSl3ylooW4JVuvTAJZB3MrbWUYE6G2Fd
  97.202 +ZcMyGLibERqFXxgSxVRy6LRKv7Jl0oTFDUGOC7E3VUl+2EuJvY5g5dmFWwufNaDdBLsU5o/N
  97.203 +eMVtxlbx0JPlQSmTquta/gG1VOPaxXym2DsvhyX/wvz+TRWL6+wKXbbC66ZFHeozxWxGWokg
  97.204 +waYc77zx44GwBOTxxC0ZkUqAvZDrYDGoxp3InA6n4jXTyTDrpkgs+HZxxurTYb5BEzfIg1MY
  97.205 +UYte1IXHLQY1aoarTFQEDI7Xb74dkEy+bV0uaHQIBGZq1XWAyvQpkPDF95oz4SsN5vMboae8
  97.206 +v3nphW0MlipLU55RNkn21OtZhTBZGZHRets5e5fwDhPXyJiIqc/DYciqJ+TyojO56xE5qg2o
  97.207 +psioSWQ3QcoCq92rJXyInXZTgQA9vhXjoSiN8p5Zf+PpMmLGgyF1PZeJhw4aTbVzSON9VvB7
  97.208 +M9BnoBcm7IH3DkTmanybSXl/4b0ZpXC962BDagxBqgV371+Crv3/Zbiq1S9mUfUnaN7hC8k6
  97.209 +lTzBjBqEGrNXUTvXKuKIxi6R+zyK4f8e/zz+/4Se+IegqBA8wfwTjUHH39fnwZXPg7UUTk8Q
  97.210 +Zv1kD6JEr1wWHMbvTarXML1qK9IOT3soniNYV3SnHkHvh/DSxv6W7OhL6ILNcNxQhFNLZBvT
  97.211 +J70uwEZEC/LWWoPm8cdyO1TQMTk/XYyihdPeh/E4Wt922prBlGNsvXUNWSZhh1W+f97W6TC5
  97.212 +zihZSTPXfM5fFLe/HpvLlmYxn5NUGFkpbAQlNHW/mHxLSFPRevxid6cjBhNGR8irP8thHxK+
  97.213 +ZUrws2qowhKtm8yfbIlm4QV3ZdHwW87q3Mr5zWD0+FAc7nsfPs5NMxzfThnin6K9eJNTRqph
  97.214 +nR49Ljam2+A/D+nbJwtrqK62l2lG7i64r6pK0fdtbEDRkS4L4Xy5ZqHrEaOFKkqcBZUcTeXs
  97.215 +G9gLs3ifteRaYxLGO1Zn2ZXwaRVT9UF0umyTK3vmMQWuR7fQVOnebKGbDm+QPhJG9Kro6m3u
  97.216 +Jvb1WOh6yO9HtAxAQ6izrdSa758FRS92CcMC741dVT+p+V8RxFTm26bct7Dr7VkUrz8wHIAx
  97.217 +IUKPDljqhQMWbAccS3RXw3JZFfJpQGeTNzIqtO8uivB6QJs0N8J9U5o31JwF7HS7PhQ21bb3
  97.218 +RiUC/M6+hUQ+TfXW9mCo94MZaUYDxGj9cLBaFbdxDqkKZLb18RvxWmN2WbMZlFxbkvIJjotW
  97.219 +LCtBoWOZ/V7TCBW7DsSBC+OutSuE+E3A1wNtU7b7cRwsay6s5TyQoc4jIiB+wztqbYIQl9qE
  97.220 +G6JRbYiOvoMUbm8QTlE/1Eku3HGJS+64hMg5BoZsG8rqQBfG5e+NIRcOsbkFXqPj9tXB7SvM
  97.221 +YLx6vcgPB5sU/Sr5/cUsW+I2pRmbA1CPLokjm2uQZWyVtmYkUzYthsjmjmhNEK+gmhVrNTMB
  97.222 +Z84CQ00QRi/OQkOdCspfztHVutIbPs3RfzKV6FtL48iTZdclrb5dHNrAtbP/BZdu7EGVQNiA
  97.223 +gXIMH7qHJajH6+PByAUSN5vx1hpVslBe1IBVPTw083hG05c9azQYSN7bmsifTTNvGnqpva0B
  97.224 +tUQEpKJVtvFb0+O30PSHw1FBMKyY0PA04zlPZM48NOewMmGVI2M7hJtQZ+1eRbmPFqkwATf1
  97.225 +VSyKZvFtT9HhoyxyNA1qVcR0SMqslRzYtLUixxPk1QJ3HrBI64EIfMQlx75+KgjuGyPf9YSy
  97.226 +1nsVER3+7/RS22XVlNFgpWYKyYGynNkIqzGsdR5iX72+FTeNMzxpKC1P+onjWt30om1Vx9Yq
  97.227 +5I1V9gBLZxwzwi9MPb49Jb9YPQzigMM0jqxOWgVIz/xmQ3qnD7vytU15VENnkOzSou11GS2F
  97.228 +I9xlJI/GzZVCM5+dOj+nIfDtiaTfpUVZNrUyfNTDOFot3gXYcsiETIfIMfYkkeoQMpY0ap4i
  97.229 +vNmVurU3F3nHYu8qW8YeYNEuxZt3Ld4cKY8nRfwy5+Ee7/1OejevAuzRYPzJkfGho60KwNOW
  97.230 +xuumRbsoby4a67S3RAQ29F8gRbXj5fCWZXS9I7A6r7NaSnyLbhnU4pTaa3yrjBipFdSjE2h1
  97.231 +kKaOqZNPzkpkUlcyMkaDVq1+U8o5vhVH9wBSwx4Pi1fauJ+dMXHZWUUKjR4thZq5tx0kDHqM
  97.232 +ubaHjw8ptyOj8fHopEEJu/KTWjipijAeSsK4zXrE+LoUzXubXyJhomvlrNbI3jTz/KJZZ3wr
  97.233 +LmqoQYOKo4lFb4BzVeLrLYLism4By1StRft0Q08jPhV3RQwoDQVlhS9xbAxSBEkw7awx6+Q9
  97.234 +joByU3CnFm4ZNW5UqB9kyIFmpG62iFutLnfoEovVDlWoZgQy05RxCil3EqNxx0lq8EqJQcDH
  97.235 +ARYCyb4YowusaXw4rpEO+Y5eWTUsMgaSTbyIwtUas1TRMLaJ4Z1D3MU5BMzR3PchahFwfSxx
  97.236 +reSz2nfetCYaUTmnhomfh6+xDyEHJ3we3nYlcJQ276pIrKXsZxdlVTQ0tIfNnKseU23Dy8Q5
  97.237 +ajFLYs1wFlsx5Qcl1ML0xOX8g3X0AugaONqun2e0dc46fR/leEgUD4SA3JRBEmhxUyv4PqzW
  97.238 +nAfVaP4QX56jW0ZcNjZWN0euc9Zi++J61YPOC3QUXUlVzy2ySosuZyKKHI+4H5E24bCwy2Lk
  97.239 +FyrXdyfVqdztGSWsH8qUPGqgetDNSOrJQ2YxGnueVtTQc9zFFSDVaVBilDivFLOebm1hdMQM
  97.240 +aNwk7yWqu1bxPNrct9401clshrGRFalDdIOUmLdEPi6q2t8ajRoK1WhZh1yPeyPXD1lZoRvN
  97.241 +7ib2LSvAxPiDBCuBbb1R5/Mb2+/S3NoJgyVAV+LdBGdJvHLaYibOz6PAss03O1o6mzF45ENI
  97.242 +LJNPazPfU3n+y3e15bgNw8B/n8IXCCBboh7HKPrRAwTtzyYLtPf/6MxQlL0oUCyQzcQmTZPU
  97.243 +cAjL8ziCQ8JvMEzJwU66WsQeQOlcAC/hu+fE3hUwzK7EGdDXcJ8Mv/nI6IkLZiElBAxTTsUL
  97.244 +gW61PARGE6NiNMyLk+F2uORzwgZOaRE43jQXsXA5FwAXq98D+44CNMa5AvoSLe7FOWp2rZsX
  97.245 +dvVRqpxO9QHUPcFUH4FCfUycJFllSpoGU+3FxI+IawhQriZNe1gF5Lh/EYrOgVlRczGbOIsu
  97.246 +wPaTZa83FRZ4Rme+zc7ITWy4VNiFY/c0ylw1BI/we7McmTjkHficTYy3Mg4JeU/lQirHc5sw
  97.247 +EmEorBJhcGyoK2kZuRGgvIxULMiEyE5MxVTkHUi7TVKYF+pqpcCnxMOLrkSXp4ScURevngUq
  97.248 +6SamytCoif7uTrvgR3BNoNhLAjcpYVhqNvmRsuSbZxw44NrWATTd13E7n1+9tYfdYnd6eN0w
  97.249 +7YT7kJ8K9jHqzSky4HVVrXTfPMNaK89biThynDE+ukeN7XDmc6R4zwULl0c/YTg9gdA1NXvK
  97.250 +hCmX9eLM3FxTgEZdK4yqWq6LMxxyUVtVBFfXpuh/bd/w93vnxE74LFjg7GyZzHfwDd8bL7y3
  97.251 +x9GwgGFScJx/p40uIKPqoU6aGvufn9uP/fPmrx3YPhBAB9vYgOhbDtP+6JDODGs6XEZo5CzK
  97.252 +ZP3KZdKSspD+MSgwwBpQCoVWullwg8KilCXxX/gRdVsPvHuoqEJm/7F1KU2WC/fwuFw87j7+
  97.253 +lwXoIqyUesTH7VHQsGfH6lKgXZqlcYsWB7Nq0pv+2eHsQx7GYK450HNjCVMN/Noo3zBY0Apd
  97.254 +MPmyASMdWspzXx/0Paspntv+V4ABAMjGeEoNZW5kc3RyZWFtDWVuZG9iag0xMiAwIG9iag08
  97.255 +PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIyNTY+PnN0cmVhbQ0KSInsV0uOXDkO3Ocp
  97.256 +8gL1IJL6HmMwizlAYRoGJj1A9/0XE0FSyvSgbPTSi4SBsiL1RIpfBT/KJXpvlwy7f8hVxgJY
  97.257 +9f6hl1iL9ecNaJrkjl22uNN1EoxGoGb8rl7V1r1e2uX+IJRRAYs6tGt2A6xzuZhGZWKD2lrV
  97.258 +BBAjV2917wlu2HGq1bWBAUh8SIjTxffmtLtcTf3+HTvl6tb5oV2qkFWu0ql6rkkwKr6EZNdS
  97.259 +S5oQsMMVuDNOzPrEIQBqK2SLC+lwYLkMegCkTAj5doN63LBeC5Z/vzW4ZSR6AI06Yd0ogfro
  97.260 +RKsD6aVQv5FcA65S9wP3Sm9AWvm3QZZeNga8UbTl+vNWcRVLBI1T4JGukutyNcjgV0QfcW9E
  97.261 +ZLjNClPsqu2ATygdEJ5QPc44NRF72SLoYPi+O2ilYmdACYF0am/j+VlT3xmKjSq+MQe/qsU3
  97.262 +1orvjLLdz9iqvlbjd21ltKp/N+LmbdAbGoem0gHTbIPPG6zqkSJCV2ike10ro0LNg/YiHE3d
  97.263 +MYMJueZkcGWvUSKe6YEQEWG0FOlnzAxDMC2W1Gk1f4cXJ0M0Ow+ZMqgMP1NF5jWpMlLs+ws2
  97.264 +fP0gFizoAPgGqAzfVSTRRgU+cn8Ehpm4xmNDXAEXkYHCawADOSrd6ykAznXE1/YejGOJ9cpl
  97.265 +hxqWvIelwSRChdlCgxbyU6r7LDIFHyGdPI9ovbDWxhaM3+DroxTH7eyxYlwts0E9L/H5dKuQ
  97.266 +aoNQGvYQc09F9CKsqzvXQxfIvKphOyJqNMkzsqRmXn+hurihjacCqWvwU9VLjpECaF5Zs7yA
  97.267 +SLyyM7lubS3rRF2d53aEbKH+2o4nFSaMjgJbadYXOMOP5H4JP2zM8Gs96IQ/cBS/H51G2AHp
  97.268 +U2YCsk6YjpIAp+AjOXsImJvJlpogGoh/OH8wOnGWJjz/NJrBjSILq584zWxIwC9gGl3Ry4+o
  97.269 +6gHeNifCJUJw4JPyAeFEGgPQs2txbf20SSiU5UmLvnXS3D3Q0fJfvNPhxLH3hvdihe4DYAJc
  97.270 +hQ8DsnVE8x77/fJKHRDQjkmot+hj6Z2Dwx14QOYVUY+mcGD4R4c3ypRGtPXEeieEo+0aB9EL
  97.271 +sLRT79rzGYmyBCx1V6niKdKZ3QCgeh1GN1DShp7dQKs/CtERlG/8aQhAiFv0AzX/MYWjol+a
  97.272 +kKq/G7mnqYv9AEB6Pf1AYVGp2Q8AkDneDrBU78rRDxLuhqDlCoE4inVoZj+Q5fm9G0LC3RGU
  97.273 +7X/s3g3QLDvCAd4REp3i2DiyFojP9g7/wiP7WhwHR/iVb2v9Cmf4xUOwww909Pj6hJ9odwOA
  97.274 +3rMZ0KG6Ex6gl3kSXumVnf8A3W1kO0iw20HCp8WJox0oSdqxWOkyeVr8xGlh840vcFpcPSu2
  97.275 +NLw4x2Jf727g6CQ8QXQCLJunBlsBAdM5WwF0ld0JToq78XgIXx3T4cC29/q1nI2xEyTYnSDh
  97.276 +6QQbZ4X2TU3clI5IvLwOT7w7wR+3f9z+vIO64R84OGurINlnRVDIwD6/37jFvx9TmY2M9j//
  97.277 +7xRqtdq81zrgnPo8NIoT35JHfjy0cGjyEIg8y+acAktmN2MxM/LlDm7xVOsftQVeBFfOinCs
  97.278 ++1//vv3r/t9X6YuFC35Xm5O68ZQewj+e0j9exaN04WqX859XeRUtcqGCqyGUTNfnbREIz5HR
  97.279 +etBSDw57CClm1418UKilb/zghDHoHq8/HwfackYebNeJyOwr13Yt8SHiV1NV/elUVX8xVc1f
  97.280 +TlX6OlXN91T1nqreU9VvOFUVec9V77nqPVe956r3XPWeq95z1W80Vwn62GKzmgX9ZckPc5UZ
  97.281 +974YkUTYP/D+gwDhFHj4c+iI8SUnJXDemGH2oPX3hiQR2oZnGa2SI1h7yg/xW/qPwn8yIqFt
  97.282 +wkWo7YlI2Vj6aiNfcouJpyxy71piTOgk5a3YBvRozhOEA1R9xTmSQjTA5oNCw2iDO3M+QAcA
  97.283 +JUSwVsupwSGayYND0MAxpICHlBMSvgLkWwQA5tF9GEgQFNGHJ8K4zGPDvCjSsfRtQqgL8472
  97.284 +4imAjrycS/tb0PwhA73Bh3g2ndfP0chlzXJN6t7nSvTgXOAsp3fzqaM6KZvmA9+IAWvkGjJX
  97.285 +kGGi7ny0OdcNHzLJJNfkuYrcDhS0Fq4tbJjsInCmDxIxB/gIycGGpBtmxMhjdKs4Nx54MKFQ
  97.286 +vE83yzUHlurCiJj/DIvqzDVyU2Oq6WT0Mjn7BKPVwr9k/7iPhF9m55sY9xX4gUSx3WM4KZ7m
  97.287 +e1Sh9+F7jni+4nuD0Jmr97mldF64GgkIpxBS+hmTCJ+YinCh8pB+Cee1GpNWcGKvW+O5jXiX
  97.288 +OMI+yhPqUxzXn6gf0ulAw9tNnNjrkLURtcSJo/7laskXPak5ecBn7tgeNKpNRjLZWCtE1XMJ
  97.289 +pwpS68CSzyeD4zAY/wqCykcQ1R/MfbaRwNmk9Lb3eJyhsr3kpGtJOoWPjlXfM7esdqeYOjdw
  97.290 +Y1obe4+hYTgnHMIruYgyVnD3vggF9ydxd48KKiPZ/8uH5hJXW9zT6gVV/EM17vRp8SHTLVKD
  97.291 +YBDUGhJ1eVq1VB2RQYWwFYvtaIj46/KMDRK2RKyYXXBWoT0ynJaPRg2jjBy4pvc7CiUPw3ot
  97.292 +yTWqSiQ+mxzLelBqcjxS4kU/smMHcMUyzx4LZWR74IU7d8zd842MskMzG/NeosrEuSaXcA7f
  97.293 +vsLfq8kGTN+W76TzuNY0n8nCp4KMk6RU2DEM1Uw2MCVBPNigFrnHi7JBMV2CeGJ7JPEU9oi5
  97.294 +nI5wFgIj6E486TF8HNQNfQI+Jw1wajR0beEcxuypGLNnP3sSurQ1rtnAIKFbcEESxMpXjNSv
  97.295 +VSrzjoNMWLxG9UJNiH7sbxp4IBkweDVjuFJ3UQRs+tTIFu+x3LC3Fuc43maUlmctPXEAR7MV
  97.296 +RJMw+sdjQwQHYgAiwRk2KKi+Y5L6HAav5cv2utwxh5wddfwXUW9tg93CEkbd+yk2OyRVkHmJ
  97.297 +KE2uu1isnTBabbmj/powugewc3ze7v8TYAB5DXT9DWVuZHN0cmVhbQ1lbmRvYmoNMTMgMCBv
  97.298 +YmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNDE1Pj5zdHJlYW0NCkiJbFdJjmy5
  97.299 +DdznKfIC9SyJ1MAT9LrRRyi4+wOuWti+P+CIoPQyC23Uol6kKIlDcFBr1+jzWa9m/fn1aAnL
  97.300 +5W5PgO4BYAugXqt0glqfn48Duccvm+3Hp4QA7Zq1nQPsGsV5dO8H4No8LaFdvbfcl3AuSvZo
  97.301 ++A6cRDDW06/SB7fhozmg+xPfzhUs4zOq5TeE+jVG7JV+hb6rn2+72tpihNAIun4dCG2tUnTZ
  97.302 +PHb0q7Z4OWJD7Pn1sHl1Gvz8vj+3K2xcq50jACaOzcM3yAh8PjY8rtjQr9kWRStM7ThkPq1f
  97.303 +rcQG2OfXguv3msNP+G6IIr6tLIAye8qVQketGE+DowddA9/g26Aw3AjXQ86wgecVqG1gAmix
  97.304 +D69XrPq6uCJA47WWlzUE2coVWinDKFiuYbxtmdbIFFxdgyBv7jXlKi/2pkCE4g8vL8R/7atL
  97.305 +GwTeGeYwBeLA0Xvuq85Qd59PgtV5w7oBuRncl5D+971v9UPTgBPuwC9w4y0DNmSQyrXq+PF5
  97.306 +wl6uhsDtsMMwa/voDfLaNNraZrb2eRAaIP04ksDwr/thNqJS5+Y5vl0W1nUDBDSlfNtHv2yY
  97.307 +GQ5gt304e1i77TuQe/x6/zi2gaN+9hq4fJuW4CT3hjejD5zinJ/cJv9kZuY24Ootc3tTOA1F
  97.308 +Krw8AJbE3Av9mvpGbu/vk9sbntzecKcfy0M/ZoBMfbxcsKFy+8/H74/y5F99/uvxj9/+qM+/
  97.309 +/vv4N1D+NhGlhRLUF3Y1KPH5LfnvB0pleg8l054f42pjJGxvcNcYfM3LRxILhkFiXuGiJiRe
  97.310 +6NcDTIVXPmAAzvl+wRnxBEBl/GAV6wQIC26qYjzgHLp4UZC6AuBQfE9+9mkSM5PYLANLdBbA
  97.311 +QqiQkl0rK6oEh7bF5BELfIeSpYJzBYkaB30+gK3Y22qvSxtxGtCYUpJukOxqUmw2rYZptTtQ
  97.312 +RQ3TlS0Y3wpOux/8RWxHpSdALVLCbXErix3QLDQSuDU5FcpLB+i34KhUfm7w+WC2O1FBHcJZ
  97.313 +UAq7sDTFeXi6BhN5QzAWeT1BTJyOKguAg2AZQJHggpuhSPZYeL4I4EZdnECZQD/R94npCZ7Z
  97.314 +VBqgviVifZY5yGfAOSotLzN4Yy1CTCKgPud2Guot8GJ5wAkW1Jt0III/PthGesqO0oijSHag
  97.315 +xn2wyq83RBp+gpdUcUi6w45v4amj4XKCKp9ExnWGlBgZSeAmlftKTqTLHJQWX4aQbVlbMohx
  97.316 +ZaHtAr3eLkyUDK0Jl6gsBVx8Zarf97P421EOoPaj986utElWIuLgInztYNC38Ez1Gssjccwf
  97.317 +2DLggcpe6a6MFL/DZ1JBAc+SwBDT7AHJLoR0rFMjj8IvJ2yMKFZRf1yWDrwxeUlsxrNKl18W
  97.318 +6Y57MxIowp9UcNJLHBCGFJTx4k4Xv+iKNlPUjzekv5lWFxowkav0NA0SB5+6VVH5mSHv2BW5
  97.319 +roZPbNKxYZ2oifwLrK2Mkx+fMwoNZWLNZDG5RjwtAxrPVlQMeTYICTSGZeQ1PoJQLWmBQ4Gs
  97.320 +bwYZUR1+EKyIrBvALEDgUHq9s1LcjGL9l+zG0XNVriqmjZ0kgVvPoUoUMgdoTkk2EjoQnGRf
  97.321 +zqcguDLSIi1hIYX/OZiXqpVxJnPPjRMMAJpLhy4QvLEWmoqVNAX2OokdIee8P7ODLMn21bOo
  97.322 +WspqFSU4ulZZEVCuMQQ00nGqsM8tW0NV1iAEHYJJjtJIP0Mjk+xIHTgniA6oZzTs1FyGgP1h
  97.323 +F2D68V6rGARrkmoKedd1I1omRYRWncUMtd6zGyD6RFVmWbI+NCUTmxKGTVCdDmQAMLwC2IQy
  97.324 +zt100Gp7K6sGD8b5DFi2Nmnuu89l6Gz21xprqrreEkFrPW6U6Oo6cnZRMrLrjrdvk40vzL7E
  97.325 +faFw1CXZVWVTiU30mbJkCn3MEpFVh/oUUWDF3DyzniTQSaUomWcVQ1cVGhr96RCPLP2Nqy20
  97.326 +kz8CFbYXUGuoqC3sFWayAfWUbSxxiF/RWl01ZRt7BOZ8BgE9d9SkMMMXIvdYPSO9TPnkoCxj
  97.327 +uzOoxY04XqbohiNJsbISGjKQV1QhDkpSoKogh+t+yrBUg9zSXGj4pmWJLM+IAylR/PTqw+DT
  97.328 +yRXt1yqJH9o5lRYcEnhuiUyh0nXP6ko3jR+caJvSzeopeiqDdF2covqBs/BIYnH7zz/vtdOo
  97.329 +Wr4LIaTch6xmY4KU5qqesFAhOzubYuKibCgojXgfzJEDWj5MqBkUaLHfMzOUAotDdsnuuVR+
  97.330 +8KpqHJ92YuMhZWwAexFJPOrZCFQzdfLYhlSYcS4F2lMpFToo1ZWssIuWZycni3Wfi2FsKJv2
  97.331 +rZyC9MyURnD6eKl7oniMydVjaO48bjjnHiflrceBqdFP98oPZfnL3S/sRTqV2NM+QW3auqzn
  97.332 +1toVi8KURvpknBooSpSlgRFOd6cLe+hRy6JMh5rQyJk/h3DgufoZ0YFi1TO+yy3+Gu6Bfb4t
  97.333 +jqyi2shXwXw7FqUyXyC8FB4sUY9C9O58aQvY0jLaYvky23YSeXt5gbjvSVSLw473Xih9fTAf
  97.334 +eHlQVxWZ1u5j0VzrFq2bRut59OFc5EdZjosrRUtOsxOt7ViJglPW7QNTuZUP9kzqmRI+z7x6
  97.335 +PHum1+P3vbpjsjfuiN3H7njuS3est0KbCUfdw5O05XAo7TwM20447EsPHWam937yFl7wY3fB
  97.336 +6rdwDsIFZQjv3r6LKydSAFtKrgGdgMaeqaciih5VskSioNu42l09AYbFW1aCanZnqaFgzPuV
  97.337 +ZJw15uuVZCwuWWs7FyMTmOXdaLdSPzTpAre0BREAMHm+kWAAkXHYgj72oN25yCcLXYtjXohl
  97.338 +JWUjXiMwdF//DzuJ/A7ZSolWHoYeSTQUmKr3ALHnEA/SAmX4FzofQTa5uR02+jiPU6A+xDGM
  97.339 +u8bKmYOy70Ot5Gi8tFq9HToyRN5fZGUI422RjywexDRjtxcROEpLtObja4VkS9nPRCgL0qyx
  97.340 +XZCcIrw9RFXm33H2uK+bgwf/ejji2zznJ7ISOIomrYqccNM/zkRomkB9aibqi13HOcnntIJY
  97.341 +u+tNwHkEJAWaI4NDGvhutq6W5JyF/FjsPYcVNnGK4upk4cKU5hzkxuGo59S9e4xkhavMIuJ8
  97.342 +lJO0sxoGUT8qLJ5UUeKkwhhCDWo6020lailb4l6ERUOXcESjYUUbh0ldlIIcGxYyy0lGJVi1
  97.343 +eEMuf2VuJ/y6YWW6wZdlSgM+FehpDvVoomVfUkhKlmB5etDTfItN6c6RLZF8UpiOexV05jui
  97.344 +aDRy9Peqc9nWITtzFbeiGwCtuT22hNLXVrbsykhMeANoZprwOQvUSz4vm6Vssww3UgI6RFLY
  97.345 +6RSkVMmnl+YcxrtG1kmRYWYL78hX2rYb+kw3hGXXq4pEj+zYAtby4eWRopbvF+IvahS+/o5P
  97.346 +ppw8OBiZEZk7SHpkd01y/4/pKkiOJAZh935FP8Fgg+1n7BtStZVD5rD/vyyS3DOpXEYxbWMM
  97.347 +QpQeTMjBZ1HmryuqlEX2i+QOPPmxVSoGntNVZANodvqd5NKAEpfrFf0oyupUjK2iFBhs90dN
  97.348 +BLJv/Frd55L1MgHeoHxIhiBCxQHNwNW+qBGsAvug8tdDtgdHsVa8w94rJtjnCDIWHc7R8NMq
  97.349 +MeCD+iPKHv4lEcYk+huLomHyLktDSiUF7jlpmdZPFAYxJCFi5Ad1xs9ILbFPxIjR3UFjsJbg
  97.350 +GPp2uzpQhuLJRB3d5REomDphYJWjGniZCH38jBO03S7cGME2JWJxivo6O2KeCDZTv3RG8Ajn
  97.351 +jF+oU408uGhrcycXMUGNYN/O+SPYueCDqKnnUnznw0wBds0PbRV2McpZbU7bPhkVpCb23Qph
  97.352 +cteFm1UgN/1reP03Ot4a9czBFe0j1+Fhfes8jBQygWZfIhid4g/34JFmPrwU6tpv1kJwS8s8
  97.353 +q5WHkxzGBKycbbSFtCnblC7ViBFo0WTDXa2qEPmjQkDxG6gN9gRIp0JbkU5/gHNQpeWOLsll
  97.354 +WFzONGFIcIakJ1s0PCDbbbi6U82aKcJmUBm4TlkRDwbnB3hLL6LGeQ8WB65TKJta+zxnLMl2
  97.355 +lD68U4GCVx6kCU++J+kGTQ07aeq1YHxMTBdPqaeJuhrTjUmiKRPFMdd7BEWSoB4IC7Cv1Hed
  97.356 +Dx0iQKWTSx9OSoHKmLWG3NlEGjIWZeb39ff6c/277W71Z/cMdNR9pyOVkHKvCyuvq9601fZ4
  97.357 +Z+bUqDKxUiTq1Ov8/rqY1PZZgvQzdTqH643jVtlVCtfD135HFBUbtwqL9EUDsGkyBMT5p2EH
  97.358 +u6Y3ieccyuohW1/EI3XgpG3kVkWxAnKYHN3ad5ryMLg6kex1icWsXnYuNZx5vcQVzkV+bxo7
  97.359 +ClHasBL0b+d+Q/vhSVFR0icQYF9XQdUDOKcsJZ9GpRg24UFBIWykuSOmikMkswZ+hyLrLWiX
  97.360 +kgkj0SY5hDkrs4DmKtuDhnNSgltRIi5HSbCCDwIFUzwYXS42yswMKpcMTbOKka0DGPrR4sks
  97.361 +HCQhkUH6z9gSp7SFgJY89SVd6ipE0wjB8saox301HwD+AC5NCKn3P82Gfa9cWJLnBgq+/wsw
  97.362 +AMl9eIMNZW5kc3RyZWFtDWVuZG9iag0xNCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUv
  97.363 +TGVuZ3RoIDMxNTg+PnN0cmVhbQ0KSIlsV0tyZKsOnHsV3oArACE+63HciB60J2//g5eZElS1
  97.364 +7Ul3pdEBfZJE+miPNur7R3/0td4/6mOb0GiDqO9x0OcbsLXxslr7Fir4sjz26EQ+G23LY67A
  97.365 +Nrg66o5TCPoIUDxMrRFq8/KocWark6hsmZY5w7Tgmw977N7fAXojmHM8gc8KywutxTZVn1Vz
  97.366 +HdGwaXvsnec37Aa8hnHVthFN5qVgv0E01s6wAtaumJ3AvUc6llCtmSyXaR9KrMcZnUfXx6xC
  97.367 +PEq2ewWu2qIN7dtaj+21T62yhZt9EpcyFFJr3HAhbIa7WmxPU3sMVpNna3HZJDKVmL9QOJj1
  97.368 +R6R6WSTelSPv7QXVnaYNWyEJ8IVVQDFqnGlYWQCr7PByIJQWVcRfd31n7HKujJUgil8sYVG1
  97.369 ++NHC74W/4EtGQuLhd0fECGYaV0vlb9GplA6jP2/jMXCaKzNfQF4E22jv49F2J+io8XgUpsDB
  97.370 +XDrrUWr+195h0YxgdQMoLAgAidIfkwwVAltjv4k0gZ6Nv72RpMZ1ngSECmxtYPjpQxvXPmTV
  97.371 +m27aBsEtb8DC/nYu5Gguu8rtWAjuETTesODvKfanmauIFTH8pau/QJw5e0DeVTgHFwCW2DFR
  97.372 +lq768YQaEccdRh7xc+W9xO8dN9/MlT9lCffZmbJaZefOZOpmdfGQhjYUC+nDdCnOiduDPNYL
  97.373 +aLhR5ITjKMLgb4uTuB0K7HKjLq4M131Yk9UeN9zPpMXJxXq0Hwh74yYLLVW14OYtMFPlNhcw
  97.374 +VXUs05bT2oF/Qb0Kisa13KDtV+DQH9wKULepcBP/AY2icseNJt5x16AxlZQX6ritQDvY4M5U
  97.375 +V8qA/IVaA/CLTBNQ3/OZQ+DpL4vbb6DVbpEkq8BtxplDqxaUM95AZNFVw+AtcKrJHlp1Epzs
  97.376 +0Zd6GfBHt7ANnhlDIZihWE8U+UpT4Qk5yA8R0Wp3V8piOrClkoWCk+4gawwznUVG5wpbhcKH
  97.377 +TLYKs6qiJwkVHJ2RL6WIOt7eM3sQq30zKyBDpf2sVR1f/RYLO44VhVUpqZDvp8pVKnE4kEp9
  97.378 +CIKYtkwthB8m/xLr821DcSSsOOnr0C7g38vCkMfAY/2DvenhcpcT0+LFGzpob6FWk2qtC5eh
  97.379 +OJ3Cz+eXuQGLAkTpWugwJJlCtbUnRKOSqHrU11KOcbN21ANXslIW+bB1v7+TDUKmK12voljV
  97.380 +joyfuinRBzaJvFfRZq5Q6KbrsfdTvRnP3AlP6K72hGny3HRHOcjYxH8vdokGUauh8ARtP3Vh
  97.381 +635dXUCx4jHhu87KheIjk/uE4foOAjL1iIQufSVEg9HkwHrwYAT5RFfC6tZT+QPDMxT5mn+D
  97.382 +phwFDL2pKBGRK9nsU4BCQlJ8FloEuyKyWW/qC13buBMvAg7c/WKgkVrfheYOFMVOzKT18H92
  97.383 +5XQWHTNmvM46Rs0QwTzHtHiGF1ctigFVA2BABLum81EaJJxhzkMNAPWohyczemB2ADhx4sZE
  97.384 +RfEBEEmoNyFta23xYGyulmohq+9ZT8hkKFHAWwS8cH38xKeGf95ak2Yllaho+WL+77+7dsjS
  97.385 +2CPydrJnoSnUClcMnoYxF49iNI929WXfqW6aprF2TSf2sJdjAh9Stq1wDysT3hAshOQHPiEf
  97.386 +++/4EJO4+CEmUfQcJCZQ7fZkJnDLyQQ1BurFDjUbCdSf1ARe/WKjavVDTaAaHU9Q8+BDTeLe
  97.387 +DjX57ehJTWy7k7Wipo7xQ822tWNQE8DXk5l0fq1kJuMMuoOMbSnVh5mAFlwkM1GNHc0pmQkU
  97.388 +nwUxAb34ISYLV/K9fz9VPcw8+NYBPZbtn/hJTWvq53+lUK4dCpmfVtNEoSd27EkUzQO0HGDV
  97.389 +GFOcIkwcXXEBH4ikyHXqu92iQ6ktTHcoSkfKDe192JL3QC30bVBoAXOGZQ8K1NeTC2gUlz+Z
  97.390 +Arz99leGux48IseALK+6unkkce7TQQHFd20JjCHTYhoP9p1pjfklbsFWPDa2IkF4asAUY8Vj
  97.391 +bOktjlkz9K/KI7v0kPN2uWLs0eMlRA5w1ooBAxQ1Np5Vj61ZmCYuiM/Y1WtgtUAzmoIVtujo
  97.392 +TQ0EWyAWZfR8+dOB0xUwXahCQObAokVg7pZC5yZbyVu41BI/rU2TaqAuAHuonbM6InW1qBEb
  97.393 +yApRNBPbhZo6CFNfQOjqEgcpATQjZEjjQUFKPr70r65oMRdpOjV9cWvkneUcSsmI4vYuJ7qt
  97.394 +CNRWONm02nbcJhKcnJHsVzXawCUkukIzkbG1ajaSp37ZZIqn2XOuoLQ8aGQt6D5ePeBN2dc/
  97.395 +aky9vueFa9mT/nnrK27vmVSIl67kgmgCDZHcOfOtmCqhIqp+J5UlOfhrx+1IwuEcoFrqpV8H
  97.396 +T9pd6+eB5WfgoteXPS3eozzRYuhKZxKdtvCJC0h4vqzK1Nk3Wl3Y5qFFtU5/yMbr62HqCSQX
  97.397 +M8b8LjNwd4305JGZuXTnn7zKAanHzXNi0xNCNKXChj/CvVLESNfE2kO3P6KfJYoKgQqdTag6
  97.398 +x+ojMx35M6glkI3QoSnkMS7GnAc87ivZWapx1A1JSFUK7QO27i+r3p9fDkhVe9kWPI5mT4ci
  97.399 +nXGKHCLj/cVd3IiIjLFQI8YNE1enzpckAFu9KSJaN32JbrIvHjt2MpVCDuW+nGd2urCSRfP9
  97.400 +OFTVPB13eZUyNAWDq7ZEeQUaU9ZJwxkgT5JigDwJ1H0+2c3LfVIfa1GU/CordvfMeuaJWev0
  97.401 +JplwfU2aZCRJoYwyCXZzkPTLDF2qKnv/EPfzzQ1tDtpkcf7rzTH9cVKAY2hJ0VxyOpSSAvTK
  97.402 +MSXUGrBxfoPyONcqpp8QQoACzxG+tzDkTWRfiR2hW3w2qFr8Pfik+NCGIWkcV6vWUPEiJSXw
  97.403 +23tqxx1zbvQsB5+e5th/x2duc5zxGz72nXPIL/iel/av2BhhgyQRoAiIagfYir1SngF7Y08N
  97.404 +b/kbbzj7a/4ehXmebYfZNNZgxxq7ISQY/3rVi8PUR8bULiNjWprIOorUVKu6dgIlrK/6XJsg
  97.405 +B75CJbL6TQTk++FTxb5TQeIzFTjf7OesmvBmYvBH/4lvJdL+Oz5TAbHfqYBorzMVODur9pwK
  97.406 +gGvMr1QtIPN2pgLnSGpPvfMdjU5goB09G6cC+hjNXkwFB5+pYLCtqWcqIKqWUwE2WvtlKtAx
  97.407 +/UwF/pxtJ4Hn9KqxwNnQzBwLGFrL1xVBrzu8fjIjbfbz1qIaa8wzFQAN38+xALjH8EdtYOUi
  97.408 +l0j1KesZCw6+hRgxpXzHz7Fg8Ka3c2m+Do5RAFlqEs9vkC9rbYlnO50msIUS45qghkD87KNI
  97.409 +DoG8CXGi/KTtXNGHcpX9rOfzDuBolc9bD8ghI9cgoP12pUAePUJ0pcPVkPNIXJTBVle2juIO
  97.410 +NRYhuwPdRHas8AmoRedIvSVSo9ak++OOVnzhiGboNfY7CFqosh58JAiez99w0+v4iluEnW0f
  97.411 +myKiaDvXnpGFWfXmTJmOeIAGXknmK/rXvneYutUzDgB1k22TqRUxgldRpjUgLhZAqdm/sl7M
  97.412 +zXn+WL7hzzWqIT9D2oGyYe6FLAQr9grnsCcosv7PdBldSQzCMLCVKyEkYJn+GzsJI9jPeZtk
  97.413 +wdjY89Zki0XRHID16GIHiAnJikdc+bws+RTN1/ZJ0sV77FPcu+1TVAIl/SSNL69+kuPp1k9R
  97.414 +TVLST1K+/egncdar0k8o884IBmUe7pUEpX77+RVltbrMSLP/+Cearz75J5RwnwVUhLgCCl7v
  97.415 +7b0CSo5vWEBJH2ABhbpsXAGFRo+0gK5VeOhHFY6vpUju/7WBBi+i2W2gJJSslYFeloGS5rgp
  97.416 +Rzl8xjVQcvawgepgENtA9wpc64rYnBsVhOFSJ8S4lQ7NSFXba/sd2z8JCu/xzxW5af8kZdmo
  97.417 +/FPEEB0BFcP+KShTkH+arn9qdTWwln8uTjsc2i6sqLN9xrzypzOYsH6KnmH9XDnTr36So+ZO
  97.418 +DU3QfGHj9Om5RJWn0/pJguVTyY+f/9cJ1GlpdSqqslgt3AV35RNZTc5SZGbZ80YR9QrMV7TL
  97.419 +dejkyfGsEoXiQBrVrxhEEt5VK61HPbvOhiX6rl81nLg6Zs3J1heo0X6nsrifMwdADTp+SlLt
  97.420 +PM3JbMp6kTWRmu5+po9U41j/yb2kYp1VkVM0soaY9tWjoUGFe2EZkLCCoGlDkGubo9WT2Uob
  97.421 +n/Wd3NFr3yHP7ZfBzPCbTOmW57PK1r2C3Xw4e3g5ahffWSybhVbw9y/AANF6dtINZW5kc3Ry
  97.422 +ZWFtDWVuZG9iag0xNSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMyMzI+
  97.423 +PnN0cmVhbQ0KSIlsV0mSZCsO3Ocp8gIVhsQgOEafIa3b/iJr0X3/Rbu7gBc1WJlVhvMECMc1
  97.424 +MMurrfn5w17d43OWVxXA//jt1Ql8zM+vD+AyK7H1z1ivmdPKIhgxNvj6AGz1+eQ1JzUnKrNp
  97.425 +yRa0nK/lS/v19gk0SxDRI6BwIxox03Z0uTPTdhSs66/SZNvpgMPVNO2tEbbp+shN/BWY8aDl
  97.426 +nqeawJxpnz8/Jub43PD7wB/t1bHSO17dPokatu2valMIRkADNOXK0w7+Fu6VuJnYnXURWV8X
  97.427 +Yd3S9lybB2suD9RfvW7utdEUsOgb6OitaNMJPyPwRw52q0StzWcT4DIGcbX4jPGa5LCC5nHR
  97.428 +oenB1jpXKlP31kYQdUjiB88bue4iSdASrlOXsYjgF7ytEZ/4XXoqZQzfEGDVIcMhfmxpmttm
  97.429 +pOUysAGQFsqrQwskq2i/WPFc6cbfH/98TKjQ6znNT2HTWSckMaHCMF0y/AVqUxdTqq4Rp1nC
  97.430 +HR8DXOkiJuQ8B4ReL/cTJt3ux/aaOMeeB45TG3tR7DzH3RKcM+y2OxtdhV5cavs8MxEy/qxL
  97.431 +Boy2e1OwhhMdh8jv9fZwf46yP+5T7ombg7vsZmhvutnbDv3CrVjwZW9cb1yVAYAqtgeqlD0Q
  97.432 +CazgqOXcqmsJHHEyUISQDQiWAsT62FwngbVq1eDvFvpN+kltRFqupdsdq5MEm7INKmcoUyWA
  97.433 +6cg8dj/OmHdi6LTPsoGF6t00cMi47oRU/jiLwLsHYbDEPWNkcFwCgBEQhx6idanb6BJ98Vi5
  97.434 +Emf68UfrIo+1tW25K69MKm6S0MTpj7PIs2MfTEdBbE+ZWib92uKScPL3oSiz+6FPiX9Tu0vC
  97.435 +oT0/7Ruxowjd111Td7n327e8fdkauJ5ugexzpHb2Cbew7vm37PxIZEtUzP0i2K+PVbFscrUq
  97.436 +BEzsPQuPfwLVkXR5I/KkspWZc82TIETywpJmeepJNEq/lAC2eiBALVkmB0EWvppmZplqm/FT
  97.437 +6bIbRYbFRF0s6mwZMqg04BW2lmXCweE7mqJZONUEEXGmKRAN96t1mlTY6l63K2g7/hBNZasY
  97.438 +OlXJEF6zpb8lFCe25KFlMNbIg9XMer7PVl14QIEkpN/oI1s+ntgkl1VhHPCfPKMOcSbKJG9h
  97.439 +F7Ix8hbqVOSarqg1Ob9INFCm2hHMbAvFcLWDv4VN5dRo3fI6IVFclVxqN92TwTpOqV3UrzI8
  97.440 +RVIkSVZaNSQryzf8g1gW+6qVW86LrvouNlz0nojLT1OtWtR6yQFtiZKY97urpx1PT6onH+4n
  97.441 +1QNJCSywPKEChZV0Jh8RqgoLV3TYMUn1oAyML9TVtZB0VAAL5PiTWPw4MhF+K+QRpDBZ7PT0
  97.442 +baT62c0JB20njpBU4oArMmwOz/Eap9vBb89FAydfI1Xb1bvCcmA4OyxgoL60TOVvaQvX2kZa
  97.443 +qvg1VT0gN10XuyUg6/o2vKdtyTrgXSuVlnpHh0gkbcWxVB9kg80iHf8TQoDRDlQhGIh2omg3
  97.444 +qAK9qsoAxSgKospBdAsEoVKY83a1q3VbijuUpS7WS5Fp72LZqsrSqJZ34F0HC5NtS0oUfuyv
  97.445 +21v4oTcft26ulf0fVhLwyEqoVaGBLo9s6uMucDOkCeklOfi6+jkUWWEC/NtAFuE9EFJAgZ4E
  97.446 +szvjC4LQfT49ODYY2QBnD/4PFgBvq2VvE9AsByS+HPjWQFv9xARh2Ok8iZT9Tl9qhXI/XSvR
  97.447 +KKejtQJB2BOHxLXdnotw5FoFZ7CC6tq0lM80h9qzsa5IToQ1BdWmkB5uaIWtbuvh4i5a1/c4
  97.448 +XXkuHqFaUVqa4/arfKFLhKi0x2/Qhj0ev9Gax7x+W7n5hH4D7p4z3TbmqXXdBtytJd02XFj1
  97.449 +N7cx4IyD7bax8s/rtrGyjje3ObBUAZ0XDtizz0BVEOpZnJdv6z6UwBgVCVXarfZ3WEe75vHI
  97.450 +RQf/64CrQftlwDdzq2cb0i1hNkxTTxMNFBX3SOvZ1D8NdByESr6mPieto+h7jZbXUnQ8T+uW
  97.451 +TbnNs3at4sqgA0Ibu/vQ/a7cqqx9/WO+f23ZV7BqSxvjra3hAOVNR6u0tLrQIuuE2XqRk1Ti
  97.452 +quOdtZGe/THw0HgHfAdO9f7QOE57dGhExk6mIq3dHxaRv7ckNotM4PGwiPYz21SxyJrzC4uo
  97.453 +LdmmJYsoLtUvT8gzXt9YRBrqz1cWEH9YZKLt7yy2Xc1FIlP2w2E7DerhcA88lDn8an8ZeHLl
  97.454 +zWw5gGRnyPzKvnXwLfbgXhlcTW0ki05pCasq0kwfOJAFovjM70ttlkXOjkz01XybT5N5UyS3
  97.455 +rM5Nj1AzUFXzOZWBjFqc01l9CHd7p7AG62ZP+eFAzP58H6ck4CfWiXyYDZlSLPreRn5XO9+U
  97.456 +ngSzdPGdQPNQk7YHvjWg9IWteKmAu41g3SHM/rA137upVMM/a9ubvrsVHaOs28mYsbzvlpGU
  97.457 +oOkrooQbClalklWTojvAlpqzLZNZ3XBkXZrbHEfY5WNf7tr9YPL55HNjXaon25OSkVVpEzqz
  97.458 +BvsamyHvStk96WBWYY4XCj1OWEE3malq9p9mSBv5lFl9w0yOteStYmCqoxxSzNRDiQSseGCq
  97.459 +90t6hqtNExzp6GcOZACu5vK9ZsM69t2rNTE1/XlwzxcZ04tuKx9XrnjgwzSfsxFbdflqpZU0
  97.460 +WM4jdlN6M4HkXM9bL8WfD0GpG2JavzjS5OF1lHEZzzEyTPOUOrijiBbdQSx1LZ4dOu/BlUGd
  97.461 +O+v6O+o8IcNSXUsIcvhpW9z0pjl9i6Mkjlv/gVg2r16A57hdjUOHa169AJ6lUy/OdjjrP4Xo
  97.462 +7GIFO6nwtpvkMcSxs1HMPoUxAeiZnUtJWFNBnjxzQDfWGQNAzUXjhPcXImAy4M7ATZo8yV8H
  97.463 +biV6BnxTMe2pRICx3gs6B7JURlqHjVuKnMJ+L+gkdvoNYcA2b0H39OEpRRjwarcUAe4iTP3x
  97.464 +AuNNgM49+9vXutYtRc6+uL6VIqqlxqlFFNNbMSKkdm4xOgOXNUOrkS+v3wZuMXoEe4uRMxNf
  97.465 +m593gEpO6qfSEu7W3vHbous0xL8NZA/5NuWPARQ11LA9UHq+T3hWwMz2zZegmgcWrVQQWiF/
  97.466 +qg1gK/rOdyuhnm23TmFgtjtA/8p+VLWEfBQRuqrHGSCPbR/IWpYTqQ/zh75H7rbaShR3N6k5
  97.467 +2FsDcl3CPFnXUyiWnZNMDcya5w47hcpDd3ALFXDNMOHrkhe1LJ9VMQVzat0cDZS5nm+ypc8t
  97.468 +C3CPz3vrVU+Ir0cGzxVhoYzp3wYe7fzn418f//1EBcM/+wyk7Qq/Rg9eE1b9+cEvPz+w50I+
  97.469 +LZi0fzINAmW/+AugEaPEzi+GA32mTFg25xv+52PCJ7sjdJYZJ98l//v3+czOqsORqUS/H1cM
  97.470 +O0Q9Yq3LFnX9iKTmExR8+sHfF+di39f+d8xEoeiDlu08qS681kPd3h/47pbmv0HsYW1jpvkf
  97.471 +7D6YznH+OQTVHnWJbCPc7mmuMcAOYORrjr3KJBp7qS4pHJytllzLd0eTRqnU/5Nd5chxxDAw
  97.472 +1yv8AhdJgNd7lHr/n7oPDndVCjEHbnQDaYn7ALpiuyY85r7p2fx4DeKIowwOwsYS0rJe8gxG
  97.473 +q3UHhylgKiRWLm6Irtm1VTxbCGTrQWpC/lrQ4Yj8KwdA+27Kw9wsPQgNyKkPALuMt4gGyCo+
  97.474 +Bzr2zF/dhIAxoegQ8NZibFvs/ZIsoijiPQxIlQOASjxuGniaS/F1Y9ZdBEAXZrkRY1gDZFuw
  97.475 +EB8lazRS74NA64c/TzAexFEci7fSQNc5di5eQbCe8mQBkyCOabGIOiLOBugH/76iedBCuYB2
  97.476 +rQqsaZNvdX2WGJGM4qlbcBqBZnPROMGN94ldNd83Fr3LGhdObib6m5NRrwhM7dNfSwaIANK5
  97.477 +phC1eD0Oqp4+MrY1d20vohH4ycbVZkp+JrBODVwrRHVm0OPaqlISReO3kMdoBnSCEwkjuE9s
  97.478 +WcW4IFuV6eDJ0SQR3d0EbBvomly1lpa1l2R6ObVX09J2BMBleLHM2WlL2M/Scw4VLPo27YFr
  97.479 +RQ0+mbSYs2X6fckV25S31Xpr64TpbTsx0WSUOUDa9lYAYGUKJGd7S/978ZbgCryuDPZBq/Xi
  97.480 +C3Fodc7tQw2AkvQpQX4hkNyoT5LF5VSiK5NHWLz9TwQd477FkPku1Z+oc64PvTwv4lpFK3Eg
  97.481 +7RElFOJ2zPMWDVWh4/m18mBYV7Ogk/gGwy09mINejObB2UgHXCzLgNNy2Ofe3MxcPRBSGe8x
  97.482 +fSK8U5vz2D7vSeDz/TfoaMendmwKupOO9a3ePJ6dTF+/n0KcuJ4qnah/FvH7689/AQYAnKh9
  97.483 +Qg1lbmRzdHJlYW0NZW5kb2JqDTE2IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
  97.484 +dGggMzE4OD4+c3RyZWFtDQpIiWxXO7YcOwjM7ypmA+4jJCTQepy8wN5/+qoAdfe1Hc0UrQ/f
  97.485 +Aum6rI3Pj3H11j+/v9QvbTPwkI/uay0ncv3Mdununx/zat0/P7+mXN3xcV3i+wO0fH1+2DWx
  97.486 +8aB9tWm5NrC0a+LAs1Xk2rg9ThbAcbWlWB73crleffZPKNUDOnbruta2gFuEy6GS6PN9XLbs
  97.487 +2d2vPdf79H7J6PftKpfJvnU78Kh+cBp29qbRcbQ9Lombd/krtLLbld8cDY/Ma6mEktMcnj8C
  97.488 +vWzY59fXHJfiir/wgB6TuNb/iQWajcLSPw2enJ+5LjX5yDW9f6ZfXSbBitj4tfognAgFzO78
  97.489 +pjYJFKbLNcbgwoTt6rZ5wb5kEY6xeOZuTsDbcCJ0ToB9dtle55sh9FRLeJtdbSNwPJIL17UZ
  97.490 +WKQDbiCiQS0cQNSZMlfTVWsj5teYYd9uDDlipTdCrLrW2mYvV+3Q+S98u7rW/4krVr++/vta
  97.491 +8JOfFb+/FnX1Z8fB54Za/gc8oTK4RictXfLGZ7n1y+wf+Nx21v+JBQ7QIxhZYExbQO8JrQHK
  97.492 +5TJv+JPnd6nvcCDghJ6EqA+gXWdNz8WJNXaHdvNU6+DyxpIgQmxx1xrjVbvQZdt6vjP2eRj4
  97.493 +AkjEy/HUDI6zmZcN6x9A3fldEHfAkYXuzXJ1L8PUJz/LSMhfwvACvDlXLm97hGAgzCdIMKCt
  97.494 +G0lU2U+kgKGi4QEUf2+CHAC+EbwAvkgmgPXm7+J3WDX8oQJHTjcNDL4AshZ1PaCzIxQ91lqY
  97.495 +BGzJEq3vj8MSCY5QCIHGim9b41zEi2Gclw5+NFMCcDgAzgaJqWgu9B2ktuEuoI00BOGNoS+0
  97.496 +THJt4LsWoNFS+4fAcK0VppJQQ5XmLQ8lFXlgGzkyAjVqQkft/Crhtpbm2QaCR/OcqbEW5CGh
  97.497 +dWfiVDQMGb5u5JHIP+9Y3UoatNnjbwHoJKKX6wv99+XoQCR6JhjrndiyZcCpQEH7Qn5FBLFq
  97.498 +Zh6xl8JnG07fkXh9fTaqL9oTwrPnZ6NI13pVHwRb9RZsRjGXK1J/I9Xd4vAdrAyBad2Gbrfn
  97.499 +JaGJg1IB+grUZhyNzslMK8GvLyzYs0pb4/ChWbobXWAjFU1exQrVxavRorZhF0sjGm26oY/U
  97.500 +tHnYjRRY1eYnviNgsbtFXh54Gu3BCDNqhXvZ7tBowfc8ekcmbC+Pth0M7tQT/cPldFpo7VOf
  97.501 +8qIDu53y2pq5To5QOihyFefGaAAHDc/2DuIDMrqDpdwDsRQzB8gA2M3mgyxjBH8Th5YwBISC
  97.502 +m7alBVhE1yLarIK8iapr5DaIjDHnvZn3tGDtpyqYMVUl/NquVt0KvROeYLNkVXSG2NmI49aO
  97.503 +0AGx47MqJkGwZapLA4RJRWJCAjvz+hZYJB2haJy2kMkiLO0YAY1RIG4ZFsctgjj3Nk5tS0Pa
  97.504 +T3nMkIZr5ny+G7Is+aolVA0GZTficjZR4+WG+BFai/xgvgeUsMbXqOUhQHysvkfF7vjvbJjI
  97.505 +PI3pIc6emZpMYV4u0SpQwmA94hFF2INouQNZEHWK9oYJkNjp+CjED23r1SR7P9Zy9IpGCbvo
  97.506 +DibCqWtiq9rLwqf/ql2hauhckfwuyx7nU75yPb9kOXcQeQRPkpaaZ/Re0c0NWoMB59ZXvCFx
  97.507 +I9fxGt1Z4z1SAIdbvxt0qD38RQo0VMzu8ZueaTO5lfVIX49Vt+705YxuQsU5GRLnfNKCMAJT
  97.508 +zx1zfW4IQTqZUEcWJqdaHkceYpRXLWdVsQhapgKHWtaIW+mznqn9VjjG9tucUdrT3v3QiVDJ
  97.509 +YpuWSc+Ow36d3vLZs19rlchsUecNp9DfLXN+Dn8iBOJ4xwccPi2CkYLqQ8KxSP5AkaLbvgs2
  97.510 +lxFqdZbtgV3W3fPyvinfB1vp4CvGImn59yOwqGbpqM9pOSxowNHiCbSjK4M3c0TjFILQdvJc
  97.511 +v2u+wx39zQkd6fXihM5J1e7dAudnqOp0CMT7fbug+ve6dQNkTt4t5f6OmAlr8Gxn0Myf82NS
  97.512 +DpdAgVbJukIdLRrYK/Fu2Zt7Egn0z5YJV8IOYvdntr4Nfqq8j9LhrMCvztcJek/f5w69lr2U
  97.513 +mNkASsUKwMuEitAx8gTwOOF7hLmhdMyM/h0XksROCeBAdTv1ge0jx8oqnw7uzPLj44JwJk/P
  97.514 +2Fzwua0EHJ5Y7Gc7pwRWK89vOS21pWUQ5/cgFBRXqvfwDdWvvC5G6myYrxUI83wfgLSIYfi5
  97.515 +QphBjw5iUZ+3jgc/iVWCMrK2lwfi+DfBxP2PA6nderz7zftYPdB7SAqZ479DEDwPlsCQJmPl
  97.516 +CJg1JINvoXdJDVKRnXFBBtIk36rsgYSR4EmRXC7JZ+jxTL8hYcRpswfC8jFreQjgmgHr7u1w
  97.517 +ncrrfORj32H9UaBa461fDcC3AU+JDFgqT2sk9p0n6NrhAe1VEdnZBvt5dWcSA1zWNfu7sz0f
  97.518 +n7Imsj0PtGdbt+RXSEbNr0vzlq1PXlHP2b7lGSzb0u95mL6wet1yIJbBx+1rIKaAz8MzEUvf
  97.519 +Rck5Et/4KZYS5FAc+7ucqZj3tRwMt5/g+DhjMR3dOFBUolF/f3cyuNX6ujsZ7A2PgId6ulBH
  97.520 +DHeyvDwmO1qZhzvgwGT+GM+OPzNrY7pUP0/ZidxBIusOBivBr0fw9LCXJJrYBB8X40YTI46x
  97.521 +625ivGW9n3L3vTxDZ0nWrGENplKC8W1l6Dr4G+6sZlnB1pks9wRbtXpBDUIKjVaSijHlgLul
  97.522 +HiMnUu2osZQ0DpXAY2dDXr0HlpFMJ0kUKtWverxZiG1k/0F4Aq+Z+bPmqh2zyo9TYWDNjKJ2
  97.523 +b6zazw79FgTMftL/IWBWIhYlSTUoCNPNa1JNZ63+fsPSneuYyhqHu7V2sFsR75pVZjY5hEhr
  97.524 +IvdYcYKIGmI6HrzD+5Ffk08gyXHJmV8QxENpRpVB7zmjlFkQdM5EkPddAdh0vxuzIBY6ZCZs
  97.525 +59S1MJvsINLGrgHoke+rR0IsMlyMNhtPBMKadAa0kUWu4lE7PbJwSlaXxmGsonFepbI4EY+3
  97.526 +Kis6z/0dfOYBh8+A0eDo7+CJBe5acXkLXTzfFkxZxGeBT/JhtjMHIOgrPEeOB9Ieb8jdA03S
  97.527 +NTg2h28KpmRlz/xu8UQcTOoHcqSv5fatHqlcm/+SkGKsBD1bJmuM9o0m91QI7wzzV4uD93pS
  97.528 +UbQ4+jojwfAyEtvimTpzaoQgSndFPAklejcH94M8pq5cLP5N2RaG/0PyqI+W7o/6EyT2aD+R
  97.529 +6/7WHmm4MxyhPaCksaH9nFnRt/YQxPOktI+sv7UvdGtf+NF1ks77vyR4FYkdASOOOmI6AKqF
  97.530 +ekNWQvFDD3VF94cvUInG5O4szrHi0UCBJ+1MdkLg4flUjTcY8GZ687XZ4lRLe2NKwK2G9Ksp
  97.531 +OQjEMI/4tyHBHGm5nyHBkNMjhwblYwDYW0/OH8HH3qI041LWILBJTn1OtgXmiETcZtzhKHHZ
  97.532 +twS+csm6jCEhb9kzn1D7f7arJbmSGITtc4pcIFV2+wfHmDOkKquZ+28jAcZ+k1Q2Ea/bbWyQ
  97.533 +xOP7bPJiEpCYHIuAxGdch1mEBWoa7fYIi/+14xEWSFf1eISN0yPsQHgEvF9LT48AaLWaHmFR
  97.534 +r2qaBG5PjxvF/mmxDhHxWPshKpzRKG5laT5xHI/zjrqRRkDVxkO6Kh6gHTn2Rm4h5GJeJ0bi
  97.535 +4h4J3gLK8s+x91aBwtn31LOhOwUszlv+OeyuGw/QzFpJqGRjMRfpV+OxqPr1+3A1Zct0g0XN
  97.536 +GY9H46TohNh4tCKAlVtF5w1H4MfYuKcyoZI9W43JYK3XdtyRbD4G3I9b8xGe3gPqq1+9h08s
  97.537 +ubXavumvT9kBpyIyAgNr2zrhGQmk4bjAqiVHPb9vRalrXjfQ8snFdEdxf7VfuqOPtc7WHeUy
  97.538 +I3UHsPd16Y6ym9fWHaUsb9kB0DYv2WFgScoOoVe5yc6BITs7cI4ae9tu/L9I8jYDZSRvM9u5
  97.539 +kriFNK5X/eDs5JqsAKtna8TNg/bFwtIgUNQy4GJRHKgePYi8HdWjYkaaqzXjUIUF0LEDf08g
  97.540 +L3+/8iPAGa1ZAClg/vkgd7wE9iu4dYj/80vgfDZe+RGgK+0ZCXvH4fApcJvBkuRmuDHgdrE3
  97.541 +I7LZG/XHr5J/3FIaHLHgEHt+B7qt4Pus3S8cuXLBVVfac2Izd0nE3NR82vUE3F4o/aKUIolt
  97.542 +6Nmin5ZWU3+isXeAawwJ7H3iUnzAk+gHibEClW8NI96vPJgWePogstzAM9LdCdPjnCvESFTm
  97.543 +hasJDkvl6+0P/t6/BRgA6y9qdQ1lbmRzdHJlYW0NZW5kb2JqDTE3IDAgb2JqDTw8L0FJUyBm
  97.544 +YWxzZS9CTS9Ob3JtYWwvQ0EgMS4wL09QIGZhbHNlL09QTSAxL1NBIHRydWUvU01hc2svTm9u
  97.545 +ZS9UeXBlL0V4dEdTdGF0ZS9jYSAxLjAvb3AgZmFsc2U+Pg1lbmRvYmoNMTggMCBvYmoNPDwv
  97.546 +QUlTIGZhbHNlL0JNL05vcm1hbC9DQSAxLjAvT1AgdHJ1ZS9PUE0gMS9TQSB0cnVlL1NNYXNr
  97.547 +L05vbmUvVHlwZS9FeHRHU3RhdGUvY2EgMS4wL29wIHRydWU+Pg1lbmRvYmoNMSAwIG9iag08
  97.548 +PC9OdW1zWzAgMiAwIFJdPj4NZW5kb2JqDTIgMCBvYmoNPDwvUy9EL1N0IDk+Pg1lbmRvYmoN
  97.549 +MyAwIG9iag08PC9Db3VudCAxL0tpZHNbOCAwIFJdL1R5cGUvUGFnZXM+Pg1lbmRvYmoNNCAw
  97.550 +IG9iag08PC9MZW5ndGggMjQ4MC9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5zdHJlYW0N
  97.551 +Cjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+
  97.552 +Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhN
  97.553 +UCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAg
  97.554 +Ij4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy
  97.555 +LXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK
  97.556 +ICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgog
  97.557 +ICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21t
  97.558 +LyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
  97.559 +MC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6
  97.560 +Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAg
  97.561 +IHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAg
  97.562 +ICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAg
  97.563 +PHhtcDpDcmVhdGVEYXRlPjIwMTQtMDgtMTBUMjE6NTA6MjMrMDI6MDA8L3htcDpDcmVhdGVE
  97.564 +YXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTA4LTEwVDIxOjUwOjIzKzAy
  97.565 +OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0w
  97.566 +OC0xMFQyMTo1MDoyMyswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3Jl
  97.567 +YXRvclRvb2w+QWRvYmUgSW5EZXNpZ24gQ0MgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9v
  97.568 +bD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDpkN2UxNWU4NC0yMjA0LWZhNGQt
  97.569 +YTNjMi0xODc0YjhkYTI4NDg8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpP
  97.570 +cmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDplYjk4OTk1Yy00ZmZlLTRjOWMtOTNjNy1iZGQ4
  97.571 +ZDU0Y2U3MDk8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRv
  97.572 +Y3VtZW50SUQ+eG1wLmlkOjZjMmQ1ODhjLWJhMmItNGJkOS1hMWYxLTAxMDRkOTA1MmMyODwv
  97.573 +eG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOlJlbmRpdGlvbkNsYXNzPnByb29m
  97.574 +OnBkZjwveG1wTU06UmVuZGl0aW9uQ2xhc3M+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5Pgog
  97.575 +ICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
  97.576 +eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVy
  97.577 +dGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJz
  97.578 +PmZyb20gYXBwbGljYXRpb24veC1pbmRlc2lnbiB0byBhcHBsaWNhdGlvbi9wZGY8L3N0RXZ0
  97.579 +OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFk
  97.580 +b2JlIEluRGVzaWduIENDIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAg
  97.581 +ICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAg
  97.582 +ICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTA4LTEwVDIxOjUwOjIzKzAyOjAwPC9zdEV2
  97.583 +dDp3aGVuPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2Vx
  97.584 +PgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJv
  97.585 +bSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5j
  97.586 +ZUlEPnhtcC5paWQ6Mjg0NzZlZDgtM2VlYi00ZTlhLWI4NDMtNzJhYTU4MGFjYTVhPC9zdFJl
  97.587 +ZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOmVi
  97.588 +OTg5OTVjLTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6ZG9jdW1lbnRJRD4K
  97.589 +ICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmViOTg5OTVj
  97.590 +LTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE
  97.591 +PgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+ZGVmYXVsdDwvc3RSZWY6cmVu
  97.592 +ZGl0aW9uQ2xhc3M+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxk
  97.593 +Yzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwZGY6UHJv
  97.594 +ZHVjZXI+QWRvYmUgUERGIExpYnJhcnkgMTAuMC4xPC9wZGY6UHJvZHVjZXI+CiAgICAgICAg
  97.595 +IDxwZGY6VHJhcHBlZD5GYWxzZTwvcGRmOlRyYXBwZWQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0
  97.596 +aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+DWVu
  97.597 +ZHN0cmVhbQ1lbmRvYmoNNSAwIG9iag08PC9DcmVhdGlvbkRhdGUoRDoyMDE0MDgxMDIxNTAy
  97.598 +MyswMicwMCcpL0NyZWF0b3IoQWRvYmUgSW5EZXNpZ24gQ0MgXChNYWNpbnRvc2hcKSkvTW9k
  97.599 +RGF0ZShEOjIwMTQwODEwMjE1MDIzKzAyJzAwJykvUHJvZHVjZXIoQWRvYmUgUERGIExpYnJh
  97.600 +cnkgMTAuMC4xKS9UcmFwcGVkL0ZhbHNlPj4NZW5kb2JqDXhyZWYNMCA2DTAwMDAwMDAwMDAg
  97.601 +NjU1MzUgZg0KMDAwMDAyNzI2MSAwMDAwMCBuDQowMDAwMDI3Mjk1IDAwMDAwIG4NCjAwMDAw
  97.602 +MjczMjQgMDAwMDAgbg0KMDAwMDAyNzM3NSAwMDAwMCBuDQowMDAwMDI5OTMxIDAwMDAwIG4N
  97.603 +CnRyYWlsZXINPDwvU2l6ZSA2L0lEWzxDODIwMjYzOUE5Njc0MDgyQjQyNTI2OThGNkQ4OTNC
  97.604 +OD48QUM4OEI2NkM5ODAwNEY4MzlEM0U1REMyNjA4NjVDQzE+XT4+DXN0YXJ0eHJlZg0xMTYN
  97.605 +JSVFT0YN
  97.606 +
  97.607 +--cEobB2knsyc5ebfU--
  97.608 +
    98.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    98.2 +++ b/test/test_mails/msg3.asc	Mon Sep 02 20:53:32 2019 +0200
    98.3 @@ -0,0 +1,17 @@
    98.4 +From: =?ISO-8859-1?Q?=22Eifler@dontpanic.ulm.ccc.de
    98.5 +To: mail@ccc.de
    98.6 +MIME-Version: 1.0
    98.7 +Subject: =?ISO-8859-1?Q?elektronische_=DCbermittlung_von_Steuerdaten?=
    98.8 +Content-Type: text/plain; charset="iso-8859-1"
    98.9 +Content-Transfer-Encoding: 8bit
   98.10 +Status: RO
   98.11 +Content-Length: 1136
   98.12 +Lines: 29
   98.13 +
   98.14 +ab dem 1.1.2005 ist es verbindlich vorgeschrieben, dass die monatlichen
   98.15 +Steueranmeldungen an das Finanzamt bzgl. Lohnsteuer und Umsatzsteuer 
   98.16 +elektronisch, d.h. in aller Regel ber das Internet, bermitteln werden
   98.17 +mssen. Ein Ausweichen auf die Papierform ist nur in Ausnahmefllen
   98.18 +zulssig. 
   98.19 +Gru und macht weiter
   98.20 +
    99.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    99.2 +++ b/test/test_mails/msg_no_key.asc	Mon Sep 02 20:53:32 2019 +0200
    99.3 @@ -0,0 +1,44 @@
    99.4 +To: notreal@kgrothoff.org
    99.5 +From: Krista Grothoff <notreal@kgrothoff.org>
    99.6 +Subject: test3
    99.7 +Message-ID: <579B4AB5.4090402@kgrothoff.org>
    99.8 +Date: Fri, 29 Jul 2016 14:23:17 +0200
    99.9 +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
   99.10 + Thunderbird/38.8.0
   99.11 +MIME-Version: 1.0
   99.12 +Content-Type: multipart/encrypted;
   99.13 + protocol="application/pgp-encrypted";
   99.14 + boundary="Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU"
   99.15 +
   99.16 +This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
   99.17 +--Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU
   99.18 +Content-Type: application/pgp-encrypted
   99.19 +Content-Description: PGP/MIME version identification
   99.20 +
   99.21 +Version: 1
   99.22 +
   99.23 +--Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU
   99.24 +Content-Type: application/octet-stream; name="encrypted.asc"
   99.25 +Content-Description: OpenPGP encrypted message
   99.26 +Content-Disposition: inline; filename="encrypted.asc"
   99.27 +
   99.28 +-----BEGIN PGP MESSAGE-----
   99.29 +
   99.30 +hQEMAxqoixpCqEC5AQgAw2FSvhWUNOLTXDigj/0sSAvjsiRnywXoa+IWXECZhIy0
   99.31 +78J+Ib66VgdVUuHuxa2tw1EojKWtSrDlcxJUnWwcewRaRzwGmZ2OTTvMb+ri8y4B
   99.32 +YdwDsL0MthWiXO/V81kiYjyA5jn6e1p4kYPWJCHTeBu1DKZFreulD/ckMFBFgbwt
   99.33 +fttSaMMDuU3gjlQET3kOppWLatMevosXiwUOBr3fhDZvGIGu9OI6tiXlul0B1+aG
   99.34 +YSn81tIaZKPixlgVVmJYXVbz/P1PM2ilbGbOOyrcDvY2YDFiQfjdjh7V+noshB9u
   99.35 +n3MBQ/altgUdjfPX8KDp7RACddr2QuoY2SGF1PMcwNLAmgFZ4T1kAtaT4l7+/nF5
   99.36 +c/DhDccRFLtb3wNjuhMs1QJQy+2O5cJBvT42U+0TM72MFTwRNwXlWNkn8r8eJfZj
   99.37 +6TUyZqNK6LqKKZksNUIVhGPcore3HPhfiSVV8k7iRG8mZ2wfMe25hhGG/0+pCOiB
   99.38 +9/OCXKOgFNlWSVzfmbQ9dAvxaZVlDOrgy7weS8aGkH73B+u70SX9iXNvmfLoXv90
   99.39 +0oimyhfkMd+9lK9rFwqh/RankVun1V03lQJhyaPMotWOIw06Z+8s495G3h6UiUIu
   99.40 +vqBfr6mPzIVVrIuSeWSBY/lE+1+3DUUTbx5lDWynRxND7bd7m1uwcl2nIAcmsJ+R
   99.41 +JKm1+JTEwoYgcPBUT+lxshFexqXv19hk7NWIAmhNmEpRRsi27gqmk5IVDmeR4upr
   99.42 +w65H7Es9EN0no0C5ZjUdGke4jQ0ILL8akqDFTWp8vCUuQgKZNHRayQZ84cg=
   99.43 +=q/R9
   99.44 +-----END PGP MESSAGE-----
   99.45 +
   99.46 +--Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU--
   99.47 +
   100.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   100.2 +++ b/test/tmp/README	Mon Sep 02 20:53:32 2019 +0200
   100.3 @@ -0,0 +1,1 @@
   100.4 +This directory is necessary for temp reads/writes in the older test cases. Ignore anything in here.