reset all own grouped sync
authorKrista 'DarthMama' Bennett <krista@pep.foundation>
Fri, 17 Jan 2020 11:19:47 +0100
branchsync
changeset 4350fe4f0b28aa48
parent 4345 d277e48a4734
child 4351 864d368faa8b
reset all own grouped
src/key_reset.c
test/src/KeyResetMessageTest.cc
test/test_mails/check_reset_all_own_grouped0.eml
test/test_mails/check_reset_all_own_grouped1.eml
     1.1 --- a/src/key_reset.c	Fri Jan 17 10:07:44 2020 +0100
     1.2 +++ b/src/key_reset.c	Fri Jan 17 11:19:47 2020 +0100
     1.3 @@ -850,13 +850,43 @@
     1.4      return key_reset(session, NULL, NULL);
     1.5  }
     1.6  
     1.7 -DYNAMIC_API PEP_STATUS key_reset_own_grouped_keys(PEP_SESSION session) {
     1.8 -    return PEP_STATUS_OK;
     1.9 +static PEP_STATUS _dup_grouped_only(identity_list* idents, identity_list** filtered) {
    1.10 +    if (!idents)
    1.11 +        return PEP_STATUS_OK;
    1.12 +        
    1.13 +    identity_list* id_node;
    1.14 +    pEp_identity* curr_ident = NULL;
    1.15 +    
    1.16 +    identity_list* ret_list = NULL;
    1.17 +    identity_list** ret_list_pp = &ret_list;
    1.18 +    
    1.19 +    for (id_node = idents; id_node && id_node->ident; id_node = id_node->next) {
    1.20 +        curr_ident = id_node->ident;
    1.21 +        if (curr_ident->flags & PEP_idf_devicegroup) {
    1.22 +            pEp_identity* new_ident = identity_dup(curr_ident);
    1.23 +            if (!new_ident) {
    1.24 +                free_identity_list(ret_list);
    1.25 +                return PEP_OUT_OF_MEMORY;
    1.26 +            }
    1.27 +            identity_list* new_ident_il = new_identity_list(new_ident);
    1.28 +            if (!new_ident_il) {
    1.29 +                free(new_ident);
    1.30 +                free_identity_list(ret_list);
    1.31 +                return PEP_OUT_OF_MEMORY;
    1.32 +            }
    1.33 +                
    1.34 +            *ret_list_pp = new_ident_il;
    1.35 +            ret_list_pp = &(new_ident_il->next);                
    1.36 +        }
    1.37 +    }
    1.38 +    *filtered = ret_list;
    1.39 +    return PEP_STATUS_OK;    
    1.40  }
    1.41  
    1.42  static PEP_STATUS _key_reset_device_group_for_shared_key(PEP_SESSION session, 
    1.43                                                           identity_list* key_idents, 
    1.44 -                                                         const char* old_key) {
    1.45 +                                                         const char* old_key,
    1.46 +                                                         bool grouped_only) {
    1.47      assert(session);
    1.48      assert(key_idents);
    1.49      assert(old_key);
    1.50 @@ -870,6 +900,18 @@
    1.51          
    1.52      PEP_STATUS status = PEP_STATUS_OK;
    1.53          
    1.54 +    // if we only want grouped identities, we do this:
    1.55 +    if (grouped_only) {
    1.56 +        identity_list* new_list = NULL;        
    1.57 +        status = _dup_grouped_only(key_idents, &new_list);
    1.58 +        if (status != PEP_STATUS_OK)
    1.59 +            return status;
    1.60 +        key_idents = new_list; // local var change, won't impact caller    
    1.61 +    }
    1.62 +    
    1.63 +    if (!key_idents)
    1.64 +        return PEP_STATUS_OK;
    1.65 +        
    1.66      // each of these has the same key and needs a new one.
    1.67      identity_list* curr_ident;
    1.68      for (curr_ident = key_idents; curr_ident && curr_ident->ident; curr_ident = curr_ident->next) {
    1.69 @@ -972,6 +1014,49 @@
    1.70      return status;
    1.71  }
    1.72  
    1.73 +
    1.74 +DYNAMIC_API PEP_STATUS key_reset_own_grouped_keys(PEP_SESSION session) {
    1.75 +    assert(session);
    1.76 +    
    1.77 +    if (!session)
    1.78 +        return PEP_ILLEGAL_VALUE;
    1.79 +
    1.80 +    stringlist_t* keys = NULL;
    1.81 +    char* user_id = NULL;    
    1.82 +    PEP_STATUS status = get_default_own_userid(session, &user_id);
    1.83 +
    1.84 +    if (status != PEP_STATUS_OK || !user_id)
    1.85 +        goto pEp_free;                    
    1.86 +
    1.87 +    
    1.88 +    status = get_all_keys_for_user(session, user_id, &keys);
    1.89 +
    1.90 +    // TODO: free
    1.91 +    if (status == PEP_STATUS_OK) {
    1.92 +        stringlist_t* curr_key;
    1.93 +        
    1.94 +        for (curr_key = keys; curr_key && curr_key->value; curr_key = curr_key->next) {
    1.95 +            identity_list* key_idents = NULL;
    1.96 +            const char* own_key = curr_key->value;
    1.97 +            status = get_identities_by_main_key_id(session, own_key, &key_idents);
    1.98 +            
    1.99 +            if (status != PEP_CANNOT_FIND_IDENTITY)
   1.100 +                status = _key_reset_device_group_for_shared_key(session, key_idents, own_key, true);
   1.101 +            
   1.102 +            if (status != PEP_STATUS_OK)
   1.103 +                goto pEp_free;
   1.104 +            
   1.105 +            free_identity_list(key_idents);    
   1.106 +        }
   1.107 +    }
   1.108 +    goto pEp_free;
   1.109 +
   1.110 +pEp_free:
   1.111 +    free_stringlist(keys);
   1.112 +    free(user_id);
   1.113 +    return status;
   1.114 +}
   1.115 +
   1.116  // Notes to integrate into header:
   1.117  // IF there is an ident, it must have a user_id.
   1.118  PEP_STATUS key_reset(
   1.119 @@ -1108,7 +1193,7 @@
   1.120              
   1.121              if (status != PEP_CANNOT_FIND_IDENTITY) {
   1.122                  if (is_grouped) 
   1.123 -                    status = _key_reset_device_group_for_shared_key(session, key_idents, fpr_copy);
   1.124 +                    status = _key_reset_device_group_for_shared_key(session, key_idents, fpr_copy, false);
   1.125                  else if (status == PEP_STATUS_OK) {
   1.126                      // now have ident list, or should
   1.127                      identity_list* curr_ident;
     2.1 --- a/test/src/KeyResetMessageTest.cc	Fri Jan 17 10:07:44 2020 +0100
     2.2 +++ b/test/src/KeyResetMessageTest.cc	Fri Jan 17 11:19:47 2020 +0100
     2.3 @@ -956,12 +956,12 @@
     2.4      free(alex_id2->fpr);
     2.5      alex_id2->fpr = strdup(pubkey2);
     2.6      status = get_trust(session, alex_id2);
     2.7 -    ASSERT_EQ(alex_id->comm_type , PEP_ct_mistrusted);
     2.8 +    ASSERT_EQ(alex_id2->comm_type , PEP_ct_mistrusted);
     2.9  
    2.10      free(alex_id3->fpr);
    2.11      alex_id3->fpr = strdup(pubkey3);
    2.12      status = get_trust(session, alex_id3);
    2.13 -    ASSERT_EQ(alex_id->comm_type , PEP_ct_mistrusted);
    2.14 +    ASSERT_EQ(alex_id3->comm_type , PEP_ct_mistrusted);
    2.15  
    2.16      bool revoked = false;
    2.17      status = key_revoked(session, pubkey1, &revoked);
    2.18 @@ -1021,6 +1021,228 @@
    2.19      free_identity(alex_id3);
    2.20  }
    2.21  
    2.22 +TEST_F(KeyResetMessageTest, check_reset_all_own_grouped) {
    2.23 +    char* pubkey1 = strdup("74D79B4496E289BD8A71B70BA8E2C4530019697D");
    2.24 +    char* pubkey2 = strdup("2E21325D202A44BFD9C607FCF095B202503B14D8");
    2.25 +    char* pubkey3 = strdup("3C1E713D8519D7F907E3142D179EAA24A216E95A");
    2.26 +
    2.27 +    pEp_identity* alex_id = new_identity("pep.test.alexander@darthmama.org",
    2.28 +                                        NULL,
    2.29 +                                        "AlexID",
    2.30 +                                        "Alexander Braithwaite");
    2.31 +
    2.32 +    pEp_identity* alex_id2 = new_identity("pep.test.alexander6@darthmama.org",
    2.33 +                                          NULL,
    2.34 +                                          "AlexID",
    2.35 +                                          "Alexander Braithwaite");
    2.36 +
    2.37 +    pEp_identity* alex_id3 = new_identity("pep.test.alexander6a@darthmama.org",
    2.38 +                                          NULL,
    2.39 +                                          "AlexID",
    2.40 +                                          "Alexander Braithwaite");
    2.41 +
    2.42 +
    2.43 +    PEP_STATUS status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0x0019697D_pub.asc");
    2.44 +    status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0x503B14D8_pub.asc");
    2.45 +    status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0xA216E95A_pub.asc");
    2.46 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0x0019697D_priv.asc");
    2.47 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0x503B14D8_priv.asc");
    2.48 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0xA216E95A_priv.asc");
    2.49 +
    2.50 +    alex_id->me = true;
    2.51 +    status = set_own_key(session, alex_id, pubkey1);
    2.52 +    ASSERT_EQ(status, PEP_STATUS_OK);
    2.53 +    status = set_identity_flags(session, alex_id, alex_id->flags | PEP_idf_devicegroup);
    2.54 +    ASSERT_EQ(status , PEP_STATUS_OK);
    2.55 +
    2.56 +    alex_id2->me = true;
    2.57 +    status = set_own_key(session, alex_id2, pubkey2);
    2.58 +    ASSERT_EQ(status, PEP_STATUS_OK);
    2.59 +    status = set_identity_flags(session, alex_id2, alex_id2->flags | PEP_idf_not_for_sync);
    2.60 +    ASSERT_EQ(status , PEP_STATUS_OK);
    2.61 +
    2.62 +    alex_id3->me = true;
    2.63 +    status = set_own_key(session, alex_id3, pubkey3);
    2.64 +    ASSERT_EQ(status, PEP_STATUS_OK);
    2.65 +    status = set_identity_flags(session, alex_id3, alex_id3->flags | PEP_idf_devicegroup);
    2.66 +    ASSERT_EQ(status , PEP_STATUS_OK);
    2.67 +
    2.68 +    status = myself(session, alex_id);
    2.69 +    ASSERT_EQ(status, PEP_STATUS_OK);
    2.70 +    ASSERT_STREQ(pubkey1, alex_id->fpr);
    2.71 +
    2.72 +    status = myself(session, alex_id2);
    2.73 +    ASSERT_EQ(status, PEP_STATUS_OK);
    2.74 +    ASSERT_STREQ(pubkey2, alex_id2->fpr);
    2.75 +
    2.76 +    status = myself(session, alex_id3);
    2.77 +    ASSERT_EQ(status, PEP_STATUS_OK);
    2.78 +    ASSERT_STREQ(pubkey3, alex_id3->fpr);
    2.79 +
    2.80 +    status = key_reset_own_grouped_keys(session);
    2.81 +
    2.82 +    free(alex_id->fpr);
    2.83 +    alex_id->fpr = strdup(pubkey1);
    2.84 +    status = get_trust(session, alex_id);
    2.85 +    ASSERT_EQ(alex_id->comm_type , PEP_ct_mistrusted);
    2.86 +
    2.87 +    free(alex_id2->fpr);
    2.88 +    alex_id2->fpr = strdup(pubkey2);
    2.89 +    status = get_trust(session, alex_id2);
    2.90 +    ASSERT_EQ(alex_id2->comm_type , PEP_ct_pEp);
    2.91 +
    2.92 +    free(alex_id3->fpr);
    2.93 +    alex_id3->fpr = strdup(pubkey3);
    2.94 +    status = get_trust(session, alex_id3);
    2.95 +    ASSERT_EQ(alex_id3->comm_type , PEP_ct_mistrusted);
    2.96 +
    2.97 +    bool revoked = false;
    2.98 +    status = key_revoked(session, pubkey1, &revoked);
    2.99 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.100 +    ASSERT_TRUE(revoked);
   2.101 +
   2.102 +    revoked = false;
   2.103 +    status = key_revoked(session, pubkey2, &revoked);
   2.104 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.105 +    ASSERT_FALSE(revoked);
   2.106 +
   2.107 +    revoked = false;
   2.108 +    status = key_revoked(session, pubkey3, &revoked);
   2.109 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.110 +    ASSERT_TRUE(revoked);
   2.111 +
   2.112 +    status = myself(session, alex_id);
   2.113 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.114 +    ASSERT_STRNE(pubkey1, alex_id->fpr);
   2.115 +
   2.116 +    status = myself(session, alex_id2);
   2.117 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.118 +    ASSERT_STREQ(pubkey2, alex_id2->fpr);
   2.119 +
   2.120 +    status = myself(session, alex_id3);
   2.121 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.122 +    ASSERT_STRNE(pubkey3, alex_id3->fpr);
   2.123 +
   2.124 +    ASSERT_EQ(m_queue.size(),2);
   2.125 +    if (false) {
   2.126 +        ofstream outfile;
   2.127 +        int i = 0;
   2.128 +        for (vector<message*>::iterator it = m_queue.begin(); it != m_queue.end(); it++, i++) {
   2.129 +            message* curr_sent_msg = *it;        
   2.130 +            string fname = string("test_mails/check_reset_all_own_grouped") + to_string(i) + ".eml";
   2.131 +            outfile.open(fname);
   2.132 +            char* msg_txt = NULL;
   2.133 +            mime_encode_message(curr_sent_msg, false, &msg_txt);
   2.134 +            outfile << msg_txt;
   2.135 +            outfile.close();        
   2.136 +        }
   2.137 +        cout <<  "    // For " << alex_id->address << endl;
   2.138 +        cout <<  "    const char* replkey1 = \"" << alex_id->fpr << "\";" << endl;    
   2.139 +        cout <<  "    // For " << alex_id3->address << endl;        
   2.140 +        cout <<  "    const char* replkey3 = \"" << alex_id3->fpr << "\";" << endl;        
   2.141 +    }    
   2.142 +
   2.143 +    free_identity(alex_id);
   2.144 +    free_identity(alex_id2);
   2.145 +    free_identity(alex_id3);
   2.146 +}
   2.147 +
   2.148 +TEST_F(KeyResetMessageTest, check_reset_all_own_grouped_recv) {
   2.149 +    PEP_STATUS status = PEP_STATUS_OK;
   2.150 +    char* pubkey1 = strdup("74D79B4496E289BD8A71B70BA8E2C4530019697D");
   2.151 +    char* pubkey2 = strdup("2E21325D202A44BFD9C607FCF095B202503B14D8");
   2.152 +    char* pubkey3 = strdup("3C1E713D8519D7F907E3142D179EAA24A216E95A");
   2.153 +
   2.154 +    // For pep.test.alexander@darthmama.org
   2.155 +    const char* replkey1 = "80C297DEA68620511456DEE3AA0383505C87139D";
   2.156 +    // For pep.test.alexander6a@darthmama.org
   2.157 +    const char* replkey3 = "1F541C9A0EB643403035AC820A13A27FBC1A77EC";
   2.158 +    
   2.159 +    pEp_identity* alex_id = new_identity("pep.test.alexander@darthmama.org",
   2.160 +                                        NULL,
   2.161 +                                        "AlexID",
   2.162 +                                        "Alexander Braithwaite");
   2.163 +
   2.164 +    pEp_identity* alex_id2 = new_identity("pep.test.alexander6@darthmama.org",
   2.165 +                                          NULL,
   2.166 +                                          "AlexID",
   2.167 +                                          "Alexander Braithwaite");
   2.168 +
   2.169 +    pEp_identity* alex_id3 = new_identity("pep.test.alexander6a@darthmama.org",
   2.170 +                                          NULL,
   2.171 +                                          "AlexID",
   2.172 +                                          "Alexander Braithwaite");
   2.173 +
   2.174 +
   2.175 +    status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0x0019697D_pub.asc");
   2.176 +    status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0x503B14D8_pub.asc");
   2.177 +    status = read_file_and_import_key(session, "test_keys/pub/pep.test.alexander6-0xA216E95A_pub.asc");
   2.178 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0x0019697D_priv.asc");
   2.179 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0x503B14D8_priv.asc");
   2.180 +    status = read_file_and_import_key(session, "test_keys/priv/pep.test.alexander6-0xA216E95A_priv.asc");
   2.181 +
   2.182 +    alex_id->me = true;
   2.183 +    status = set_own_key(session, alex_id, pubkey1);
   2.184 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.185 +    status = set_identity_flags(session, alex_id, alex_id->flags | PEP_idf_devicegroup);
   2.186 +    ASSERT_EQ(status , PEP_STATUS_OK);
   2.187 +
   2.188 +    alex_id2->me = true;
   2.189 +    status = set_own_key(session, alex_id2, pubkey2);
   2.190 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.191 +    status = set_identity_flags(session, alex_id2, alex_id2->flags | PEP_idf_devicegroup);
   2.192 +    ASSERT_EQ(status , PEP_STATUS_OK);
   2.193 +
   2.194 +    alex_id3->me = true;
   2.195 +    status = set_own_key(session, alex_id3, pubkey3);
   2.196 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.197 +    status = set_identity_flags(session, alex_id3, alex_id3->flags | PEP_idf_devicegroup);
   2.198 +    ASSERT_EQ(status , PEP_STATUS_OK);
   2.199 +
   2.200 +    status = myself(session, alex_id);
   2.201 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.202 +    ASSERT_STREQ(pubkey1, alex_id->fpr);
   2.203 +
   2.204 +    status = myself(session, alex_id2);
   2.205 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.206 +    ASSERT_STREQ(pubkey2, alex_id2->fpr);
   2.207 +
   2.208 +    status = myself(session, alex_id3);
   2.209 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.210 +    ASSERT_STREQ(pubkey3, alex_id3->fpr);
   2.211 +
   2.212 +    const int num_msgs = 2;
   2.213 +    for (int i = 0; i < num_msgs; i++) {
   2.214 +        // receive reset messages
   2.215 +        message* dec_msg = NULL;
   2.216 +        stringlist_t* keylist = NULL;
   2.217 +        PEP_rating rating;
   2.218 +        PEP_decrypt_flags_t flags = 0;
   2.219 +
   2.220 +        string fname = string("test_mails/check_reset_all_own_grouped") + to_string(i) + ".eml";
   2.221 +        string mailstr = slurp(fname.c_str());
   2.222 +        message* new_msg = NULL;
   2.223 +        status = mime_decode_message(mailstr.c_str(), mailstr.size(), &new_msg);
   2.224 +        ASSERT_NE(new_msg, nullptr);
   2.225 +        ASSERT_EQ(status, PEP_STATUS_OK);
   2.226 +
   2.227 +        status = decrypt_message(session, new_msg, &dec_msg, &keylist, &rating, &flags);
   2.228 +        ASSERT_EQ(status, PEP_STATUS_OK);        
   2.229 +    }
   2.230 +
   2.231 +    status = myself(session, alex_id);
   2.232 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.233 +    ASSERT_STREQ(replkey1, alex_id->fpr);
   2.234 +
   2.235 +    status = myself(session, alex_id2);
   2.236 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.237 +    ASSERT_STREQ(pubkey2, alex_id2->fpr);
   2.238 +
   2.239 +    status = myself(session, alex_id3);
   2.240 +    ASSERT_EQ(status, PEP_STATUS_OK);
   2.241 +    ASSERT_STREQ(replkey3, alex_id3->fpr);
   2.242 +}
   2.243 +
   2.244  TEST_F(KeyResetMessageTest, check_reset_grouped_own_multiple_keys_multiple_idents_reset_all_recv) {
   2.245      PEP_STATUS status = PEP_STATUS_OK;
   2.246      char* pubkey1 = strdup("74D79B4496E289BD8A71B70BA8E2C4530019697D");
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/test/test_mails/check_reset_all_own_grouped0.eml	Fri Jan 17 11:19:47 2020 +0100
     3.3 @@ -0,0 +1,283 @@
     3.4 +Message-ID: <pEp.Q48XT1.1BUI5I13C18JW.195EC954-5BB4-469F-8BE2-27F43DFD8F49@darthmama.org>
     3.5 +From: Alexander Braithwaite <pep.test.alexander6a@darthmama.org>
     3.6 +To: Alexander Braithwaite <pep.test.alexander6a@darthmama.org>
     3.7 +Subject: =?utf-8?Q?p=E2=89=A1p?=
     3.8 +X-pEp-Version: 2.1
     3.9 +MIME-Version: 1.0
    3.10 +Content-Type: multipart/encrypted; boundary="515f007c5bd062c2122008544db127f8"; 
    3.11 + protocol="application/pgp-encrypted"
    3.12 +
    3.13 +--515f007c5bd062c2122008544db127f8
    3.14 +Content-Type: application/pgp-encrypted
    3.15 +
    3.16 +Version: 1
    3.17 +--515f007c5bd062c2122008544db127f8
    3.18 +Content-Type: application/octet-stream
    3.19 +Content-Transfer-Encoding: 7bit
    3.20 +Content-Disposition: inline; filename="msg.asc"
    3.21 +
    3.22 +-----BEGIN PGP MESSAGE-----
    3.23 +
    3.24 +wcDMA9EjQt8gdmG+AQv+Ls37z+iTW5DqxMaQziJ9U3FvWyKVstj7ThG/oElkWvdD
    3.25 +YIcfJbjf/PUCl6omvh4SJV1zrW7bgZfUwAnPLcn5g0yHQLMJgYB3q5EKW719GpjP
    3.26 +S5BXGFRLjMTmGPnio1/HirfIkxvBLxF2s+hPmFe+SNbEtEk+skOT6Wee5yjcwZFe
    3.27 +aN2qRUYbRhR4Unfwc1eC+CXcgqRefIKx8jLZDrnfAFuLTUXRH32/K7PyFWNsureS
    3.28 +o7H1+elRD5alGMPYSEBPTC//TeB2h/MLXrLHpM6v3Ym5GMgBQ48BUdc+zVitJOWI
    3.29 +C/OiiGJeiCnB8TwZeXtoHPY7aAVJo3Q0md55vBuD+rJ2U8+b5CpmurwLvtATi6ZI
    3.30 +orJ63vG9gA693JbuWDrI/Cqzmr9jwG9doxiquqTVUSsfC9+e4w8AIUUOIv7OhzL7
    3.31 +f/wb95fg5hl36GSH673bcd2wYjG3bbRbfHmmElfySTrgEjPR2Pg4xQTwZmSDusUd
    3.32 +jT/Fw+/vpinMtOXTCVMVwcDMA9EjQt8gdmG+AQv/b/QVdeeYSJv4sUA/aqe7l3of
    3.33 +3tPs5BCDMaO/hHYmXbXKij61zDDYz1xxKnIWDGPQ0GVf/Vkn1Ku2MPmrsFdUyc8n
    3.34 +W1yvMd/Q5NRThOb0SswkOb8xW35n1HEO4qrTZWhRnsiJEWyNbur4KO24j1MsAkut
    3.35 +l3AfOZA71dIsOetPZQF/BMCARg5ZnBuEsMZz4BUqQfTEK4qE/PpuuGwausuWWLK0
    3.36 +qrmdnbbbMuQFTLuK2FlZJ+5CDx/L+pBo5xnAV5g0OHzQNxD3Xv0Yjlunij2ZCCfr
    3.37 +Oo/Zi/wdhlfUeCv/6voWCRzqh0Yb85LR60aXg/QVoB6AO5RNq9D53vl30+fmVZUh
    3.38 +kyy2vUt+f61ocVf/Xc2BNWjzdMVpQWxGKN/ZM4Zq5oHBEKdMLOm/T9bXwoZPiVaV
    3.39 +/SIhBWBALAabOc2Eqg45s1zuNv8Eb823UdeEeESw5bpmUFb7xoHlg4OFjMTnhdwQ
    3.40 +kONwVeKZK4GjasBmUn0kiH69SWWKLUBg35V7XRju0v8AAC1CAU2ds3yoC2QcVX40
    3.41 +WzBF7j3tzq6cqAlTGUl0764qhwSJe9gK/W9RZLG6rrgC43lBwlBlIDJWsrR9g0kb
    3.42 +f7BWEUpY9W0i6EtZU32kcYbgiPjg5ZFPPjAaD0uYs4Z/ld9xQ6b1CHfkOz82naWM
    3.43 +bA2uB0NNe4LZoOBhnSGYg19k7fwUfVnzrIIXn7deuOKZGaunCo86WPcI1yG/Si2u
    3.44 +P0D8MySVJ572puDR8XiEtLsChvVEJWaasRU1oUJdRU8A+B7bZvWe1Dy82Of4pMMH
    3.45 +FT9PWqvjVkrOLYlu906dh9/SZHxIKX1I8mHwS2MAO1p/tDUMuPJpxlGLgk1FxO3p
    3.46 +1ercz2N8wD0Mq4W2Yu6z6RgKSyL4G7nLu0A218B+TRlhufIfkFJkU4FX1+wB93UP
    3.47 +z8Qt+hyrrUom40ymMRkgG8ZuWJ7o4598VOv7ZjyLAzahjm3dG/jh2puIfC07Bcek
    3.48 +tM4P+yV7k7WSq+x7KNQ1Fk9kZkm52qBdhHzBDf2T574nnCYQcP3pExi6VGB+D/xx
    3.49 +zoMZz/LL59wzYUGiJqLh3rWXVqGRfg9jEifrfRxwZ/IjModA1GaBmH0XSBDeYDZL
    3.50 +dyaVZ2ianxecQuezeCSBbzNFy9V0A7oIvx1/7KIk2dPilqs1wS9mazBe9rKKtMNS
    3.51 +vND1WzqHP8NPpq7X3KK6D9jiH+KvVXV0219CwvjPwxUM7TR8ximR5tg51OTXLgnt
    3.52 +2YMQPQdwIvDMBbe/S6s79TFPEAzk1ndfEiAnKObOzzNmB0GIa2w6zjgWqcAd5Vh2
    3.53 +BFKKzJs/fOnsB8lDjfD59TT2/Wn+tEpE+9oAvKsLs38U+8Fnsmyvme1CHGB1S9Qk
    3.54 +UQDXwR6Gdeorg/9qB81P+DdN9n3UYgCdsxDOovO3dzljfmcx/J4QHzz+AX6iBidS
    3.55 +1SG/kczKRTPzBFdmYdo3D5ey3Gp2EzAk2+Z759zA0P43F7PPZiGBkeRslh43UZrF
    3.56 +ROFWu6nJER0w4wY2dCVR949iekvQ7DYTqz/cupVu/Ra9s3PCdE8K73OmJJ81YX0W
    3.57 +FrppZ+BhMSmb88TUAoBSgJU0MethkrFw4hMTwJbOkkclNXjWUP07Un2eQzgjdxdZ
    3.58 +9uxjWpM/8FBfRo2gfkQi0PhM2/EdfhywfdrLusidCGw+jRqUQRaTG5/8Y+4Q8geJ
    3.59 ++DCPDvD9eh+7tWfF5DGhwyJVqyoSJkAasZ7/IwupQoVAU61NVnQPLsek625BDdkv
    3.60 +yRP4GHStV8Iq5f9Ws5rcfercznE0L+WoMW7y8w2XOLj78OmZbC8E9ugqooD7Ie45
    3.61 +rN2G1zldRuZEn6+jME8Nl4ZlBSP+tf8reKA6KS9qs6ynme9bKOUmW4gf2d5PB2xA
    3.62 +PvQy7TDqIYGrFl6b2ytRtjbl12FK6ZODCsOvYsV5LeX1qeFgVEobkkXy3SR/r1o5
    3.63 +j0Sbq5wtEd02AxtwkBvFP8kVqqdhIartftj6wrbtZi9ZFi3xH4JSZ5B9Nz4E0YsK
    3.64 +5tD66KO1wpVeeaS6A1zdNQ5/EvTdxS7qTlK5h4XKojfhpFTk1+RXANG0kjSwnxp3
    3.65 +gaxnfDwmtQHtK8DjxpNgAITZnWqf6QuJbNEdHEW7v91sCsS8BtBK3LJTofHvJM3q
    3.66 +aUcMiw/sebK8oK5dVY0A0D4OVyckI1Vz42JjZLiowj93OkijWSrBVfZKP0wun8ZM
    3.67 +nlndJ/hcXQJkTKZDWqW+9JPK4dxabqhxuieMb/Vr2WBRZ7DBxW/emt13WwxoYUNY
    3.68 +kfFL+VWuCTYsLCV8vf6Z5ucCOex150RCl5353S8EnLrcFLQF4AMRniONtzqcacGS
    3.69 +03hd8sqALVV5oWx3JZ7AOVdsYmFeqOObU0pAdp/bxoKKLViYTazMQjRKyX/l7vpb
    3.70 +b1PHhnS+gme3o2gcvhJjCRiycQFjcolcSy9kULAmZjSmI7aRRNlRGjcVoY8Y6iI6
    3.71 +DCF1euqu6raNpQLuNOxh77yJ6Gc9E0Bizgqs4IpFgXMdlfuSdCOwCln3SIhxuM7+
    3.72 +K0Wow2YXc6/BiqIYN57BpDPNH5wKaWIgKJjy0GeygDBoCMB65kn/6zL0eLQzHzU0
    3.73 +NDs0c7XeXmFtgqzxe5hZs45R4I34SbCE3utrCo+lHuMofD91/YIeealzKT0yuy9p
    3.74 +Bbg3s0ZbjzeeMpRb1+1P/BGLZkB0oSbY0OJpXqY2Sb/tneRJSm2O6nBEsiZGJSFj
    3.75 +ZtJgX9NVtgrS7GVSql7KMRjILmdO2hRMOEYZRMEk0sTmdJta+2SYoMn1k/tL4MVe
    3.76 +NG0708nCdtHEiWcFR44fjTW9A8CWpTMbTCGAKs5AnmZ8Wz9StDsBxjskKDw1ixev
    3.77 +3WLYmSBlQezfKbrl5R9PcK+J74+xu4U5dbWmTA1EKr7NTzq3bS6LuscZ2mW6RBRD
    3.78 +nB8wTeDxWZ+5fXK/LjiHT4gCoRE/3YqlCniopgK31/aiGReI0E1FI1krnm/JF0UT
    3.79 +4MwiwEL9hXS+OgY7exoXRgCzY7kZiD/0AWoOa0KLltQZVf+7Pv7bGwr8la4w4Qpl
    3.80 +6rN4UiMSP1eUCNjLQ/tOz3Chjcp8xkbrisprZBS63X4jI0eA8dcwSwuSI4FSe5bq
    3.81 +sNhRCqDhfqjkbJ2CMAWSX+dU4/aOuonQynbtNsumbyf0Zowb28BuSfpjF0NQ89pt
    3.82 +WWif6BXzx+DOrl7gEzEdCelLS9iMQIzBkdAxwP8jvOaLsSMnHy8eNhoa5MQUXVB9
    3.83 +f4eQG5rUKVUy1T3aWlfrUFhgE5JIpr4a2BCc7f2AgJg/4GuXISOYgWrowx/4uIGL
    3.84 +I8biZVwBy2ofEasTgBZVoVxwK33FfPo7MKShQdJx9C2Cc2oVgvzSnEYQO59qHV2G
    3.85 +rCCr4Ym9C+JdcLVOLIlfH1F2Lx4iEv4n+7ckzBp5h0p4bBi0DFmx7zHkGDMOYIBz
    3.86 +2LCxIsQJYtBArARYgYgf0oO5ESKDEOq9W/tcQFWDk2+3KogAFeFIkHE9om+YbHgE
    3.87 +DfbNcjIXHmEvIsv86Spo1e45MkPAx50Ha4ymujfG2GqKEumZgec3OXFl0jZIvAwv
    3.88 +xh3kW5j2b+8W0JG5sl6MeYHdEl8rX2idW/KZi9k64Y5JLfF5iBQZ0VR8d5ElVH00
    3.89 +THe1sSIfZSOPUoqa1/bvOaWReyLPdwg5jObqEBZbmoyKy7fk51xDI/fU5VN34j9V
    3.90 +jntgvLRG2J+cFzZVDjxBU0aw9/2rjAiRmJze+dvlcg3nFgSeXi3Qx/9iiwBL2/xW
    3.91 +QkCB6noQINWFNPODgezdvfw+5/WVEPOugGJ/m4ouLrQyKdp05tevCPFKB7AsbbCA
    3.92 +WYpmAfmmiqsYiF4fBLKPPPk0bMJojPrtYMfIFKacqRG862+nxSdNW+5APjjyipJL
    3.93 +sT+VAnpkpWQOL5pN+cuS/bvoddn/T6c+Cs7EPMQbLdYJjFhiwEAOdGj7rh5RB8Fp
    3.94 +bcWh+wQihk10pQ+iJDprS7YpO2m6mZ9rXQXChS0xReFIQVbFOik5y+F1y9ICU8Qw
    3.95 +QSPMlkiRmE3ywYRtD+2qRooDjD6OV5GOn9Z6zVxsGW/vrjmwafOTK+CWtpzIgQYz
    3.96 +cPtniqIhDf/t6E007RU75VKuNJj6HrveJxftj35ydeuFElDn9/n54yNDKh+d3NO6
    3.97 +PoNY5pYoHHqCKo6tVFy5cS4NxkuIZsJAra0SB0QQjX74xO1P8jUjv1osBgEWavcI
    3.98 +r1y5o38kFlX+xwXF6DqQSNh5vo1D8TuCXsWFBbZQh+TscbVuci1Lnt+L7rJLwRbD
    3.99 +NL8bD+i9RZUI9ePuR0vZKnGZU0HHTN6LHaGCTP7MZWzMNj3Ndif5ZgmN6a4OLKXf
   3.100 +moag/+ne9UiHdfJGEtEqvORpStQaxKrFxkxX9HOBUNE24mngheSKBWHvolEybSSi
   3.101 +hbvSVzPHEo9KaaHp9cbDy4xGDPpbZ3wzPJhYVlJu4DLy5Dm1nWkV+tmpN+qOUziW
   3.102 +tCv777/C0/VDc+xJ0L8Qia/Wvn0WXNBwmrTi5psixssLuuamGQxGT6F4/T6xL4Zk
   3.103 +Ihk9F/smd9Q9Ng2dDNTSmvLeZunMhjOXOzSoi09qlw4kPdSL5h0X6rmAablQgiIT
   3.104 +J80SVD/0GyMgBx084D60e9dfNo7ZG4m665/VngG0BL0wfoLHkBstFHT+G0LSp293
   3.105 +T6bjrLMTHp134uq2KSGXdyClfHnTg90Cx7yblrxQwTlcVn2H/3SyRrQWgvYyqatu
   3.106 +2++o2gJbgVeB//M13p23nvrBE39SQg5dW1S0WT/osjXsHegNKaEIZeQhcBjcp/Qu
   3.107 ++z5vsSybHKwzHegX97U6XbSDwld9BSI2SC3pdwtKHXviksma/JxP98FxevtWyUtV
   3.108 +K4srtGi/RUkDKu6lxSvTl2SfkwtsMffGwSqPbiVDC5rJn1vx7ZG+pDuWuzjAI4rP
   3.109 +tu3lpDjSzV0O5BBvKvQKdiDdd06SIqXxgmQBmq+n4JahyiqRDYZaQW6exvnwjCpQ
   3.110 +r/3DsN2RUQMFNTJ5dscgMLLZ/MUoLzx7fkNXdpHRLTTWlng3/nNUkMLHOGKczdP7
   3.111 +hoZad9DEJYOrUEY0IecC+pe9ktDuUxIJP2mrtbSo1qRTwcdCLCpu4I0tH4J58dhk
   3.112 +Ag4eT56l3Y7R7PF6ElA91/q0vIzAGGLO00mwt8gykX2vvixv76fZ+Oo25H2FXpIH
   3.113 +G1+iWtadMJfyEIY1MLfjII/A60YrnVQhvvvuIG+adrH8jAEHdxh1iS1RP+qpyISQ
   3.114 +9xYdGeCljHLTyyZTIZZtmYN6zneDm3By7W2YVR+FTf+4fmkwrTI1HliS9e8Njh87
   3.115 +cETB+9xxEmCSHptxVxc5N8hf0ZSfXx57qGSgSlG5pDvo7bql9rlO4zt+H1G4wBJI
   3.116 +ETXpNLKkuf+9FdwMEOMZCphgosG8ylmv07FecaLPH/VaNBs2oK5gTWAtvbukaKb2
   3.117 +hxIwBJeU20zbiisLv7dgjXseAVCeDKBM1L0qYs4ya7BOPZLBxj0lK0u8Pn2itXqL
   3.118 +vcXizpj97i4Ck0fj0kT+lD6ZvM1hvJrVlfJCPzo6uGEXLATvdjioxQqR8+paWIqx
   3.119 +goIZkS9mxXnCBFI81AFyet4y4YNeC7JLogOtBxPFz1EntR/5DzP3+b1n14miElYi
   3.120 +oZX2r7NomNKyY1AnVDHVGxuWSW2JyMPMc2F4dQniROvd+j6illfkA6LaXnf/dYU3
   3.121 +WSCrcTdAlxzxJ7a5dGEDhRTTYL4b4XlU8wzP9gDqFFfOY+nW1jXQOGs77H6RJyoj
   3.122 +hmQb8gzxbJ1rhfYt8bXIkTvzinZbDzHFdEzJqZDmXuFD3sMvLUZwL9KBY1z3IQy7
   3.123 +aZliEQq3OKujCn8IP/FqgLKvOhi3CMUvRWoapuObkzORWFUa5hUlUsnIG9oQs5gh
   3.124 +Ue4myP1vQ0mgGssSzcGGIDVqPXuANewR5jlK1M3knRpxnts1MLI7K1ITQzUuG6Cw
   3.125 +wRdhNPVtSFguH87nKwUBNDuBosIRSo00T69pmsnItMSsFJMzXhUPpWMB+VKIn1Lj
   3.126 +Q6iPNiR+5Nqd9xRiPTeSASXtjTubtT4usSw7BKGEFMtKhxsVN7nOBMXSOH3Pb7BU
   3.127 +xMMWK2RMDq2CdrhEDB7Ca2/lollJzQb+W+A0HLr/OX08Ndzec2ta+O+Z/OHx4Djv
   3.128 +ePl0myWhEcIT1QxZHXUYgsT5TzybEiV1hsiJ4+CLLsS+VdyktKbwo5fU5ngY/0oJ
   3.129 +5MAjV2r9YhXiyiJyekhqGj0MG5SdENpcvJqWgfnXDJYqcCD++/UocryCUM5HjZJR
   3.130 +3jp21cj3DtqYbdvf9WI5qECe0e2IxyrtN8hjU+FuRkDr/SkhQAkCGOsUi9Y+95Nf
   3.131 +hyTEIcuWcDfw1LrAJJJ3ChDGzJXOOquu4FJe1G/S1n4PZiTN2vaswn4Vne4QlSgW
   3.132 +v9ZHSPsEd8yxGrxhRM+k2q5eDQT9yJeku0EnaorbdIop/MdnP8NP6lDCESlFy66B
   3.133 +HMDLtw/pqeQYIvzqwIzSpL6xrCBWxL7E5zssyVFungNAKsKkY49H3NnvgzyKEXMU
   3.134 +K4BOmhkIZ1RjT+kGxLO1ZdCfXTds5q46uRZuMOcfypfYQijlzO28xHimBvJbjaLI
   3.135 +XxRaDzy5lpKwyDLD2mcG/pULmFExDoFm5nNRMbC3t51aAuIY8WulU1Imcn7MCDVN
   3.136 +UEW+TlCmI02ya8OfYqGu/S1gET3eWjEYUvAHEVTeul+77Qvyp7RknIa3+iolqFfh
   3.137 +Pf0e+8xIInpyEGtF+J/bhcL38DUxDJB0xXG8uLUYLJPAB/pxjc78cmqANy2m3R7v
   3.138 +7471W9WkauMHi/oocuiMUdiWtrG7PwDcaQ0aBfMj/b4ZRPLa8YWDeICZXN7RcZ4J
   3.139 +H3SH5F1j+ckH4Qbf5LtCywgXdNRg5aiR6Tnb7Kp8SkR+RgR6veTdP4VbmU534ViU
   3.140 +Xrc3iEKUTbXN3CWUOjIqfvnCZNyap2vlIvF7vpc2AbPx9XX6Wcbv6Nz6b45NDT4y
   3.141 +rUobXcHcqeh2DkQXLpkRoWaUrunaV1897HIUhJxrZxRLBZYdeMPVhoaGBju+wBKA
   3.142 +SdWgAAIdBZFeErNh9yqHuwb7mIYp3f27Y2MBR/iKuBYLrufXuDpNElWniw3YcPtt
   3.143 +cYjA/T8bQ49267xf3nBQMa4JZM/aZkQUq9V4fYg2UJDJojyvG1CiIdUMBC4RFK3y
   3.144 +n8hzsIYqbHRI9YuB5ETWyt2dSR9VOUJboKeGmteBne+4R7yrd7DK2HgiffLsTIUd
   3.145 +emtxMV0apH2JTsvWyary8bD1b306vSLDV5O7y7tk3oXKNGftbYGHUD9SMS/cLpg9
   3.146 ++tobI4Sr/kaTyBEo1JtQx+CdDjTf7KnX4xBZmDxkNkLN0UK1T+H9pmaw2ryVZkHL
   3.147 +xrRfXOziJd9m28TPBqWJBnSRiwqJdbVNKGVGxW99AbnS78fm1pK0mb5ZegqYaIOE
   3.148 +Dix8q9Hi7Cljuq5aVS3N3DgRpDd0E48cn4cBU1faBKRrRZsz1+XWZbEfcOHpKzXT
   3.149 +upqBpp4AvK6hF/2TZPoFtFuvZBWSPjS6L8kzn7gOs3RQYnEy3MkMPjDqrkwKZbtE
   3.150 +yo5rbqD/ukE5MSHGVIntESLk88XsPhGfdBgEVVlGvvLTHQcQjZecR4xmpaEXdSLo
   3.151 +e7E+UgTZrrwfLQsNZqBkQcYR98CwsoXKftdxqrQWmFjb95e4e9Jj+IF6CLGE2Yg7
   3.152 +yoc/TgUJ/HkXTybgkiwm+4Oe8IQzcLhpzr6nBCrFX96aCvMZgTCExyUaGrxd2rhH
   3.153 +5rxkOz2ifLuptEzU0AehTE6vniv4Kdlo4kB+5gDvGSJzNswCE85WJTiztvhpZM9y
   3.154 +WhCWk47iIWcmbUKiSH8jBfp1YcCRxCSv8xFXwE7KJuVh+Qg+NPyMiSZPC8ZrYxm6
   3.155 +QV6OuGn4oqxBIWkHRnSiAwU3dHsGdHLPFr5+7gvP2tlEoUBfQpUG0QnPEZlKVm3H
   3.156 +mPAlFFHMzfgeqszITdhu1cnIsxvUM3V3AYff3pQRN0/wRdY+jRp5RDC/Efxt4xKW
   3.157 +zg1aEHehXojduGD+Y030NzzOd8g2B47mTEvjLKBjP8U5sK/NmRcVG8okFt4Gy69t
   3.158 +rWjbSVlpDp8GuQ9I40GraSA8NKLKbrXsRiNfsgyXoBXrFravsR9IsrxlOb98ZNx6
   3.159 +uOPWxTeo2UGbdIAH4Xxa3xjDk5jNDYHIN7yrzzFKaUptyrL8JNOWzX288GIVKZCl
   3.160 +VOUt9ZtGGfgaZytfMlErJX3vTJBRPXHFAK42nf4pl9Zji4RYkU7F5or71guQllUg
   3.161 +lBObcLkJ7EQ6IoMzNT552Gsyn4Lee/27QkJMc1F+zOKs63q5FLVRDbQvgXi6OJC9
   3.162 +nlX+DBqLGRcO2DNg/zLtLkhXkT9h/dhtWVa5W3DTyewJkqIe1aFFZzQqDAd8JFlz
   3.163 +SQ8DkgeZhxBOMET9CwIy6LfvdsE4DPFMWK7WgEPAQN5/BVnoaXCHaHraPhWgjfiF
   3.164 +/PJnEB5u/brgpW7bU3TmFmpjfVfTRVT0RRHyhLeCxAXgA/1PJe3TJbyjt5M8Vwqd
   3.165 +jcn4TumwqqlUi6BXtAxcUpXD8IlJBVuQ9ckJFZd7wMM66Ahw0fx3mJibLAQlGT+F
   3.166 +i+QKKh7qHDM9ZLkVtxJWdNwlMli++xR5jazOdxReewf+q3O7J80/Q+seEW4SrNqI
   3.167 +bs3jduSTEOyZP36D1nqlxQum2jsozDHpyGYe7AuBev5ANtw2VL5D6xXSz2v40J8A
   3.168 +ZsQTpnfNIwdeWECzwqsc/LV4FInlttDjvgOXRRtpgL8e3r5t+KwoBaPSoqFVJzgj
   3.169 +qPNB8jdIY9FFmIMEjqSCZ1igYIF/w7wkZpDQLS7QJUBKrhkQXbyYDdax22YWwdkG
   3.170 +lLYY9OLuhIww8qqjfGYDjkZZKuLIFKsKsDSmWg9T9UF0n5xVC6jjCoLve8dINpLL
   3.171 +VLwHnnyipygLDvGcoFvNUdNwJ6GBvn52dxCVPDGhU+U9w0h3gDa0kPICNXLrEwXn
   3.172 +5QAJJxQllWcOSa9NJwYrN6bC6PVkZFR+X912pMwpechzZamlqBmdasL7NUTE2ti8
   3.173 +Tkw1ZdG7icuZvf56lKh5fK6pPmlNwdGcjZ1/sFP62NoQ33oXl//slVJXJVWNJEZ/
   3.174 +185u001qqjRwUHt1n50jveXUCdPLRCK4w/DD4C/aLCO87rHvUH38Pm7EtvCUMyCO
   3.175 +8HLGcw1mB/24qduJx+ZSpWFwn68W2DX5/T/2cJWOhukOMlRMAceo40u80sVpluRq
   3.176 +qizIcoGyLFd651u+6AwgcayYFP8LwMPtMoXe5IX5pPXSn1lanw5I+2QDdZvQ+u+F
   3.177 +9J4j43K+SxZl9vctWQSYu3ZdCXq1GmYIVV7euWFtsNQbPkMhaZmCjpDgAo5Iqioi
   3.178 +FX1TRl/7FRissElEKJBCOT4yIVeIKuIE1HrWnVQjTd0QCxiTDAUZpmXNeLqGeuTW
   3.179 +mABbzOw5KWYghB42HJEhG24Yxt6sy4HZrUQB8za1NT2IqAzZmcoFbEVEP6UOfUHt
   3.180 +4KL/fTJrhDg0qwJXmEmXiL9DN8VrFP4poGI6K8by4N6QLN3utdsJowqRRJQOklz9
   3.181 +h6CU9adEZ/71NRyXCn/LR9j72sNB8bb41UOgLzaIEsliDlwTJIif+14XBoqCW0WO
   3.182 +imEn+0fJh1ojRmHluBglNBFVMt0M1lX0HRKx2msMxi6aixvmWeDO7rg7+D+45p7a
   3.183 +5aTLRS8p15KvrnUQXHE1iK24ddB+HCJzE1IzlGRU05pEVpe9Zvdvy7zy1fXI0Kcr
   3.184 +3+Onm3Ez+T8w5fwiLkGiDzlCzSoEQW9Zj8KtE+4nPvHD3qay4+/fV3HGHFkIgCqc
   3.185 +Ial3XC0rYqRllVqOcbol+8XZhrB040y/qp5sLLYm4Z/9UBZ1s+VJvauPQb53r2I2
   3.186 +t8q7hytNLNKVnUtcKahbe0WbXpex2Ycw8GqPyU8PqkxJzihofhGvFI+Y6Uzo1FQ+
   3.187 +Fd1G5J434hKEiAeaYzNSFmk/4js6KFNqN5UujHpHN5TG5iP4IU5TTUxbmAZC1Y/r
   3.188 +lKth7Sv9AsZbtfLL2Y8ugbSilD/sHN4kcBTlRDoyWgssh6LJsb2vCi8WLqPfWzun
   3.189 +UGgOZbIawOaHd5kT49+iu+1xpBdIZbga3rHe2UPXrCPvAN7v20EMjQ+MT+zabooy
   3.190 +P9FtxeL4WkWWssVOO2qTg2s1AAwq13FerH8nIE7KbVERP21Hurp2TAK2zAfyTyY+
   3.191 +XyrEfw70sG88OS/0ZO2wZmi3fABZ2lCrhbuQaKHHzJXiESpc7bhwM7Wu7y/xSjIP
   3.192 +jVOwBY5bKoYtetM/Osnk/72fhi2FFf5gak+7v/eu7/g9UmtYEp3B9IBLACMfVW4x
   3.193 +Jume/OgxRz8i4hx4xgQWO10Y/JjIcY0bZr5tKBVaXjpt+sq3G/YxYZVXHd1Oh1IG
   3.194 +/rRH773203eajPhbgRYXx6Yz/LHMWYC1xGjT7P7tZI1JD8BGG2/1hGtAiXVA2E+3
   3.195 +bZBbj1G3ZdxnJpgjgOFrCorgFl+i75G9PlA5gwGdiKzt0HSFNVZ8WBBgrf5KGnmr
   3.196 +WzYvUtCjT6biyGANGAT8eUKw/MDanx2skIyecl/O749muU10p4XRe9EMYkVPR6Ny
   3.197 +S0AHydhSh1fjhz6wm94ghD16YFiYLsr9B4jW6pZ1kZz65+PmHkDfSQKuFJ978eYc
   3.198 +aSnGdEja0ZUHMzYSJxVq7qNTMxUyGAq8CYL803a0nUUlhIluWz9b+heVgItDOgao
   3.199 +fz93i2SeazBXhvtUq8lamLa61nWG8hOzbNq7+zK1xM/JBYZHrAus0MQYLzbBgj4u
   3.200 +ljbyXGKtiq3/zNHzgqZwN5aHBSLLYXwh8vfDPvDaHs0IEMYynkM7L2ALvnL9TOmr
   3.201 +sioyaPIxz5NGgacXueYjtGMJ6UiSv3JBX5tD0edz36vqys9nDc8US2a+EbUS2nEc
   3.202 +yhMvdVk5Xr/uZQGzNDhqmclHQm6WEB0fiXiozxEEW/Fj4S7ZqHatw8WTI1esLQF2
   3.203 +XhS+egmZRVEpe26qtotnf517aoGDjF2XjQgnOyuzcPxmBzOgX4GSHajUgUGacqa5
   3.204 +FvU2kX/dCB/lLvI83Z2MPBHAE2hYevfkA4XGTXicj7sYmIKgPPRbk4D5yPwz6ZAV
   3.205 +VB2CoKdeyr6pye5gm4XKJuNE3UzGf6W+FObGhz9rntPPePj3oZ+6nh6pdwN9eKO6
   3.206 +CLcWR9PNczKCGWOmucc21tqS3Y7d5UXc7aIIppFhFhtrT1qK6fKQWhxPiC93azCq
   3.207 +PnQpkfkYM2LOCHLdHZwkUJRwM7nNLSHE67t13c0dSDnw1Fr3i+8DUNOD/5lSUr/u
   3.208 +HNyro07dJK3di/KAGMVOmMw/SVTvDKAI0YWYxVGBub/gKA7mxQLqLeFkfh4gH6hw
   3.209 +ZRfkyTJelsX+LMQSb5ppNsPCTZD+X0Umgora4aft51sIAfMbOPlCbDiKuW+e9Q4B
   3.210 +ycACkbgqWVyZUsNTLFVt2FIZTOyXPXBYEClWIFrwUAb7BN2xbMRky+Jimc63m3b4
   3.211 +08hlFmmIMGpUYWdFjKeSiTyZ5zrirsQrvvK9AVbgZte9hv9/ZTRDY878MjEo0J31
   3.212 +S1HFFJLaZ0/ZSgcVmvSjE82SbSuwNA6FqwF+IbdO+D2vkC2fkTloEjmoAna+o/zS
   3.213 +3tt1IrxqbhNV6csIEsNLzMDqJ7i5HsoKxW/EsoitxAUJ+/N5POFvPXc+Bb6T1a8d
   3.214 +2WgCErrm3AXBetvdLDrB3VLVKhZj4pjJEpDW6qiU03XqzoxqiywPtbL0GYyXcNVH
   3.215 +vM4sORmcPsmM+4ATI8n134ndVQZqLB663FBtwJreMgi1gUVWJ9srzk9uHs58IMzy
   3.216 +3X1NtjHZlZ03uLOr6JVFCZeEj5p80gEzv46G0hS2W7BJNksuPiT3HaciSoUFwHgs
   3.217 +Kr++r5guXdw5cGJoSA3IcPtBkA6tqhv+XXs4u/rpwR4T/tmxKzMpYfyz5giesPx4
   3.218 +BCTOuUMwMw82279xLyawIjTDTZzN0Q6F2fR3uNVL8EbvhbFaQuYvK1tFrrI+8QO/
   3.219 +tI5TnvJZZ0bNXAiU9NkWrTSXHUHQcruAr6HdxctdUYboRRFWdu605Iz5bx6t7gOY
   3.220 +gF2RxcqENOcyCYVKuDxhT/GjGvAChnMSX5JGePxnTBZBYUj1Yvztz27vcxI6lBQF
   3.221 +d+U9lpewQYVcKZbEdNGgQdVKA0ZJNGd39x7muH+0imaCxggf+ptvLTFFXJA1l9pI
   3.222 +9YoH8S52R0FtroD9G9BdQDJchD8+obRmkjDFHmonAptbzwHVW23Z1YexiYP4+bxA
   3.223 +LGg2/SxNBNw3x2j2l4EijsULyfWXUmYAsZLA3PhzfHVERWWng7VEZIKrLLOWP/+3
   3.224 +qtxcmVv+6gpX+3RVmq55qQ1yDaI3ueSsO3PWlz0kRHoJEaA3t9e57fEcwPEeQ6gG
   3.225 +jN6kE6l9KzfnixPGV6FCNRlIcJUJlLVgVSEObWyiqg7iOLUGaKfRxGMO5wvgtWIa
   3.226 +9hQGiRWd5Qz4lNjlVNkWRWaipQWI6cHE8h/EEJj8Pb8ljFGe3nPIOrxOE8vHvF6R
   3.227 +cvBwEBXY3UTTxH/9B6+LKAYa1RZyFCtZVEeZby4JAWoEUEMtszkTd+dxPZSTJtIZ
   3.228 +cXsWV6euzjTCpKlEuUh2rRCM5lvMlD1cB01Exdzsh3YXArbql9E96Ev4SDo48uwu
   3.229 +IlY+KKcl/AbrK5DVnID3aFCd4jd8mCWUNbW7diDoXP5rug4CAh+PL34XY3oPytc9
   3.230 +xZ7i/BOVXyppV8eN0CsgpZulnK2WyOhgC7yJ5mBFDjg/g/Mjm9RqZ8Qy3rPBZP8U
   3.231 +ZdTUQ8ftZxBbFzYki1gHbxopZBv2IrJE77TFHy01UIGSPhp9pivOnx7xOObklKCQ
   3.232 +S8cob7GY/ObhY7/NtNtXNG/OnT+0Rg0i7qjovJVSz3WxdNMESUl7l6CKc85zoRy0
   3.233 +L1z3a9VvHB20XOBOH2+LWJ22lLw6WpLVh/pe6fpyOj+F4nd1tiNaS/1gklkiUnkr
   3.234 +F8TI06GWIp0iLXNnxaCKtKWTDfX/RVfWEHtQxu0GoEXdlg9btk72CItnD83T1pIg
   3.235 +0/PgE1PwVQZKeSdKyTO0AhjKYyvCfJ5bLJIxJMRjJvdwtNBJnoGgK0hnJnAnAHUu
   3.236 +4IrXQA4WTjklj4n3EvUxJgkg+PYIZFMaWEkIwnPpGgPFJEtwIaQO+Q0JVsN4oH60
   3.237 +wy81ZHVvXSW/RmjbftyFIp+0Iqg/QPA3A6NcRYeDs3r2UZwidNeKoUYVqZQzVzT4
   3.238 +Ke1nasE4wlugjdBbs9rp111BF2xTb4S8+bIRQHTtK4c2uhX5Qi21U2Bbjiu0DJR/
   3.239 +HngI5pBZivoQUPnfKb9AQy+V6QgI2pqbIUv57malfx8QnXG/LBXI2kuINrh0k7Tc
   3.240 +oXE8b+nRAtDyytB4qcAuzoNu4BtXpQp5BlHhN4JacvYFzqisCLlv7ExIej11hW9M
   3.241 +xZVdLIvDolHp0shtqGKleQwR1CxHaQtNaZoAiqnFAZMXHs5NUFySHUWJ3kHfKRzv
   3.242 +My6p66f/lJo/A2pXA1O41VaYDVkTVytHuHn7450bgyAr1Sxue/tIQDoGT6bzBr/B
   3.243 +A0LfnKhW61+RX11IbpqXpVw9NKxRo6NM0oIwzoMdJzZX2MuY7sEt9q86Lp+5q4t4
   3.244 +OMY2ouV2Iir85a/tQrus6WWxfuDSitZgyT+2r2oCPrIfRMZ7MDibWonO+lV5AOn9
   3.245 +csQsgokXdRSVvX8zi7xymgYuw/2ulwcXInIhcv6Su1aJE6QYgtHegm03HkcFYDFp
   3.246 +IyIyRb1Qf6h1COKAwKlav08ALGHxcm2awQBVNepvkDBWpVdTZoMmNeWd2p7S1Bgb
   3.247 +hohDQ83tXnFL7r8YXahO3jMuJAc1f90CaxhzzcIvVyHfD/lHazZo9SFjc2dyWYF9
   3.248 +BwkAtzX8b57uKfQ4qvF1ZQ/LS3HYFWyA5P1jBqD8r5Vx+HfZouVIvFnookIxKJUL
   3.249 +FwlGSRbMxVEVM+J/bQj9tnsvWC9xWOzEZuh/drG/sYx3QTYbKTQECI3cGMKDZ86b
   3.250 +VNB0rYF+MkTY/XlQd15doNjgYfZSeS/vgxukjwBf7QUEiAoOwyLXauu+xIMZgFq3
   3.251 +kZUdCZqDt/YYSrXTVJEqRI3WUy2UJYz4TC/kOTW8Tf0TkqSmDqjtgW5cC7bpTs0f
   3.252 +cxzUbtAR7+HDJhO/TJRjCINk8Erc20+HHMzVZo0HjZj5o6fc2v0Bl85x/rg4uWGp
   3.253 +8iGZ3HRxRiPiC7UEA+3Db74dS110qhkOaYA26aHyY0gaUvhS+CRhEMORy1ZGdCQp
   3.254 +PloalxAsYsX6rR9Qbp6Z2Iy9CmWVr3JxMVQpwsHIWT6wzuN3iY0eiM4FAyZmbdwh
   3.255 +QAhFNk0mIjEy7rlLSnvjehOkN9CvQ8ny8brZ9g6SG8FXzU6QK/EUBZIoyNFXmoMh
   3.256 +VwdS5wLGULtV24sD9isErORYoxRRxn0jX/Ci5NI60A/td0O+kS2BTPxHGqWtY8cb
   3.257 +Nujetnwq2WU1vgbazPJNghQyYgPCW3xaoZt6zV6W/Yb6Xzxmn4JFLwVnsL8ESxqw
   3.258 +je4faPzuLf8Er0doSDN8nO94bQml9d/U5YbtYBAXPpnk03Gimtnj3ivekdqfMqKg
   3.259 +6k6VMQJUs6uzVcyErUbmyBQ7oONeZK5ULUQQ7QaP8q/FVSLemFCUa6qdizKqMF0U
   3.260 +mdSNWsFGF3Xk2yIrm+kvN87azLe5FoGjhUKzMSKlvujtAbFX3orFhtTu3JesP8vF
   3.261 +98wegjUu1558WgXl0KiiFKsgWx+fg8x3jO567dB6kD/1fU2tiwALzM3v/AAfzRIC
   3.262 +49lxUxomJG2hpym2YLsL2euyL0pJf5Yxg/SKNmikhRz79+hFJuGf4N/fHFC2SxqI
   3.263 +qBOC5uaY6e/uKKDM7UncIkmd5RVCFKzUiFQWa2cvRLqWGMm9+c8A49H9dNHtQNwX
   3.264 +IDb77p+5Pv4tZY5ik7hH4R2XNkGrYGA2UxfyKSEGAJmaWUZYjEiyB9ur3TQ0Sy2L
   3.265 +PoJDqHDKjunqkVvAhIKyuP7r+Op2z3DW+OjEEkw40hK6KJaFOJUownT8TNCDABnk
   3.266 +3ns+wGG5/Spxj3R74LBnRW9vWaLQSw2/u0d006BVfYMUIlgKDzWr/6FdnaV9N/62
   3.267 +LfYUezEWPvMAJcog2ml8mZlx8zjFNm6pndLTozSotVL4gVi01ZND4AYn46451U9l
   3.268 +GNOvOwZXqkSdIUZ+8d8j/hYfCGx9GD/cG5Ti5/bKLDZKK9spKxn+ewqGTh/im1sq
   3.269 +g1reZ5rKP9JUqddbgwCu78INU0CTTbtJFOiBN3xTM1FyplfHy/7IiWZSPbCjRwOP
   3.270 +9BL3KQtj1LBJOktcXFPUdvT6BlNu0Y5+9d7t9VMqOHmChXHVBJT8eSL5KXMznf3K
   3.271 +tp9ax2LdkzfMYvEbVrS2XMQzUEqFbeYAc6ODZAfDTsOc+CrVa5HjK/cNleRvVtbE
   3.272 +QsydR36PJ740MN60VSVH9CUuCmQaOLvOshBfqqkiy4XebhINLNK9RaaK1OOLgqVT
   3.273 +DXiLCAU8YroDCdglpKJdxfh+KY1PH92fPuSV9uNrR/nM9faNlRKeEKFTverosB09
   3.274 +mCt3PTzAUdDfdJcbZpsmn0UpCRzPNhZ6tMesQkNAqHia00HSaOc3x2Uc7YXbIQzX
   3.275 +T8vf+K5uOvT1UgC8txZ8rTE8/4Xel7ndd/DZMotpEYjdJn3MwmluSOFhqx3iGRll
   3.276 +1YGiiHVvqI4oKQwpTVYpX4Yr4eySkGbzSEHvKo8ZPwnuZ4v6gQL8Z5EgLRzlKvsu
   3.277 +H9gUh7SYrMKtDjMq8VRNDrKqkuXXvCJrfHUW3J3EGFisJZaiwij2tu+3w4xeKJt8
   3.278 ++A+JJnYptxDzJiNiHNqBbdkoSZm4sz/L7qrNRuEEhnq4CtBoKmFlO+AQymIF8awO
   3.279 +JCuIWtAkPW9GhBUMRJW7rz+9DPue0BvwVWLayJKkMo37F4BricYf8qPfzFs9mMQW
   3.280 +hJ2unkWxLmUcJFlqbFMV03gK8zUfCIXdNk5CCHRYDas0/iBlo+kNpVj5TE/HlRlG
   3.281 +fGn9QydaR3vnqrYl1afHS7hDDJA+/LiRTsXXm+ikxt2+8x4PBNnaliQhu+ZNJv8J
   3.282 +/rFXbXkR
   3.283 +=UnR5
   3.284 +-----END PGP MESSAGE-----
   3.285 +
   3.286 +--515f007c5bd062c2122008544db127f8--
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/test/test_mails/check_reset_all_own_grouped1.eml	Fri Jan 17 11:19:47 2020 +0100
     4.3 @@ -0,0 +1,282 @@
     4.4 +Message-ID: <pEp.Q48XT1.091QOM38TKTZ4.6488A90F-5786-4FBF-92FC-99D128856F7D@darthmama.org>
     4.5 +From: Alexander Braithwaite <pep.test.alexander@darthmama.org>
     4.6 +To: Alexander Braithwaite <pep.test.alexander@darthmama.org>
     4.7 +Subject: =?utf-8?Q?p=E2=89=A1p?=
     4.8 +X-pEp-Version: 2.1
     4.9 +MIME-Version: 1.0
    4.10 +Content-Type: multipart/encrypted; boundary="216231b1f16e9e81190cde766ef438d"; 
    4.11 + protocol="application/pgp-encrypted"
    4.12 +
    4.13 +--216231b1f16e9e81190cde766ef438d
    4.14 +Content-Type: application/pgp-encrypted
    4.15 +
    4.16 +Version: 1
    4.17 +--216231b1f16e9e81190cde766ef438d
    4.18 +Content-Type: application/octet-stream
    4.19 +Content-Transfer-Encoding: 7bit
    4.20 +Content-Disposition: inline; filename="msg.asc"
    4.21 +
    4.22 +-----BEGIN PGP MESSAGE-----
    4.23 +
    4.24 +wcDMA+k2+vmtOIxsAQv/Yv5j6fuXN+9E9gbi4M8dxhTs3URbrPgw5kByqFPkZXlQ
    4.25 +IycH95YAWkcP52V65kkGdF9A2k9x1R0UCbFNHmJciz1Rw+06+I6w3Mjh1GNQlhsn
    4.26 +e//1keTmu7VKUmVujf5VTTVFU7diIsvZjMzfeGoLtT4T5cJJUHoO6TL1k7nS8eln
    4.27 +FfCaKKjVbU5gAyenWYJsCw/gkH0qFgJqaaNZXcr2O8MDUUbb6hH0iR3CxFFH/Jct
    4.28 +mvVRbBJ3UtXx543CzjJ885fvMSABALrEnsMiqzfm+Vi34Sw2FC58VPNPNKNuJ7Og
    4.29 +DeUDiv+O+fx+FNtOHgBgJo39Thio2v2YqiAkz4OPmQnpApynYgSjA/EGfC6Ms0uV
    4.30 +eKGubQuWIu3IA5Tev+IwMmTalcJrWiDSHfXUHsLrgg32qZM2Ts/EdOcKTbhdch7+
    4.31 +bhAS1zS9ABq+urTkBRoiElD5uJb9CNQmfeFJXaMQuCKl0lC1ktK8v68VyJAWF4Rt
    4.32 +1X147q5Vpe23QCtliANXwcDMA+k2+vmtOIxsAQv9E5Y3l7kuSbV26FwMo6tVtpl/
    4.33 +v2tB43umlFHpuSWcl41D0HDRKQWrcobQRPs07oWzSk3TUuMEEx4DtKjD27Ru9yI4
    4.34 +ME+4xmxBVd9IjlTjaETcrUoJ933LBwApebe6ePe598H4hVuHjmrW4tt5PbssTrQ3
    4.35 +M8LxNdu8NPV1gFir9XOFYx+HsYRdSHvdjttzRYQzJHAzLPbfiu6kn6KHokwS3OFW
    4.36 +IRU0gJPgokd02VGs9RpnZ5rhUvD0x/4ioLEJQHJLASadlKpX0trWRMcea1gt74d6
    4.37 +UdSbI8TtQekVM6fYwGy6Hvs18YImWRtP2wbXpINGw5pAS1RUy42qnhqqmsx1Cd/Q
    4.38 +aXu0ufZobcYlovakd23wyn/8V3NoxT47RkHuZpDkshgjS85RxEHOoDRvOZWTzmU6
    4.39 +8IQAneVHV+/yhwWuCL8o5tX8e6yNfNoHPIqchoboGzPSv04ENRnWIetzkAoihard
    4.40 ++gvx6Z5m6kSBbKP9N5cQjoyFNUwS/HoEqSf1+Dle0v8AAC00AWi/TE6dSK2k1tE9
    4.41 +xtdY8HpK4mz3RuPyMs27eHhbFe+gmkTgVXDs7f8hLLMA93ujywSRtvKqgLJd00N2
    4.42 +VatiP0Ht062R2a/hrM7vQPllVDQrJiOsztYAhgH/oY8au3kxZoc/rTtRwZnHfoxP
    4.43 +IpsbFLiXAjbS/kgm3X+rGzJab+qfXsajnSfTIJZWhO1zmiV+M45VFKrPpUwUTMh+
    4.44 +euVr87XXYEN4+QBGcqfApX72ffVVEN5gtE2Ni3b50FEDs3vFs2c0ClFId+1EE0wI
    4.45 +06Yx3BkxD7WctVvSCEEKgYLSDS+ZxKc735rk6WdRIaTTEx5oAFkjeHj0mMUfYf+T
    4.46 +ykZp6amh9fsoKfCpG+v5oJpLiiqO2syb+iP4DMcZ7VCxYtSoCNmQ2QFnwIeEG9BD
    4.47 +11nKjnfYBOijLfOFpPD7Ykx0GZVmH2/DaKYoMdHBQaDx+G/V2ucqfqbIXLoM8h4c
    4.48 +Rqx6a3C9QFBj/AvNYMfCBPtqMk/5oJ4Pusx+5T1qpRcCvP6dDkPskTHOvdps659F
    4.49 +obdvL5bFFPeuExo6SB854gln0/0u+O9c82NB4zK8rDwyMbrCYOeLrrJIN5hx53p6
    4.50 +SRvwUrWl07Moe+zQbe8bg0/6UbfK1dHepjm+h0ygcW6wRldEF+b3cg6CVmGW8GFm
    4.51 +cgvOmmnfih6n8a+hBGUOGI8qvw6w9e7ZAAH+ouWC64Qip6FmtKxbR2kCVwlcs5YD
    4.52 +7PzFjBIj0M6VybRHEAayzxvWUO4nUE3BPyLETOr01RwpHNwDDVO/iywwvlp6TkU4
    4.53 +RrXwf/7QbgAsmzKVghxVgHtX3tvgIpRGQRpB0P2dy+vk9r7w891MBaNzJ106ODgC
    4.54 +GDmy4K9BZgQpjE79TZvUDPo4p5Z2YtnrogiQpcJqdMfcO3fukvuG8r9zlsK/odyO
    4.55 +5NwD1VRpMohKvuBIaJCFvtsrHcq8fSwgjshdbsK1+56yyrBMsJU3N7dJ6tet0vM3
    4.56 +UGoIjZEo3hbNCwTiWp76tBy4C5Ob2Utv1QmU1AhbZAF/SnNUL6V9iadXDhVkS7Nn
    4.57 +P0QqTuWNi0IcDsSmQC9VmO8tKDO49byLBL0kkRHZMyl+69O67I7blmt0E2M7aXsl
    4.58 +Hyg7ePA5/hXe1wNUJb6U5rGCpOgRI7IMMmju7I2f0OFkGtC9KEVchr2NsomExmLF
    4.59 +TvKtdrE1mYorp9FFUKohiENuQYlADqs/iBBzhbEOoADsk3P/AB+pQfsELsxruI+z
    4.60 +dtdwJxWXiMUoDTmWdYqX3JoPYbXnqUWD5RSaBHBuq42zygC1gI6readGifxu4SV+
    4.61 +sMsx8e5GcZvSc7dQCXiSnvmxlVqgoK0+8/G6ZjURBzGpYIhDT+e0wUM/TxZHHcMW
    4.62 +eUVRF4vjuhSwCrfkSuMG2AzX8tP1ryvpmiLkikRk3f3pwgARdy3bJixPWmP9/UkX
    4.63 +KsUwN9GGBNT0ZQ6LEATm7vZHP9ZZmLHBfBUXHUfzTEf0rktdWmqECRg3vtDbLY1m
    4.64 +98uzSBH4z9IBNFzmVlSZvw9IxOQLPyhLxOGmIc1otSE6VWnGILgHNIervZ3QADVV
    4.65 +KURLboG7p2DE+0dOYyBghIaE+FGpoZ3C54sjiRYMe7kOOKi+Bbz3Icl1NySwOBlp
    4.66 +SG3yfOVByzwmsQPWVKUUT50I+2G6GY7f/Bc4r42g/ZYvi7mcVcuWDnf2tS4gFgUH
    4.67 +032R94pnVc26LFgAoU0AodkV5jbFqDVwfrbSLc/bYI5N1LkVqV7k7uCLYbxyWqgc
    4.68 +2Likghb+L2wRbLLfptNxVDbTAYxuxfaJ0rUUq4o2tHnohR5iGndECi/eT19iQAI0
    4.69 +ezd3fzij87ec3XDl0hJbQa7WLUzJB8iJe+Jyfag7j2oXTjUaB3+PinI7sNWH2BN8
    4.70 +E+S9NwB6nYh6ErenkYngp8gHcxSQI1sknjOatxqTYNLS5Oq/uGy0txMohmBpHADz
    4.71 +G8aA4XmfRqxwghGGgyUv3OKpsZthXXNdEWBUtqZoBzZl/RXoTrJqI/2Swt5luQKW
    4.72 +IS5C1Zej11ijzTKNcEjb9lAu3JQ5Wy8210y3lCOqzyh6ZahXLoVvAetyAuDRWA9E
    4.73 ++DO+NjIF42M1TlgEBZMo93o4zKg9lbuWWWr5h5jLyvbxdit7paoX54F20CrrvjzL
    4.74 +Oc0tcicmSJQw2CiyLYMjjWVsO2tIksMevC/TzkOFjXEUNCjAmgZjY77ERpSzfHM7
    4.75 +oQy/umvND5uSEVGc+rbzCdQ78D60sh141fMbdVwwD/Tflm19nmdWVYvJRLahJuUJ
    4.76 +W8rI9lZL6eVjIXvfwtu4JrGi/DIbvhaASrgRIOUKMebhYSYJQh8cmZ9vTkBd24/X
    4.77 +Kv5TCvEak1OWCO6HweCuWX3w1RY02ixQxcjccQ/mn32zYBqoijdT1PCaCqX6mmlj
    4.78 +g/QLu0ziU2LiJqwm3YJ5zUXNUn/pWdYrnedkr9SKOGpsgb0zePB7AuHatKILxKzq
    4.79 +QGlDlJciD2Xv6fNXjN8XXvZ6R1PekFhzraiR0XSUf+GajVh82druIU4BhjWMBY85
    4.80 +9ym1VQ2P/WwAUubwjzmn4OVT4H9kC/UoEfbiJu6O5yCH5QTKOi3LCneRyD4quVPw
    4.81 +hsCZDWQgXlyRWnDCz4uYRtlUVinuvJCvtuA6ojpSyrj3vDSoxNZGNa+6Bqui5kIV
    4.82 +Cp2f0qOG3GOCB5o4rSjEGTzcqzdWA6laL3Mt7xVXbq5yx8A/TeUCDI+r+wW/YuG3
    4.83 +ulSNOpLkQLVwGfN1eg6oOwUzBmBo/Hmnmmat40wOSz/ssLn4p++jd/irSuEdoRwY
    4.84 +M33mAQrtY00qAjRlaWwRrNW6Rgt0qwg9mpwSUFhtp6RN7iRijCJdoSjkCahBL9TC
    4.85 +hcggQmCxWTA85iRSsSv9+BatfRYWc9ck72fpEPDDuJJy5cDRJtlN7mJLvNLNE1bV
    4.86 +HHFJI5cJiEs8AIreeydpFHSKwzCUfx16t77QmX1Bekc6rur80PdG/aLrDDkS7ogl
    4.87 +cQ94saLknAYGpqXk7N/1ijeJXC5Lh+eKDMg1NKAU25IKcAsPXSHKnjKr2OzMxwEd
    4.88 +TgJRPQ0+xNbrfb8ixEa8nAXT0MNXEmcDmBJSVLv5eaFru4/nzJg65Jq+LUfVrRLc
    4.89 +kGLafG3k5tNPZgXI5u3YARtCq5MOBHuKYm7jy+WFpfwcSsUDyzvkqJvGY9YHyrlu
    4.90 +OGWj155lWJ/HVhXrr5w5lCCaEh4EuhrnHWqg2TD7Jsl3gZUiMcl8fHRoUTM6j3Sd
    4.91 +szdolrNyoSIcVmjto9651IQoLKq66sVRh+b9ZLeiirC9gB62HUCpl86tVxHa+Wq4
    4.92 +Nx0OMEU31uKz7DaRv5mDNZvSiX+OXJIiIB1dLIkF3e8yGWnABm0SwBNOkexzT/Ma
    4.93 +7XZqjkhYiBO23LRHr4hJuoDd2MKbb/9+Y0d2epCNfQntdadWyc80zvHShpZLFEME
    4.94 +W8NfGvGl0KwuFtv/V2JUH5gR1BRzN5bOcRFAaqKj0px9bSFYZYg4/i7uH0w9y68p
    4.95 +txAqIwUqoNQ/Ob2XLZf23EdEtRItdyR+lJwFh3k3f1d9l9DCvTBPQ0yu1mlcszXD
    4.96 +5E2e33WEx6lFdGLIAs0NQsFCajZ1AVXNP/Cpu6osqUfkotmGcWP54zx/3Kqx23ef
    4.97 +MdCRKqA5b1uQiiWKLcbnAJ3XZj3ZXwN7Gy7eqSA8CDyvZwS0K0o5uB5EBvluPgXA
    4.98 +HegBjobS2avep+xeHndcFewo/96vxvZkx4k3CQS63S8DCSngSBpqssH/3ZeMxAUg
    4.99 +PTzD+Da39sjZPIy44pFtDYI5Cu8MBbewmaFnw2dHq3tLa5tMzDPikcYFDciSMDnc
   4.100 +QFPlIL1wM7vZqLyd8RRM163PmT12SakDpBb8HKvDdFJRCeFHWM2PsHW0xabaPdPV
   4.101 +0aOg+eJUFEUj25EIw9iKHlVc83+Doi/Xiknk3lXkdBHS/wUGB2H/M+rRpjD7mnCZ
   4.102 +iZYGxYflmqhG6nOavzJKEmpnnCIb+pH6i9L0lX25S3QcyOThfsKX+2W/LTKzplHo
   4.103 +jG0qHTLZ4PyIp8jgGgtcF1E31uiMPp/l5SUzhXsi4p2LpGXitxyN8Zzw2CicbyW6
   4.104 +qPyrnSrmbUvA/lrKRWi8Xe6hXA9Sqjf14NSapSdTY4OtGMNCza4mE2B3x0pjT5Er
   4.105 +BmIlh1wgdZ8glpi1QPJdoH/vCUAFAsJmDLM9G0BjL4dWU3LjCuFh2hO15rweGFXe
   4.106 +HR/lk++g68Mtjh7OkR/4XlkcPXCOGlls02foY8r8we+nhM6RImwmcS9Ek2JG5EX4
   4.107 +dD9/Y6+aLJ+g3TukhXZhS2tID67OZRydQOfADKwM0WtpQUlDkyfxJdovrUYp/k0u
   4.108 +2FXBtGf57n6Pv5Z5LUZ1uR/zexdUpQHYe9ahQXhaBzk+Ti3wHkMYZECCxuWKIbU7
   4.109 +r1DpD+cPzZQAIIdZaHU0zS5OrDsoHT2kebE78WC1edXrfi2to9mlCs0xIxkb7jJI
   4.110 +2+okgUqx4P112FdNWeQccubfZVzykOmUo2k35l+wrqFZE8PRJV9M7d6U+9kLVPNp
   4.111 +GkTnXak0uDezfFMN5Ibo4TCSpQL56IYhWdJ3qgPUVT5b055H9sgI/Hgrj70zWYth
   4.112 +BHO7p01sDCp6MYZRUx39scoO6SRJiCyfh765tDZsV7U+px/6odZW8/H+RAxtrtU9
   4.113 +y3BIn0PSIHnZxsozKgAmpJycD/34g/LHp9aeuPBs8jekC7v7O6TOr1J8xmKFGKy8
   4.114 +28CO/6qMNHHbXgYIk2yG2lj4qqjI88wSomy6HIz4XavdwTzEN5vTI96F6oJZi7Wt
   4.115 +0m+wBKET49FAvODvxyMzG/ns8k/WHKlz6W1XIkYsT0U05KQ6XjYVzzlice8YVfGa
   4.116 +7CPaW+k/G3F43jVts0yOWqHii2bZIjej6QN/D40zokWSF6pqfILmapGzh9CcJNq5
   4.117 +LehI7GlaSN360tBba3pLGW11lpsi/bGwfIMBYkfbOqTPXuSQBcCRqgg3KN+qUkXm
   4.118 +RimR+ioqgqttxnGQr2kbNj9VSAL4kKY9v2huU/5Wq4v9IpbF1vC7GeTAS4iAYR48
   4.119 +ZafhentXOGldh8dP0RyfRg6rb80RP3+MT6R2C9n3alIolMTvzPWOzjxadf3R/BdI
   4.120 +L5t7keuuyyMzRrGXvXvWgevbIhxJDiRkQyZXAwRbrV4SW/ulLVfTJtCOYxluRW4Q
   4.121 +aB+XzvPIEFizqpt7rUYnTfDtQaFiJBaMdWgCUprjJjJDwOvE6JAzlFkSh1LPV6iv
   4.122 +hZu7xYwVSlCVQLZ/ELRTQJwzLQgiv2gNPDJSY9ghAQev/jMeRdDrEy4cGWAYlWLT
   4.123 +VACYqMpyH9SSrkMt6UPsbpimwp52PYTWJbOpfcMZLsnTe1Xb/QQJn4YDaTHzIBjv
   4.124 +WRjNiX1L0OOaPVI77277FaJC2Tzv3r9JHGFNlDKhxkgkbCSiTh65qc9Qx6ObSZ8C
   4.125 +svU2BgPPPE9GLd6P7ZQJH9vdakypq2nU0ZzO6KD2NUXOPHSjLoD7R+UNCyPol8HO
   4.126 +lFjPNIm40krr50FzRfhU4Mw1/sbLfHHTfYvuw0XnzJm7rUTLevRaotp105yxMQD0
   4.127 +T9fYug7mNfwzt37bnGZFvw5GPhcm3LRJZg4n0CWovzvoHnWVSWYu9U4tDEfFRM67
   4.128 ++woX6ZFak30Gi9/aEO+Phgk7YVEj7jCv04hO/KJmh5olCOx2x+PlcOLl/JUq2CP2
   4.129 +IwknudQv/QWeisz2ZuaeLwoYf2N177JgjalVNWmshG4QNqbsriJeTKuBDie2Lnux
   4.130 +Rw4wzZkdlO694K/N70IsIGb13r8e8dvVgeqmZ5Izm/URN2i8Mz26245iVpaL7IT3
   4.131 +Ldf8m3iZlRi77WlnVlwasJ+yLU+67qD7Nvtyo2q96/7fK5qpNHB3xevLD/jwzWIn
   4.132 +TC0QbdNpQGq1I0/x2f0OjucqRPH/gGwVkEKn0R0wZm4qoQNgJ9GoPE9Q28VG4W28
   4.133 +Oz/Uf2wOO/AacPEQ7qJDEUQAltTv7fa2SWVpEkforecf1FmU4grv5s12mGGfnxYj
   4.134 +rulFIyZGhkz1JPZeGsn7ynB4QiezYln7hkO6kZpH/aCxZa7tPDIH2Wfm9Wgl3Cxm
   4.135 +N4Fcu1/cFBtq+1O40GYvQuAbtEYWjF0IF6GMgB11S6nZ7aGHDMGWsRn0pYKC1xBV
   4.136 +Ae32rcuLPCNGKEjMFvICM+XD5via022rbxvN5zenLQ0FIT4/xBq/VsD1u8by9QYP
   4.137 +xAty4xC7WCWeNeypRakU2v4Ws1ry46i9rLoS+FvXNcKd2SB+Hiw7KCM2PMjcedTG
   4.138 +6yLRqjOrfZfTZVIXmv/kB4UEB89HHeGvGwTld+nmqWFURm28iteBTWyMIV/3WWTF
   4.139 +C2A2/GBH8uJ2g7a7LcGZo2mBR47EGg5A859i6ShjzVpTAk+SJU6cuth33cNcIT36
   4.140 +D83P36GU+sbBDrDr4StGr5DOjFLgo1dbuUJYerVEZVvL9ht3mI6WDotCvDOCwqw0
   4.141 +GIrQIWGuyPIrX+MUNfnqn0ZSYe9w5ULb7WoVZIEMKNE0t4sO0cnyVe6zJq+/84KG
   4.142 +A5rXAr25N6kwmmhypFW1QpSvRo6BTTb6xBcPREJ3GiPHLe1J/GhGTpPXU7GXCxnT
   4.143 +rt3ppt0lR8dyq1Jker+ThgaOv27YWt1NgWpoaN1kznnfYt/qndp85vDEsnE0sTg8
   4.144 +nDU00cj8GEkv4ItOmPVlY01Fwbm23shXoAUI83ztLMguC5otyach9l7vfxnmoGXj
   4.145 +GWl7PQpsGtg4uLadTTzEzsxIQbTFWdbRtXRwjzfiIoadRhsdYi9a97S1Mc6AcGU4
   4.146 +kSd2Tod+ZV+fPnTPrdGRV7skmZlcOE5+6TSakw7DR9hxsGi2GTIcl+hMsfLDWGtT
   4.147 +1gHEWbkL6awbixriwdwXQbrtf1+J1NSy8EPA6DlZIg9BaW/ozrszPnbe/PvX7mWi
   4.148 +tb/8VyATj3b/lCAeiUeqdA6UqhEg1xi/l+N82902gUht+g88hz0HgnCgkARivmMG
   4.149 +/ffKdNzzQ+2vPU86Aio4qnZt8PLryHHkE41XkNDwBsAsvOlz0R5eI1rZJtJ8cYEn
   4.150 +t1Tkjap/nCfQuMEsygKn7yiG0ISYsYkVKZDAclt22PefWZs8ifUPuOI8CYJS+oVb
   4.151 +/cdDMq9Q24NznxZODltDm5GHNfQvaGASmf1h5snngWUy2eW3psebUuj8aw0o1qYa
   4.152 +Z2H7PujhqaejR89o1anl+htyxm+1a1vWkLzqIfAr5Kh0DvCNcTwKjGB61ObAQM28
   4.153 +kmUxy+X6uKcP7Dl1gdApBeOHrLUSBxZs9pgHDR92cbdvp58f2XvZAFIO+fRZWwKX
   4.154 +hzG4tojw6TZ+hK27eNydF/Me1a9yN680lBufICrtEMEpa3YzK/VxOa0Y8eW/VfPZ
   4.155 +vnuOWN05L5EZz52ZYGbxwapJ/1NCJjRS8cpDj6866T9IV0FWFlFo17cN39M+oASO
   4.156 +rD1rCeLkBdK44RIL2rxPust60uJ71l199Sxzw97hCaX9ElWpl67uVFC4yZacBlPZ
   4.157 +/lx6pVfiKTmmxuU6Pry3dYkP/1dXP8M9uWfzeeq6LxFc5btXllXkvt859BOppxXC
   4.158 +7uX74tHC/0owiW18lY3IpFRvtlxCP4Y1iMOlHiKHY+t2OVAGoIMxiieFYuaCuXA/
   4.159 +z/odDuk2tOMNDG07copTvTvj4LPlHk5PymBAcm7b7PQy+s22JBpNycWMvhEkysAH
   4.160 +5V6jHOBGrUkc+gYb15Kn42d7xitYvnaSADvln87hDl7i1Z/nrL2LzZHJ3LBgTHz1
   4.161 +4yjvCXp55UvMV80uHOfy9tlNYiux6wiREl9n9XdbBgOnP9wgb79jtHBaKbUmRAE8
   4.162 +4oiDoyQ5aTOtBpo9qGoSdfc9G/vcFgNmPx2V8F25SmKa5nB1bMoi3xI9xn0+p3Fv
   4.163 +TaELktMMXyit5BJzpCuznCFXAUuzgT+aeaLu0DMteT2FXPMt5n5PAP3tp6c90eGy
   4.164 +0y+HB7ZYr7hBY5lXf5xwfaAHXIR65BNoejNQMRk8MiC6U4INLQOHs2ALDlFmAms7
   4.165 +pV4E3JBjWWuLdayYIivqIKDw4tuEnnJvKXtfUl5MSTF/NGjhUk2kh/xBhM6kDyWa
   4.166 +/7fDcBepCDUReNd3IZN+Y46BKiToEIe5i2kEw6krSI/TaVWfWk+17++qRFivY8F/
   4.167 +fVVvjjTg5gDm4Tf0aNO2rGjAJDyawbcW5CTOmG0JbI6E1jDQHVuxrS8dibvyNgrj
   4.168 +YAq5hdcMynpBqrGF9q70FKKycSMn1V+n+DMhrStHsjJ9gUb3k8BZNZ8el0YiZwoe
   4.169 +WZHgd3TXqTDp+FFY8mFVKijnS7EHuWis+jcYgGg0sA6x7nMEoer3kdBmqpU6YxHQ
   4.170 +CmZSKTxZNFhEd28UfKGitjssRsQoqBzeX+MJF11l6sm6d75j5uXM+1P++a4v+Ksz
   4.171 +3TMIGuI+TA5bHJDViHuc6n6/U8hhFfaMMkrII71vb0Ic+yKIZl7KgfzEl1co6h3X
   4.172 +f+JljXmQ7lDgB0a6upz0tGpSXcYs2VYLdr/Ws2ckVviKRt3LjbBpcDGXp0aWN6cM
   4.173 +7tH4H0DpZ6WhqhTxLYSjXAE/+t3aEnRwubOSkRYuybjxphvFGbgF1tUfKigC9TDd
   4.174 +GiZ70Cb7Gc4e/8JFJ9T0cc46Su62klPqKPW8Ty2M0wgUGxZ/GffgtAW842SphzN4
   4.175 +Z3WKWDlRm0w32nR5ghNMwhgUduxuegKL/qWhmGiYI+Mz2Zbj9o9FKlSbchfpOknJ
   4.176 +1d6/utzqBHL7FPUMeYgBXt8Xa+3ddWJtnJy5jgx4DLAOVCvizR/P4sBq2uXZMfBW
   4.177 +x/cfr9JStNgwmsL5XbgQCbD3aoob0tDNumJ91Bo6oLFG02inZwtTcID00NFfL892
   4.178 +i1AsvGKAMFrswgQxLGTE6Ta6+aHcILGmP2bzYOcYjjuxDgxlT4Xk+8rFRxqShdV8
   4.179 +Ybeh8/9LLFM/lnVfeOa/AtEA+GBFAOwKejj0Wh9Wsz0n+7VOW47LgvMbYPjqRtyS
   4.180 +jg31TJSw/mZPpFwzyx1AecWUEXORi4eKr8V+rc7tvUkh4dd4ZdOr6aeHN8nQPYq4
   4.181 +yBOOvfdHx+jSuSI6uvrKN/M95bDjdxh8jy0EJT2sVev6a5EkcfXt9ftC58+VJARG
   4.182 +xy+Hd3DPCOHAtYqvtRD+0eOk7367tSLDiJJwJ/VkE4vk7FX5XLg6n9FAv+jYn8C7
   4.183 +lRtEXLMBxpigwXePXgkCFULLWcjyqCDVEDLuumJoVKhOUT8dMr8Ba6CFpn6IkAVm
   4.184 +Hx3Ikh9j4aMmjFjMYn4DcnV0n6E/Eu5WoCn9Sr/oRFX41u6sAvWHaOmqxGjTEqJr
   4.185 +jqq5FUexLA2ptT+ovbI2GTFZNV0sYX9VJR7XNjd2M/ajIrcOcLpdLiJ80BHnirwl
   4.186 +iw/EVr0a6olpVzPQtFIo1AU3b2TKKrloLIh5R1ebeQLAOyi5o58hHNiJzZuIF1zE
   4.187 +/w/iT80oLq2fQHiLVqBWh2eZhcmF/Z0rlJUSB+myTHtGjekWXalAWQdF7MLPpkLb
   4.188 +r5TrQLavRMJyFtHSO2NB+OcjiNceZlj6adHDyvbHNVugADb7sSWJS9c2DrG55OuR
   4.189 ++tS7IRIGvwjpraqGwPvkLqLeY8779gxfCReAet/iZdCm4smji5hqJldcu3pcia48
   4.190 +D4m4QOraJPQ9nIuyPp3xFqy9NRQSbj/RK3rfXjdDnu78eMOIzkPO40az7AWLmNCJ
   4.191 +Tud+HLDLNE5JF51r1dE2bU616sJY35+obH62FakB2H0TTZloJS7WbgDbX1SQ0yoj
   4.192 +nLE8QIXZeS94Wdk7qbtKh/WZNvgPkQIN966wLMrQPhj9DMjqOhPB65ehtbywoKQQ
   4.193 +F8Trr4IyGKmTh41iwzyZGaDtqBAx4X4PL1ss9OPzxANkhDoiDdpjXRdwl7yXTYhX
   4.194 +iS3GTZQyMfYjYjb/lUn8d7vdFN7oLnYvB5NOaKcKbY3fJbI+lHkJzSQHCRNQqBf+
   4.195 +5DIh/LXXIhMTgC8L5uR2KHSf05U/pgr/9JOI3RaCAiY4xZbywqMPpWcR3ThM9L6R
   4.196 +1ETqjxYmb23C+xwKd+L3ZzNb/BpegAk2qOW6gLd//Jid96o7jqotTRcbudsYplyw
   4.197 +fVAe+3LlteGclrj6pMjjECH60+rfSIoPI1ZVvB2MezEm6gNiSjeBZs757RJTL5Qw
   4.198 +2dT+VShuT1gFIzPEt3IJewVrJGBfewVcrGm3p9HmrPx4b/eqWZHyzdsM5erTKU7V
   4.199 +TX1koWuXtlBFno9ny+UAAY8PMS15q1/pTREf4EJAzz7s31stTygsyxa+0wk6M9Jk
   4.200 +rRBjTKkEDpG8UnKWbOlYaCkeNJJfeMf7F3CmZ0P2OS7RIgZAoR6aoEkIT7IhcYxn
   4.201 +48wHD/VCVynl79FsflouMhXhtH1lVRNDkwtVFAVhYe5YB41qD+0tRjX/WLaRWlTi
   4.202 +skSrqH6Gx4JXhNAPBr1p3v+d4zO2xM7VLL/1qXID1SKI9XAL1wmhOdW2pO3UwZ7K
   4.203 +D8yXcoZsJqPrVk3S/0e+zq+0kCakZ3+GlY2sFKjl0ZKagRv+gaFgbiORf5KNa7s8
   4.204 +kDFD8Yk926sjx10d6cpZQVQrTf3Zc4lPzzaZVWRsIBWNTZ5hCxPnzisg3zqemyEt
   4.205 ++GPpd00OKa/NVV5NKDYOTy0W52zKXI8drQS2S+JiWjDNo7GBG9Uk6qjtf+05O6hA
   4.206 +zAeX12H21QNAW2MT8wDtMJ9wlJGYxBehSHARMZmtGZ+XREQOK9C2/BHu6usUor5F
   4.207 +Bqb7nJrFJovLiFIaySUKTlNJJIeL/TIoSwEXIKco9zU9h/4xDYhv1gyCK+ZcRrkQ
   4.208 +KGgj3iuBtNmdXG2XuMlY3mK82Tpc23gZinMU7wHs4Ve6jJnxaf+JkBVuhIZIr4rj
   4.209 +DZ4hXm8yO3zrWVNEBl9EyFn9f4ODwNZPrU8EoiR1yLjm6YVYRuqUm+3fZ82dh7RH
   4.210 +b21E26HGkQh7/FeIxNqBz8jE1SGQ807/mbxy7/apFn5dY5vXNhDNTV0H51frRQKy
   4.211 +k0G7XETCptXPR/z/VWe/6rXKnjFTM3yrmwuED3desADGmfntRo63Q/vjFYfu/Qbn
   4.212 +DxKjK81x8hRgy8ijpzzGEhkEmkFbbWOGsYNBo9rkXDXPRVkJ7iweXFmlrW5mbgQS
   4.213 +1Zsz18vk027kQV5gNIQ+x8ZMVs0eiyUccmRyfbjIHpggLGkip9/Q8oXOm4yWdXsG
   4.214 +q44zpIvkFcp36CCFP2IB7yEJUjcAWS1hGoJfLHsybmIvqLYlC055ng9oRwWtUAY1
   4.215 +C4+hmtQ7Fb5DjUxYk4LMT+UIOh+gHD1iPG/v3ODym8Gr7DZNB/vzb16iwknfNSG6
   4.216 +nKa9+eQ9BqLqbaXlZfQUSnJAVJGLJ5LzoQQWsc63y71vkLOuDXYainI3welwFVs1
   4.217 +ZXo8KM/wBWKYXUji3Sgi7xHHU63wPm68TL/UzSRJuCG4uKz0WfTcesvVZ8ALnL3p
   4.218 +ycGNS3hgK7k/bT3P/+A0KGMIcjN30xYA/5nrnFEv1BMwg9KQHiVVx8ShE/zEsAte
   4.219 +BZYdu5FZS9LrXHlJ/Yk29w280AdyEkCQQS2oCYJ8L6wPjWCwyoX8jpoay1ma4XL3
   4.220 +Ctz2Z16bGib0aiQSkH1TlFTcdUITXag9Cn4Msop9lsHm8Pf7Bfsgb7ZypixawxLr
   4.221 +FGvk3sN0KvAsYutT2RLqYSN3xBVFlIgsvzreBrqjvjyM0/4mdABfsrHR8Fz4im3V
   4.222 +M2J0OyIGHjCenfJR1VLNwMFXTgY92efx7L8EeWXFCrh8mw8/YxRvnSOx+BtMd46x
   4.223 +DR6qbVgyV+ErvcPrHlOZ8s6TW+C7HlpP8LFmEAYV2gJQD9MoYcfGPSF3lsuAriOG
   4.224 +4jQECYVTnM4mSXx7NzkUVvCjtlLAEBdM7ZmpatN7SAbB/4wLxJ1WpUg9h/qQe0sc
   4.225 +6etdIEFVGrELUMwPTa7WhF+4J2/0xU+YwoyMvPH4gf0v6l981PpDm8IwLyKrUjtC
   4.226 +CnRY8XC1z/pKPBf8I5pAOCYldnoNZL6hFMmcKrJ6aLwC3isymWwhTjOZL01BVHWI
   4.227 +4Rj2ZK4zJjzqkRjkt9+/fLcj+eeK3/0dJ0mxCLlJHe47fGeW1L9bXy3qDQIPGsyO
   4.228 +6PqHbnfzKlry1bwukeWhfK+XwwFPZaeC4Rzs1K/oxjFAGL8pUzc9LdYd+ZIDBcIP
   4.229 +IHbVfs4725aABmz73Bj+BvsYQo+4Ri0A5AQ7iE5Etq65xXrRjsgAMnlx3GKet3UL
   4.230 +YeiQNlWmFAfio/0gbgZkSAtYoxouFaAgCUhp57EKcDT+I70XT9oEgF/7yiTiNXmn
   4.231 +DjnDc1F/VdJbA4uXKNv7QgvAIf++Yt8W9KlnUUW94c8mVzgUTXE/jn/AxsPh0UbD
   4.232 +7GzsR7+yZe5oZATOAD0XswRWcFZMHC4VRRiKnDWiv4YuKVWpXwwOpe6//x3fpjHx
   4.233 +FoZ9YXjvSx8lUINVcjHyDlwx9unQshKbSt4JBqci6nrJDmoN9MxMXMMV6RU7+tui
   4.234 +58u7kuueoDEV90hX93AW4OLLt+B+PomcrtPd0N6VG+Fw/lAyjXjIBYhTaNNYzNME
   4.235 +nNPltI7CBdOhHsNlj6vvqpDdLGcNL1R4HPH8JNqea5I4g7pXM5IhIEgmjV63XNpz
   4.236 +J2u1pc5vyl9vB5+eyWtiDlwLh3/SxQaYMIckyJyLQBdUd0RNE2NxIWms6Tlo5lip
   4.237 +3KQCKHcJlFlp3e3dCWaPs1TZFRf38UZAehpzEGXhao0ZT/fvIe4z0n0xoAXfn5dg
   4.238 +1sAjd88tXJtHwe6ln0A6PqSBq73M8jGaov0kLgkoKrNtkwrmQz1rvGCyYj+jS0OQ
   4.239 +AKfSazyIwbi4w4zqZJ9iw6LwtaMEvRtl20t57p5D8LgAqLWZ2ZzfxbVUyDhr29wd
   4.240 +1eer8Kf3kjcwOvFk2pnBPIFyVZcs4cgfyuFRIvetpmlYm4ZWBZGsH+0ErvhGIy3x
   4.241 +wGE3eMyWr0d6ShzIEI2qB7pi1mWpsh29GxCY21P3REZ7VKks/qUSK92/usnQRj61
   4.242 +k2y4oamG3giP0QUcarGK91sPRlzG4Ip1xIUeOMM8Nw+cjV2gOpdXjIy1iVGc1b1N
   4.243 +1+qh01Frvc+JmM77hBZQ1vtZOt9wCtbT9k47H2Uxz5+XVIj4HPU34reI+tRxjHx8
   4.244 +dKyP736yEK7DXiHGxJYe/sSnGm/3Xr+H7Xr4vYPMgUVsRVw1jeml0+cvDsCFINpJ
   4.245 +Zal16jxiWb34g/CpF6Ag4ubqQEviyLyLhQb6/gXHVn+Joxf/PIbjpTN5h9PECNlf
   4.246 +doseiGycauO7OxCwmiFz5TTFDDptqCMmNllSHfU3uVVBWikFd5RYqlHbqTO2N0Zg
   4.247 +znLHhlK9707Z8wvqw8NNib7VutmREAOn3G9OYLI8aeKxFML/ZBqaB6exzcJWyom+
   4.248 +YrgA78eLmxsfgkghBQXpZOlWp2chtUL13+bGt19E+qYZE5ri7v94anvnwJy9EmKx
   4.249 +QHV9Hd6kl9xfYkk2iq0Ysuy96+qAMIwnSjrg9EU69XbeFSNq1GKix1PHSTs3TrT3
   4.250 ++wpxo4HMCT6F8B9ogv8D/+Fk06MoiMQIIbrg1k5UhRRfdozA4rD8T8ncL/lj3Xa7
   4.251 +98JuQzAEXidOj8QBh8enEx2HiFah/rP5nAacb0qSuhQXdDWB6Mt+w1tbxlOD09/W
   4.252 +PMFBV7iTk/xYh6ZzSkx8ytQ15K5eYPYtq3t9hrl0t43HGiBmi17Rz3r/vB8Hi4qs
   4.253 +n6eh6UUxZAbR1RUqNAdqWv2KC7hTsxLzU/tcPD9ebTBR11uMShXBj+YJ7c+4p7GC
   4.254 +2WpoCIkOhQLjV6Oy4HsATHG0gKWV2k9EK5+lBd59fdEdTb8SB2GgGzjedPFuj2iB
   4.255 +Zr7dI1E3pVdntpnCZSVd6+Z42cWIYxlBrgZQPb5O4zk1cTAUgzjIUH/Py/1rE/Q7
   4.256 +E1OoES8JEw4GMhszFlM2Sw9urfvUkSvTP+6rNx+4WXDhex106VB9vz4fTiO22aRe
   4.257 +XWrRRB/hAS3VpDJiCofjvSrXIlGXbaEXmi9QVpNBGHATQbk8vqzP3Cij1JwGFEIo
   4.258 +/Vy4kHTCbRbyxinnHJ0KGh/DL8uko7LJkF6/lNjJd9DWKC2J7tiU/eOr0cYyDJNy
   4.259 +QQBJAUWXsXVsVMtIAuUWGJReWVlozePKlhlQaFdqWco468R6px+yWRTaifMJfZ7X
   4.260 +gpkeSO7TgqdLT+6kXRVM5FQ3h9FVTXNtuueEMIx06C3Vdx4bp03F7ZWNmcXU5U0I
   4.261 +/ztYv4Fwz6qGuyUuokXC9opZ+lJ/50vYpK6qsY92EIgIaDDHh6edsD9nAud+5yec
   4.262 +oQoJg6klQtLuiTFiLckhTfFd9PIn4tuy0tEQU0NASkeuBqht7bvIzHVDVzC1xb+8
   4.263 +zZWQEeLtR8PXctns1hLEJl8Lxr4B8p2T48mFCK5yKkLdQmEGTqwYy4tbqJuHAd+r
   4.264 +N1deQ9bNnDBpLVHY0Zdsi091ymUo2m3RsM4TsiOh06s1hvRlx1V4tVLBXKcAVgfi
   4.265 +SunTvFq49LnbdosvGf1A5zKaw/zRNYMDkdx6XBU1yIo72KE4DLWLf7K3qQSkeRQ6
   4.266 +/gLXDVhgkDZ3UUVkjNawqptj0UCkn93JTcmhnfHXStw4lpz0tWSTsuX/R25Ii+yO
   4.267 +blh0JZ3qxOVZqAxQ/yoVUaDDEQEejM6b9XjRJ51O/+9a3i2dUrhvbLqK2KZ35oZh
   4.268 +gsCCKtWWyBeDcTLIbxT8jbofR7iGvo8OlNc7F3e0jKKSfjo4liR0DQU9aBR+rO5v
   4.269 +cEEaw/LxLzCM36+MB/ypbn2t+FGbCNXiq3nehFtjwAWik0zwCey1I8GNAKGkq6zG
   4.270 +Nn5ma/MIdmeYHJfnz02wKFqW/vSQC95Jp2+GLk1mE9zSeuw7x2bnCEEZ40a0xDMV
   4.271 +GS4w6G3jYlALCDCD5t6KG0JVss6ATAFc4Hf7zvduwRmeme92C/oDpEPw0v4pFbQz
   4.272 +loPtzjtMw3rIrSAHG8tE2QJqXZ/ZvRIg6KiQsy2wr4LRej8shBvh9x7EsU1Uw6SQ
   4.273 +LNjtK/7L9eQvFOO9z5bvbAPL/XV9GBLvkx1BztEdJKdr0/iR8x6b5zFcGkBiGelV
   4.274 +VLDVU128kVzW5HQ3mRmWb+oplVgyp/38M5AwtZYyTQ/eSr2+L0k3jd+VeOgt9kwU
   4.275 +TVnrLsBNKh3acXJY+/1v3Yt/sWPRIxoRkVl0iirCj2zNymYl5eS2iDuH6NqqhdkE
   4.276 +LXoleCXFXFZfKYJst3f6Y2kbOpfZ8irtvghTkDf5A9CPMxjq3/1S5nlwFZ7GnP9G
   4.277 +8wyiYkWyx/5p2Ui7uWnUxfOkXNUkG63WtgApHfqPlIpi/1ezP7nO8Q0mpLGfNZDv
   4.278 +YNb/w0lEWIkHEqWWhU4bPx+K2EnX6vOhA9KwznaoO9j4wVvSF2WGr9lZFa1WebQ9
   4.279 +WdjzBSu/AxiBq8+9ro01dVOdx1L4S4j84Tj3xq6Edx2Atwu39KFoN/UZpEs1pyZ5
   4.280 +4ONkNQbSIfw0oBMlP+y9SyWogkrirc0KQPlurg3RC1GwMXF2+RW/0TP+5g9f2XuU
   4.281 +HyR4/Qo8rTaNTa84m98zaa+fCRLWG/7WY75+Huvctf4HmXtfj/d2sw==
   4.282 +=bgQB
   4.283 +-----END PGP MESSAGE-----
   4.284 +
   4.285 +--216231b1f16e9e81190cde766ef438d--