char conversion to utf-8
authorVolker Birk <vb@pep-project.org>
Sun, 29 Mar 2015 21:03:41 +0200
changeset 159ad6d0993d1ab
parent 157 63eb5372f2ef
child 160 ca9b52c362cb
char conversion to utf-8
src/etpan_mime.c
src/etpan_mime.h
src/message_api.c
src/mime.c
test/mime_sample.txt
test/mime_test.cc
     1.1 --- a/src/etpan_mime.c	Sun Mar 29 13:54:38 2015 +0200
     1.2 +++ b/src/etpan_mime.c	Sun Mar 29 21:03:41 2015 +0200
     1.3 @@ -704,62 +704,81 @@
     1.4      return false;
     1.5  }
     1.6  
     1.7 -char * _get_content_type(struct mailmime_content *content)
     1.8 +int _get_content_type(
     1.9 +        const struct mailmime_content *content,
    1.10 +        char **type,
    1.11 +        char **charset
    1.12 +    )
    1.13  {
    1.14 -    const char *_type;
    1.15 +    char *_type = NULL;
    1.16 +    char *_charset = NULL;
    1.17  
    1.18      assert(content);
    1.19 +    assert(type);
    1.20 +    assert(charset);
    1.21  
    1.22 -    if (content->ct_subtype == NULL) {
    1.23 -        errno = EINVAL;
    1.24 -        return NULL;
    1.25 -    }
    1.26 +    *type = NULL;
    1.27 +    *charset = NULL;
    1.28 +
    1.29 +    if (content->ct_subtype == NULL)
    1.30 +        return EINVAL;
    1.31  
    1.32      if (content->ct_type && content->ct_type->tp_data.tp_discrete_type) {
    1.33          size_t len;
    1.34 -        char *type;
    1.35 +        const char *_main_type;
    1.36  
    1.37          switch  (content->ct_type->tp_data.tp_discrete_type->dt_type) {
    1.38              case MAILMIME_DISCRETE_TYPE_TEXT:
    1.39 -                _type = "text";
    1.40 +                _main_type = "text";
    1.41                  break;
    1.42              case MAILMIME_DISCRETE_TYPE_IMAGE:
    1.43 -                _type = "image";
    1.44 +                _main_type = "image";
    1.45                  break;
    1.46              case MAILMIME_DISCRETE_TYPE_AUDIO:
    1.47 -                _type = "audio";
    1.48 +                _main_type = "audio";
    1.49                  break;
    1.50              case MAILMIME_DISCRETE_TYPE_VIDEO:
    1.51 -                _type = "video";
    1.52 +                _main_type = "video";
    1.53                  break;
    1.54              case MAILMIME_DISCRETE_TYPE_APPLICATION:
    1.55 -                _type = "application";
    1.56 +                _main_type = "application";
    1.57                  break;
    1.58              case MAILMIME_DISCRETE_TYPE_EXTENSION:
    1.59 -                _type = "extension";
    1.60 +                _main_type = "extension";
    1.61                  break;
    1.62              default:
    1.63 -                errno = EINVAL;
    1.64 -                return NULL;
    1.65 +                return EINVAL;
    1.66          }
    1.67  
    1.68 -        len = strlen(_type) + 1 + strlen(content->ct_subtype) + 1;
    1.69 -        type = calloc(1, len);
    1.70 -        assert(type);
    1.71 -        if (type == NULL) {
    1.72 -            errno = ENOMEM;
    1.73 -            return NULL;
    1.74 +        len = strlen(_main_type) + 1 + strlen(content->ct_subtype) + 1;
    1.75 +        _type = calloc(1, len);
    1.76 +        assert(_type);
    1.77 +        if (_type == NULL)
    1.78 +            return ENOMEM;
    1.79 +
    1.80 +        strcpy(_type, _main_type);
    1.81 +        strcat(_type, "/");
    1.82 +        strcat(_type, content->ct_subtype);
    1.83 +
    1.84 +        if (content->ct_parameters) {
    1.85 +            clistiter *cur;
    1.86 +            for (cur = clist_begin(content->ct_parameters); cur; cur =
    1.87 +                    clist_next(cur)) {
    1.88 +                struct mailmime_parameter * param = clist_content(cur);
    1.89 +                if (param && param->pa_name && strcmp(param->pa_name,
    1.90 +                            "charset") == 0) {
    1.91 +                    _charset = param->pa_value;
    1.92 +                    break;
    1.93 +                }
    1.94 +            }
    1.95 +            if (_charset)
    1.96 +                *charset = strdup(_charset);
    1.97          }
    1.98  
    1.99 -        strcpy(type, _type);
   1.100 -        strcat(type, "/");
   1.101 -        strcat(type, content->ct_subtype);
   1.102 -
   1.103 -        errno = 0;
   1.104 -        return type;
   1.105 +        *type = _type;
   1.106 +        return 0;
   1.107      }
   1.108  
   1.109 -    errno = EINVAL;
   1.110 -    return NULL;
   1.111 +    return EINVAL;
   1.112  }
   1.113  
     2.1 --- a/src/etpan_mime.h	Sun Mar 29 13:54:38 2015 +0200
     2.2 +++ b/src/etpan_mime.h	Sun Mar 29 21:03:41 2015 +0200
     2.3 @@ -71,5 +71,10 @@
     2.4  bool _is_multipart(struct mailmime_content *content, const char *subtype);
     2.5  bool _is_PGP_MIME(struct mailmime_content *content);
     2.6  bool _is_text_part(struct mailmime_content *content, const char *subtype);
     2.7 -char * _get_content_type(struct mailmime_content *content);
     2.8  
     2.9 +int _get_content_type(
    2.10 +        const struct mailmime_content *content,
    2.11 +        char **type,
    2.12 +        char **charset
    2.13 +    );
    2.14 +
     3.1 --- a/src/message_api.c	Sun Mar 29 13:54:38 2015 +0200
     3.2 +++ b/src/message_api.c	Sun Mar 29 21:03:41 2015 +0200
     3.3 @@ -515,7 +515,7 @@
     3.4      return false;
     3.5  }
     3.6  
     3.7 -char * without_double_ending(const char *filename)
     3.8 +static char * without_double_ending(const char *filename)
     3.9  {
    3.10      char *ext;
    3.11  
     4.1 --- a/src/mime.c	Sun Mar 29 13:54:38 2015 +0200
     4.2 +++ b/src/mime.c	Sun Mar 29 21:03:41 2015 +0200
     4.3 @@ -845,11 +845,19 @@
     4.4      size_t index;
     4.5      int r;
     4.6  
     4.7 -    index = 0;
     4.8 -    r = mailmime_encoded_phrase_parse("utf-8", mb->mb_display_name,
     4.9 -            strlen(mb->mb_display_name), &index, "utf-8", &username);
    4.10 -    if (r)
    4.11 -        goto enomem;
    4.12 +    assert(mb);
    4.13 +    assert(mb->mb_addr_spec);
    4.14 +
    4.15 +    if (mb->mb_addr_spec == NULL)
    4.16 +        return NULL;
    4.17 +
    4.18 +    if (mb->mb_display_name) {
    4.19 +        index = 0;
    4.20 +        r = mailmime_encoded_phrase_parse("utf-8", mb->mb_display_name,
    4.21 +                strlen(mb->mb_display_name), &index, "utf-8", &username);
    4.22 +        if (r)
    4.23 +            goto enomem;
    4.24 +    }
    4.25  
    4.26      ident = new_identity(mb->mb_addr_spec, NULL, NULL, username);
    4.27      if (ident == NULL)
    4.28 @@ -1179,11 +1187,14 @@
    4.29  static PEP_STATUS interpret_body(struct mailmime *part, char **longmsg, size_t *size)
    4.30  {
    4.31      const char *text;
    4.32 +    char *_longmsg;
    4.33      size_t length;
    4.34 -    size_t s;
    4.35 +    size_t _size;
    4.36      int code;
    4.37      int r;
    4.38      size_t index;
    4.39 +    char *type = NULL;
    4.40 +    char *charset = NULL;
    4.41  
    4.42      assert(part);
    4.43      assert(longmsg);
    4.44 @@ -1204,7 +1215,7 @@
    4.45      if (part->mm_body->dt_encoded) {
    4.46          code = part->mm_body->dt_encoding;
    4.47          index = 0;
    4.48 -        r = mailmime_part_parse(text, length, &index, code, longmsg, &s);
    4.49 +        r = mailmime_part_parse(text, length, &index, code, &_longmsg, &_size);
    4.50          switch (r) {
    4.51              case MAILIMF_NO_ERROR:
    4.52                  break;
    4.53 @@ -1213,17 +1224,37 @@
    4.54              default:
    4.55                  return PEP_ILLEGAL_VALUE;
    4.56          }
    4.57 -        if (size)
    4.58 -            *size = s;
    4.59      }
    4.60      else {
    4.61 -        *longmsg = strndup(text, length);
    4.62 -        if (*longmsg == NULL)
    4.63 +        _size = length;
    4.64 +        _longmsg = strndup(text, _size);
    4.65 +        if (_longmsg == NULL)
    4.66              return PEP_OUT_OF_MEMORY;
    4.67 -        if (size)
    4.68 -            *size = length;
    4.69      }
    4.70  
    4.71 +    if (part->mm_content_type) {
    4.72 +        if (_get_content_type(part->mm_content_type, &type, &charset) == 0) {
    4.73 +            if (charset && strcmp(charset, "utf-8") != 0) {
    4.74 +                char * _text;
    4.75 +                int r = charconv("utf-8", charset, _longmsg, _size, &_text);
    4.76 +                switch (r) {
    4.77 +                    case MAILIMF_NO_ERROR:
    4.78 +                        break;
    4.79 +                    case MAILIMF_ERROR_MEMORY:
    4.80 +                        return PEP_OUT_OF_MEMORY;
    4.81 +                    default:
    4.82 +                        return PEP_ILLEGAL_VALUE;
    4.83 +                }
    4.84 +                free(_longmsg);
    4.85 +                _longmsg = _text;
    4.86 +            }
    4.87 +        }
    4.88 +    }
    4.89 +
    4.90 +    *longmsg = _longmsg;
    4.91 +    if (size)
    4.92 +        *size = _size;
    4.93 +
    4.94      return PEP_STATUS_OK;
    4.95  }
    4.96  
    4.97 @@ -1302,20 +1333,24 @@
    4.98                  char *data = NULL;
    4.99                  size_t size = 0;
   4.100                  char * mime_type;
   4.101 +                char * charset;
   4.102                  char * filename;
   4.103 +                int r;
   4.104  
   4.105 -                mime_type = _get_content_type(content);
   4.106 -                if (mime_type == NULL) {
   4.107 -                    switch (errno) {
   4.108 -                        case EINVAL:
   4.109 -                            return PEP_ILLEGAL_VALUE;
   4.110 -                        case ENOMEM:
   4.111 -                            return PEP_OUT_OF_MEMORY;
   4.112 -                        default:
   4.113 -                            return PEP_UNKNOWN_ERROR;
   4.114 -                    }
   4.115 +                r = _get_content_type(content, &mime_type, &charset);
   4.116 +                switch (r) {
   4.117 +                    case 0:
   4.118 +                        break;
   4.119 +                    case EINVAL:
   4.120 +                        return PEP_ILLEGAL_VALUE;
   4.121 +                    case ENOMEM:
   4.122 +                        return PEP_OUT_OF_MEMORY;
   4.123 +                    default:
   4.124 +                        return PEP_UNKNOWN_ERROR;
   4.125                  }
   4.126  
   4.127 +                assert(mime_type);
   4.128 +
   4.129                  status = interpret_body(mime, &data, &size);
   4.130                  if (status)
   4.131                      return status;
     5.1 --- a/test/mime_sample.txt	Sun Mar 29 13:54:38 2015 +0200
     5.2 +++ b/test/mime_sample.txt	Sun Mar 29 21:03:41 2015 +0200
     5.3 @@ -1,605 +1,18 @@
     5.4 -Return-Path: <vb@dingens.org>
     5.5 -X-Original-To: vb@dingens.org
     5.6 -Delivered-To: vb@dingens.org
     5.7 -Received: from localhost (localhost [127.0.0.1])
     5.8 -	by dragon.pibit.ch (Postfix) with ESMTP id AFEEF171C059
     5.9 -	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:34 +0100 (CET)
    5.10 -Received: from dragon.pibit.ch ([127.0.0.1])
    5.11 -	by localhost (dragon.pibit.ch [127.0.0.1]) (amavisd-new, port 10024)
    5.12 -	with ESMTP id LIqI5IZE3-af for <vb@dingens.org>;
    5.13 -	Sat, 28 Mar 2015 10:07:32 +0100 (CET)
    5.14 -Received: from localhost (161.238.195.178.dynamic.wline.res.cust.swisscom.ch [178.195.238.161])
    5.15 -	by dragon.pibit.ch (Postfix) with ESMTPSA id 4742A171C055
    5.16 -	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:32 +0100 (CET)
    5.17 -Date: Sat, 28 Mar 2015 10:07:31 +0100
    5.18 -From: Volker Birk <vb@dingens.org>
    5.19 -To: Volker Birk <vb@dingens.org>
    5.20 -Subject: Dingens
    5.21 -Message-ID: <20150328090731.GI44028@dingens.org>
    5.22 +From: =?ISO-8859-1?Q?=22Eifler@dontpanic.ulm.ccc.de,
    5.23 +	_J=F6rg=22?= <eifler@gmx.net>
    5.24 +To: mail@ccc.de
    5.25  MIME-Version: 1.0
    5.26 -Content-Type: multipart/mixed; boundary="cEobB2knsyc5ebfU"
    5.27 -Content-Disposition: inline
    5.28 -X-PGP-Key: http://fdik.org/vb.key
    5.29 +Subject: =?ISO-8859-1?Q?elektronische_=DCbermittlung_von_Steuerdaten?=
    5.30 +Content-Type: text/plain; charset="iso-8859-1"
    5.31 +Content-Transfer-Encoding: 8bit
    5.32 +Status: RO
    5.33 +Content-Length: 1136
    5.34 +Lines: 29
    5.35  
    5.36 +ab dem 1.1.2005 ist es verbindlich vorgeschrieben, dass die monatlichen
    5.37 +Steueranmeldungen an das Finanzamt bzgl. Lohnsteuer und Umsatzsteuer 
    5.38 +elektronisch, d.h. in aller Regel ber das Internet, bermitteln werden
    5.39 +mssen. Ein Ausweichen auf die Papierform ist nur in Ausnahmefllen
    5.40 +zulssig. 
    5.41 +Gru und macht weiter
    5.42  
    5.43 ---cEobB2knsyc5ebfU
    5.44 -Content-Type: text/plain; charset=us-ascii
    5.45 -Content-Disposition: inline
    5.46 -
    5.47 -VB.
    5.48 --- 
    5.49 -Volker Birk
    5.50 -Oberer Graben 4, 8400 Winterthur, Schweiz
    5.51 -mailto:vb@dingens.org  http://fdik.org
    5.52 -
    5.53 ---cEobB2knsyc5ebfU
    5.54 -Content-Type: application/pdf
    5.55 -Content-Disposition: attachment; filename="pep_Dokument_Titel.pdf"
    5.56 -Content-Transfer-Encoding: base64
    5.57 -
    5.58 -JVBERi0xLjQNJeLjz9MNCjYgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMzAzNTQvTyA4L0Ug
    5.59 -MjcyNjEvTiAxL1QgMzAxMjAvSCBbIDU3NiAxNTldPj4NZW5kb2JqDSAgICAgICAgICAgICAg
    5.60 -ICAgICAgIA14cmVmDTYgMTQNMDAwMDAwMDAxNiAwMDAwMCBuDQowMDAwMDAwNzM1IDAwMDAw
    5.61 -IG4NCjAwMDAwMDA4NDggMDAwMDAgbg0KMDAwMDAwMTE3NiAwMDAwMCBuDQowMDAwMDA0NjUz
    5.62 -IDAwMDAwIG4NCjAwMDAwMDgwNzkgMDAwMDAgbg0KMDAwMDAxMTQzOCAwMDAwMCBuDQowMDAw
    5.63 -MDEzNzY0IDAwMDAwIG4NCjAwMDAwMTcyNDkgMDAwMDAgbg0KMDAwMDAyMDQ3NyAwMDAwMCBu
    5.64 -DQowMDAwMDIzNzc5IDAwMDAwIG4NCjAwMDAwMjcwMzcgMDAwMDAgbg0KMDAwMDAyNzE1MCAw
    5.65 -MDAwMCBuDQowMDAwMDAwNTc2IDAwMDAwIG4NCnRyYWlsZXINPDwvU2l6ZSAyMC9Sb290IDcg
    5.66 -MCBSL0luZm8gNSAwIFIvSURbPEM4MjAyNjM5QTk2NzQwODJCNDI1MjY5OEY2RDg5M0I4PjxB
    5.67 -Qzg4QjY2Qzk4MDA0RjgzOUQzRTVEQzI2MDg2NUNDMT5dL1ByZXYgMzAxMTI+Pg1zdGFydHhy
    5.68 -ZWYNMA0lJUVPRg0gICAgICAgICAgICAgICAgICAgICAgICANMTkgMCBvYmoNPDwvRmlsdGVy
    5.69 -L0ZsYXRlRGVjb2RlL0kgOTUvTCA3OS9MZW5ndGggNzYvUyAzNj4+c3RyZWFtDQpo3mJgYOBm
    5.70 -YGDayAAE6boMmICFgQOJxw3FDAz5DDy8c9XO22zoqtU7dKf8yAYmqBJGBobMe0AaxLcHYlYG
    5.71 -hhIfiDjDVoAAAwAUHgw/DWVuZHN0cmVhbQ1lbmRvYmoNNyAwIG9iag08PC9NZXRhZGF0YSA0
    5.72 -IDAgUi9QYWdlTGFiZWxzIDEgMCBSL1BhZ2VzIDMgMCBSL1R5cGUvQ2F0YWxvZy9WaWV3ZXJQ
    5.73 -cmVmZXJlbmNlczw8L0RpcmVjdGlvbi9MMlI+Pj4+DWVuZG9iag04IDAgb2JqDTw8L0FydEJv
    5.74 -eFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9CbGVlZEJveFswLjAgMC4wIDU5NS4yNzYgODQx
    5.75 -Ljg5XS9Db250ZW50c1s5IDAgUiAxMCAwIFIgMTEgMCBSIDEyIDAgUiAxMyAwIFIgMTQgMCBS
    5.76 -IDE1IDAgUiAxNiAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vTWVkaWFC
    5.77 -b3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vUGFyZW50IDMgMCBSL1Jlc291cmNlczw8L0V4
    5.78 -dEdTdGF0ZTw8L0dTMCAxNyAwIFIvR1MxIDE4IDAgUj4+Pj4vUm90YXRlIDAvVHJpbUJveFsw
    5.79 -LjAgMC4wIDU5NS4yNzYgODQxLjg5XS9UeXBlL1BhZ2U+Pg1lbmRvYmoNOSAwIG9iag08PC9G
    5.80 -aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM0MDg+PnN0cmVhbQ0KSIm0V02O5roN3H+n8AXa
    5.81 -kSiJkk6QRZBF8BY5wCAvA0x3gJfcH0hVUbI90/OSTYIG+nPZ+qHIYpFK5+j5SGcp8+CvuR3f
    5.82 -Xn/44y/p+Pu/Xunwnk8v9WizndbbkefZaj3++Td+m/nMfRwffM7p9JZ/Pq6kM8+qca3O0338
    5.83 -ZNyvr9/wPa0vfoyazzH55a/HP16/0Tr85WPa2Yvno890tm75+PKhefyfz9rK8ZbONNthOJoT
    5.84 -2KhHxZrHlxdQa0c7Ha/wPKcffk6fxxuOibXGmW1wHDaZ48ChWsWC7Uy5HzmfHRa9Daw1iYZr
    5.85 -LJ5KsetzLmcdTXMT5uYKeztWTlmD2znhcZiQGz762bCInbMuZBNn4bh4hl01V30qMHbZRZhL
    5.86 -Pt7qmZvtZZMsbY5hgI3r+znwnTZMr7R8GVHP0vvxNs88hixu8OgbTM7GX8PsITzSPmJr/JJj
    5.87 -XXwpaQjTCVi4z3xBTGgRCfoEhyhYV5Na4lnwzm5jGJJBy71VMDCBiTjmhAtTuMIMLxH4s2eS
    5.88 -jTjnTH/LwYAwGmew0YUKQggHpG7LkT6vF+/Ls4ptSX29qLk9X8B7hheG9y7vWZrcYSaXd6qD
    5.89 -DYhrF6cwsXvhDq3LFYgA44FBCEDtdSPxalk3QBXMa5MLmTjQyRqkFHz05VXl0X5OuKPhuZHC
    5.90 -Zaxn+iWe4M0JgmBvnr6cI3M82AqH9ly0kmOXt44R48AAEmHKWbGlwpwZCqSwaFiDXAUBmuIS
    5.91 -R4H18M7bfZSJEN8vtArjCOwiLr0X1Gu+SJdSvCmmcYVmMnDCYDjthAcgLN+lQLx5v9+YM/X5
    5.92 -ZnHjfvP1BYWZWBhZyGiVChXRYTqshJqsz6BdcbBpw3GW2v/D8EzSlXsCzM809/cmUBQmxw9E
    5.93 -dEif4ik0Cs9p+NKoAdchuZdGAYFNoVF4zvgJjerQSmy5NarD5FG2RnUoAiK7RKgjgZLdGuXz
    5.94 -HHXsr97h0EuhHByFBK909MZsCnlyUAeJG+pEAC0h89bj0iagTjkNacL81G5h4nK9b10CcspT
    5.95 -yBI2NubX3hlvU92iRBvtkiQfmFgeioQDebn0qON1t0t/cPoyH2rUkQo2thrBb0rjUCM4tYxx
    5.96 -GUHnm201QpQsX3K0I4nUg411XooEmPrWozYk8EuPgHjUS47grDrsVqPlykt76EzKx4VpyCVF
    5.97 -cNFam0oEpzDDLyGCF2owE3nZLUQtsrNjTPJbhzrNKluHcDDKzBKigdX9oUSDFcuWFA1a4EuL
    5.98 -FqBH1uNSIyBmw5KjwczOtyBhQfIlBAkg1UuR1t63JMG0Ybcmwe7stjWJLO/loUloVrrV6wUc
    5.99 -UswuSaK/+kORQLHM6hSCBE8PUSr0CIEYZg85uki/1Wi/uKRnseKpRb++/oK/dMTfNzwZjHbz
   5.100 -uwHi6DajA2IfRco9+q2hmP7X/ij9pI/706sefz5ebzhng+/20t2RUxSHa+lfZKPDsqdh/Dz+
   5.101 -Nztr5fy7O7eG94jX/2HrvfTPtv7Z9G+PTrNMCK6jSlQ2VyDp3Wmeycj7dzwZ6BndENKPNb01
   5.102 -viB5UN8rqYNMYmczIe+QTJYAWoIkKPH45WXq3gCAUEkSV3ArzDMyCrYjl9UUwOK3pORtUflA
   5.103 -eRxoAVOaszdIUcGdrW+fnYpcRz5I9clUNNUQJGhVl5KwfVHCs2XBD8odizVAWUcYfUMeVM1l
   5.104 -KjwkfcEVC01M+/Gdj0NCxTqNsf4Zw1sokoHZelDtVUoSYgavsvmmJeW4WlHsV31Bpljap/7Q
   5.105 -t6R20+T9NAWo/VSCSieYRadTWSHgk0pXN/ajSOfCffpQY82axoEU3DdKBuOTp5yXiiLJTioA
   5.106 -HdSHb8jTDM1ylk9rWj4UDbqs+uio6OizZ43QcJIPjSMPOa6HVck4cFAWcZau20JScJs8Ashm
   5.107 -nbLFsJFlLFjuNwhSXLAad9MsOLf6XpH1MrbWbll+WXagndFA2ZhVlDlQ9rN9KUccDP7L+8i8
   5.108 -oBUNkzvgdDQo4SfEg31x+DCASDbnhsvznDR3VJAUionixexilBVJZtfcUcY6XjRQDIBgN20p
   5.109 -cuDEzPrbLVCENBehPoiWrU5iDvXvD9iTLilovFD0xbKKfEcvLJJ5o1vQbBWOGkXXDJtMGTWF
   5.110 -sHlqr8njBqLt4ML7i41je8JedZmdIAeVSEfh9Qgty4xjmms7i2uV4QRT7VdWmiPbSrRpY+ig
   5.111 -dBij3HnTjeKFsusEHupRVKADupofFDokxvwOWrtTFzDaaXYEqGW8nSDLJp89X3n79cWupUV2
   5.112 -OrP1xjUuV3FT1M1KFw+I01Rq1RCHqg6cKJKm4KTsCzxSKChExVTqOcnGe66Suau90eUBidhn
   5.113 -DPWuqWzuMl+3K7lbXIGu7G7U7ftjb3WnN3uNZ37jjpKr7QwHMnBFSkNQ2CRVqRyGjohc4Hfi
   5.114 -nHpYdOSuto6dM+YAqVfGZtliF6/qpK2NsGGrM223+ZBupjphmerqRtZJctN9YIC9DHyWSxbO
   5.115 -alF45akify9qQbuJj9TfLy81uGQ57WBQwKMoYMuAVdrorb5KHmyoSowpwM6Ylx15uOsCxtzv
   5.116 -Ors2Tk3dAOsMk9/z8louygVqMm5Bpsaz9kA9utAZQ2vS+UqL2m8qKANqt1HQUQSFebrw6jLx
   5.117 -IaxrA1J8KJLhm8xO2qM+sk/1iEeyUKiuvnomHQD9Q/BFGqKSwv58KGNqVrTKuPRwhe4SRFJU
   5.118 -U3XTI5u1RxOwyLtlACLQ6mUe++jb9JVpcTAe1Shb9RK9BRHvyepsxpTktW9caBdcY0H6AdGi
   5.119 -cU/8ESKP214oamuBzgG1omRwkB9IIr3rLnB3u0qoSQSZf+CIFbRsj+QEbnd2AvVVmLkujh57
   5.120 -zukxVhjBZIdOyBC7VANoLMTqWaLYuXrS2EZJVnBk2gD5I2J5BomyhhbdLGAvOtVopVwn9boT
   5.121 -EojBvNLTkGw5vsIkoDR7iC0Qa4huo0O3U2NF1ckLHMyohS6OpLE1VCnVGWOFdzAyKkPQ7jt8
   5.122 -N1LW1IRenAh4cYL3v3GTIuDFAxRAnz/Cmwgx+hO+mNFVvjczuhR5M2NEW3oxg+l/EQNJXNpF
   5.123 -DFS48eDFUNA3L2bIxuIFK/Z88GLhzYsZSr14MXX52LyYURsuXnCbcRFj7NCLGCylD17A9jEv
   5.124 -XkDY8sUEnHqUR8cNnLxcvEA1XXqfhWw8aOFRMBctmtqxTYsI402Lha9QoCqW9gnftChY1W+p
   5.125 -KNDpdge+IIHYHODUgz1/yWp0bmzR77kuHMDo8Nu9PD4Xs+dq0QKz3gesfuOvrwoJKbwiDZS0
   5.126 -j1el6/uC7xsaCQJUJTDfI94wmsfYnu0zhkaCLPf4HzF/aGoFC2r5jHeXtCy98NdXQ0BcrTkc
   5.127 -9EHoI6oRmsDGBqYFqkRWoo1PbMiAWVg1145GhVPvPpHgQA3dJnIpGVkPbHHvSXBK46VON4cM
   5.128 -jjZTnwDtEhcag9PjJjH5scfQjvU2qupyY2xgtthAarKoa1xUmcTuUvvndWUCMYBI9ZWDQD7L
   5.129 -naGNXd/9FacOqjK1W93NUvRVjZ6eu6+i96LrqjwlNs9xveseY3ukQHJ9HUttitYVqXBodeHE
   5.130 -/6a6SpIcAWHYV/oJbDb4T/3/82iBpOeSigpCwJZlOW5QdIejxQ5v8F/GsLO7ItFiD9lHfGyP
   5.131 -fvC9uzdP/iP897SBUR8HXkWtpd0D4GXZ/g9BHYou7b2ifE3zVuzGlHPS9zofT8X3ISt3iWWv
   5.132 -GgKRAUpCTGUKWhaeNiEzAEtjFZUyUraL1/W+0yTX9HJEJeY3CO4XpYznw6E56Ze4hlK6t35b
   5.133 -oXJvU7+tGldU8dOwV78aS9il3bSDQOQr7e75A4Y0n9g9nfhXtdPUixt3IzbNqmo27v2V0Rie
   5.134 -CS2jjH35ChA5psm2ghMR9nLmVLsNXAzI/CsyDCDEahaXtl7MtGuruMkRMyhnqsjTp/ceQQ5K
   5.135 -/I8u27m67tNsQlmeIooMIP2OmDK2ZGBvoZVClyv9TW3TBKwmsg7X8rBgtL0dhezygxIbaENK
   5.136 -6za49wQEaNQTG9E8MTZSmJZWc9erCGxttyYNmzTwwsZPleB5hjjurAXS+z5MoG0v2gRLu6sn
   5.137 -iago/CM2crTR3iGqduukSAOUrorxQdKT0Kl9ixZzSeEnAsNiMscjrkypmJE53oAaptWCQHKt
   5.138 -71fo9Ms5lC7NHOyCwLOW3ff+ARp162cQdV84JtOfyMxSWOgwgLalgeqWXfp1EfYydldGcG6T
   5.139 -46TpM3Cs291p2BF6gKQpAl/QKIG2UzbVEXhoKKEceJInaG80oX5EjMjty4Zx4kV4Sgv3wCSI
   5.140 -rWNKOcxpq4rnQs6S7ljMZdDzThygXTLaiZxaSXGo2wYrgBEA2pLurpFNq+ozAQIDrVSnOYgl
   5.141 -0DjSmq6WkJw6JROLT5lKBlBC4YCWW81ZygI61hiv8pmjmU8lmIW5vprBcFpeiKNQWfZ7bLdw
   5.142 -hnbk1oFD9adiUHvgRrvuXhQFzqJC/fhQTZdUDBoO4tDycs6W3pn6nmXHW/c6xx22QpelY1HP
   5.143 -9NUzHlL+dvbP6rBvYEddevS5wRwOyb0gOzsp7lDTDHzRWFTgn38CDAC5cXuEDWVuZHN0cmVh
   5.144 -bQ1lbmRvYmoNMTAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzMzU2Pj5z
   5.145 -dHJlYW0NCkiJZFdLbmy7DZz3KnoDboj6kNIaggyCDLIAI8EF4hvgZf+DVBUluf0ysbuOKInf
   5.146 -IuX11X0+P/rLSjwdyIDaa81K1BJNiHw+gKs14vDG1TKFPObT7bWqZN06Ze01cARwj8rVOrXa
   5.147 -sAWodBfqQdnyirKIq/cnUJuDyMKISki2uEN2rFfE86O+VvQnQF+daI5GVPskilJTtBTJjo7V
   5.148 -+Zo2iFqrRB7aWUKy8zWovr1mNa72MYj6qm+oQC/JClPrydUxgqhNIWpbXlZ7iq7Rn4Bd+tma
   5.149 -AM0tVTeAUVe6wKBWgSFOmyPWE/fJc731/K0IGDTKFVjdBrcgbnAlQoLT5E8EbHGlAjoiu6hR
   5.150 -nU5Q+5IpgxH99QioA4fiFNjy+xFwT9QNvx5O/RFF+A6mA/trNXvD8YqF8/xVq+THy3x+bw84
   5.151 -e7yfNltjrpU+NvZvCGVW3k5F8BMnF3zHz7GoYsMpADMtRQgmvLbo3ugGawCHUflVg2tzbFdN
   5.152 -pB9iv504kcYhxCUkluz32ggc4Wf4jJGeXYH7KMovoF4anRcWFzHbPGWFcUTnovmiaX0aj42C
   5.153 -Y4e8BFEkuslrBTugTmdKO/Z3qtqjCbVj01gHy3rJFmTL9hHPbVR3u2/jr4sRRKgIzHD4/2Nc
   5.154 -sdrGNU72EhUGr8EFABUGZSTzpuo3sDdy2xsZPpc3apWiHbVM4qgKoSOecE6tlodNMzkLeQC0
   5.155 -4EEgR64wwkMoZk93UB3gNbQ6Qo4tLSNOcxJB1rB33lU4tuqW5coIrzqXV0t2QlHeCjOBlnuG
   5.156 -LxigkjpU3/ljqWFB7TKbcDxtAw0qt2T3kKOIk9lQxAJL5IXTv9FOoIt7jefeiKu631Oh5NFA
   5.157 -d4JjwQZHH4Nr/GoL4+u2TLbAOQjysRMlY9cJ9GJL0Z7p35WI8h75oV/fJsq0DHtbbVknHexy
   5.158 -YoaayugqnixSZYJizRpdNxNwlbeUVZ5AL9DgyaGqRvAzw6ABqGfaJS7AKbu6M5UJu7/hqTZS
   5.159 -1LIAmmiDNA5AwvIhZ6GFFOV1QyyhnahmodxXkRb0IuQ2ohlIly/tm/EDk0GImUAoONhO1m2L
   5.160 -KBgQBkiGoIGEcIUlQL0q1K1KthUFs8+ZsmbCk/GDUVVNjNxO1JKQWktZYRfZQCeQBl1/8Xit
   5.161 -Fd/VTzyzU9B4ICcvVqoB0Nqt/l+Phfz2eza7KJIjoE08//vPs3pCA+hgK44L6sbm4N4Js1KU
   5.162 -a2xYRlHUef3e6DCzX5ZZDFsOJ6Ml7nW84aWp5Yhb4Ujyth3JxV527F+gNG4/+Bd2eLqkKuS/
   5.163 -9WEq5yYqk8itJeyCLWeIVehwfrDE6EJWhmiWcHRBTw6klyg9QOkijgLbCWsXc3BIICx7YupL
   5.164 -4l3WiFmoC5grxYPjwYHkpLrF94dWc301jXnDUxmrgizKVKYVNazVltY5M23qJJzNvplVltrb
   5.165 -OjzRL7cSDmvf5CrHRRx2JYxsjjLc1ahJr+FbWkMGbPFcX6Ewz5aHr5l+mOuIr3amyRtD+BF1
   5.166 -9KeQUhxcrOKbpgizF4vmgtJNQ8ZHzmiEnF4/OIP2vdk10NTStTwHOYEzM11MxkU5+QmYL7XM
   5.167 -SI82TEamniH/IQv2QJIuWHcx4L61Z0ErKHlR0pAkamByrVnTmmvgKbIcxBIinbZFV1d9e+c5
   5.168 -K+mAU2x/hzyB4vsDsrJn+Sz5Hx8i9v7VcvTI/ZYEkLs5LNSNv4Tr0GmT8yph1aQy5juqs+/d
   5.169 -tdTz4UsOiZ6XaYPLQg5BO3ltfI9I9HR3MVuvVWFR/rjGIMLBOh/izAyiya7BmbCwmlUKS9kI
   5.170 -OJWcbMaUvh/I+ISrKJWLyrAmtSMTrG3xFZHvoNDlRbnbLTUzt1PjOxk9s3NmQvV8o0Qk9CJ4
   5.171 -UqrluM0hvSnjSk/+35TQ9pMmtlsi3y3JXnDb0uwfs20+UiVEXW/shYSY6XK93wBjfZeRaZL9
   5.172 -fLx9KG3ukO12Mj3lm3LRI6twWrbnOAQSPXN1jmTWRJbSI+fQOuaW7iUH083DSq6iIVvZ4Rcm
   5.173 -mUXWtEVSaQ81tlY8KzHrYozDfbWomYd0gZ9a9vK1YXqRjMHmhw6M4OaYAm7+nR9qDmBQH2j0
   5.174 -dM1I2JbU46PuU9LssFSAvGHtDGiNcQEccecuijeR0f5AaHkcJxtCcpOqXIEx9htZi/ARzci3
   5.175 -a0tUpWjVq5cfolo+e13rmY2VqX6Rn4OZCkxOxEpwZXuLhFFz4L96RNfoO/KsWPkCOGp1FVXR
   5.176 -i1Val5rtKrS+ZrarMdLmLLrdrizfFadd0UXzTvqEzqnptiu6eGW7qlMRqTnATzZDwG5SZvS+
   5.177 -A8SBmBxABmZ0OUsyTpYw+7aPjCfHgnk+fOnDQPGTSie1I9MkPVnb2tU3+oKxY63zADSz7Nwc
   5.178 -16pga6KvOtQCrJynCi8hHC7t3N/gGZPvB9a5P+/uoofkPb1oHqB43o50svU8qiF7Sr2an65F
   5.179 -v2nNTEZWY2eMqEKhcbvlZASPtEx5kwu3x4pY4cKsJ5VYrWLnMwniPfoa9j3aVdy6+JCdc8jj
   5.180 -7FV/+rBaZD/SDgtV/z3B+NRobyei3COHjj7Oh3yl5odfj389/vbg0+YJC57l+ZfHH/pf8LdV
   5.181 -10ONUwS89/n7we/82yb84tj/d+x+34CHEOsHKc23yN3BCsmHaSm89iPQ8zCH7xP+pEF//vX5
   5.182 -41Q+HrG9oTA6K+scm6eeQ3+e+YdkxhoawGZnv+Bs/o/nf95v+/f7RR0ONyRQ5eMM/nmzGEGv
   5.183 -HMfJOYvDiajb9EZFLpZ2AFLPWZ4bhpJA+yYOQLxG9j7+5rREbkHbdPHy5+PC4MTxkfzjIiVB
   5.184 -g1s9e1xVcFyjzgZDBPP52DB1+Tpw61n3a1AW5HVp3b29KDNwMryLrXgF/b6I09/XY2iE/Ikw
   5.185 -4E26qIuWDkKMEDIohkyn2e3JmUN+ghQim+PLRryLJ3DS/olM9H1QUfPjhDS2JRgyNKemIRtB
   5.186 -HvzDeH3/2oEEfZ0wpvpsPed3XvZ5zUxFfl3FaPbvB726rhM4MxmTEfzX1ICGhqsuvuTYRhbI
   5.187 -ExLpdYaJc04l2fmJcYGG2kS4mFxqoHgVFq6RXTcwTYKfjw2bOv/XgXxzQiaQdtSk4ZUKRiKR
   5.188 -JMA+EDr0v2u10Xw+12xockNjCV2AoWqyziayEKA1Vrhz8O9KuC6OhyBb2eQ+tjsOBO0czzYS
   5.189 -31cjz+KusS1SLbYC9ePKI1wci6EQ6Y2rm9ZK522uCQO9l3r0kf1GEAFTdAGr0zbTVLgvl1ps
   5.190 -CkydlZPtRj7Ej+wj45mjDoFn/PwABNZyGhNkCPre53ozDU64SPm2A7fUXjOmn4+NxMQ3L8/P
   5.191 -E3fD0HDjbqLyfXCCvFQmTwW6DM9jzAkb2zvcmFGa9D0aRf6W6zmk5EpX5+rKuw1avrMSZIp9
   5.192 -HQg1mB1dI+BWkG/LdQ08kHv4NPEfP/9HdZVk1w3DsH1O0Qukz5ql82Sb+68LgKC+u4oRf9vi
   5.193 -ABLICIe2h1+AGjnCkQCfjbcFvJ2dkPoX1US9oV64a9mp1ZnQY6OqK3u2coRLrfJJBObvar6z
   5.194 -tDc7vYKv0aHbPyPEkTTODE1EjPNeMhBMyNY+mTAUy6sWi1iel85F3aBT9SsAapt+uUGy3DBz
   5.195 -YRgsr0saI+iEpb1Ku1QDbGt97j2zm+V1SKgkyysFXTXLAbi9guWQKbvMy3KqljVNJ4Bn5oCp
   5.196 -GLuvAVMpcO+96q+R5RRCl+Pctt0UhwRipwTFAab2e1DcMCkutTRNceia+LIoDpqNdSmeKChe
   5.197 -OQyaKU6wjylukBQ3TIobBhMBxr6FP2jIFwUM+QymV31fZdExrD5FL6KqXxwgKW6YFAc8mnmk
   5.198 -OFXRdGdXLp+enY28z+U+x/VRhKS4QVDcICluGBQH2Dc+lhGrIeNLyGcgiDmqXpcZISrRc4hV
   5.199 -VmKa4gZJccPb1gmX2u5Q9YniBJfgeDszIIK7iyNYLLFXGhaEYfEdCuUSBPd1EtwwCW5oDmJG
   5.200 -zJNhYHy8ZnnCq6L/F5KtYCLth820X0L4UdNyQ0wZh6FUVHndSqOE7mSI3498F7faCWnJGXSa
   5.201 -bO0q0yAkm2Sn7rHOLNXpO4FfjF8al7/DDld/ygxJuCVL5wnt2kIcPvSzOEoX6vOD2ITLB+2y
   5.202 -hdz2POkWWrQZWNjhYIl01lb7vdvkVGn5QF16A0pj/HO0OG2nWm2yPL/ELSKkgGIsS/5x9HgW
   5.203 -cvD9HdketMbQdxb2KxAFGsM4MqrUEvptOTKmpUlHc6faYX1TfcxEipWzwRiN4MBDeEaOuOB/
   5.204 -vgyxhYsqsE5RNtDk8qzyhWPV0Opzycryw6gmwmdSKfED3QIm3CNOyv2GVdf58Km+1jE3kuNb
   5.205 -GFWTD9FCfPtcj/YlPSm20ZYn6MgyVf7TVsLfD1xTBqsW/XajgQCiwgfBGESif74MuTZaPHeU
   5.206 -KHCCrocBDpEHrqcIDI3qqTXGMkKEIclLT+2Hq23Pk4DynuPCkK6i5McNkOqppSYYPGtaLUWb
   5.207 -ZxWlC7/480+AAQDBlngrDWVuZHN0cmVhbQ1lbmRvYmoNMTEgMCBvYmoNPDwvRmlsdGVyL0Zs
   5.208 -YXRlRGVjb2RlL0xlbmd0aCAzMjg5Pj5zdHJlYW0NCkiJbJdJkhu5EkT3PAUvoDQgAuMx+gw0
   5.209 -+1YLcvHvv2l3DwBJtWRaFJ+QAGJCDO0a1Z/5qs9+9VbwK6fyHFeq9vyVLm/P12NcPjrJxni+
   5.210 -gTbtma6qD82Nmxp/59l41CjY1K+RudLaeLZrjInf0/OzXmP6+v16+FXLgnx5mjy2t/X7l12G
   5.211 -P6/HwoKj69Ov1CFbu8wGTuv5wOvRrtZ9Y79abc9f9ZqtQjifk9BxhFSyTiwtcy1XQup9Q8Hm
   5.212 -Hh8S/WowxXujXRMXAJoTBnScVxqCTpP9PDJkmZmypDKen8OQwCpOyvWqIVErUB4UAtVSD0GI
   5.213 -QSsthml75taiG2kV/GeB8Wm91GFih5oOI85C4Q82WOxNnI0mbmXEMWV2ohUew5th/nYAHk9U
   5.214 -ZmOI8z68hMUxox5F4sql5hFhmeENw5hvk0647vPFXia+MINC/gdDeafdDCE1yo3pKviMokKX
   5.215 -POF5nJWvgTjICOOhk2uXOQ7zZh1l6S9crt7bF0NPmA2Ua9964t6cv/TcvPWEVnn8hbf7oZXl
   5.216 -fE5bOuOmcVPI8fqySMj58yU5bfShZgPHHJvBDs0VjSl3ylooW4JVuvTAJZB3MrbWUYE6G2Fd
   5.217 -ZcMyGLibERqFXxgSxVRy6LRKv7Jl0oTFDUGOC7E3VUl+2EuJvY5g5dmFWwufNaDdBLsU5o/N
   5.218 -eMVtxlbx0JPlQSmTquta/gG1VOPaxXym2DsvhyX/wvz+TRWL6+wKXbbC66ZFHeozxWxGWokg
   5.219 -waYc77zx44GwBOTxxC0ZkUqAvZDrYDGoxp3InA6n4jXTyTDrpkgs+HZxxurTYb5BEzfIg1MY
   5.220 -UYte1IXHLQY1aoarTFQEDI7Xb74dkEy+bV0uaHQIBGZq1XWAyvQpkPDF95oz4SsN5vMboae8
   5.221 -v3nphW0MlipLU55RNkn21OtZhTBZGZHRets5e5fwDhPXyJiIqc/DYciqJ+TyojO56xE5qg2o
   5.222 -psioSWQ3QcoCq92rJXyInXZTgQA9vhXjoSiN8p5Zf+PpMmLGgyF1PZeJhw4aTbVzSON9VvB7
   5.223 -M9BnoBcm7IH3DkTmanybSXl/4b0ZpXC962BDagxBqgV371+Crv3/Zbiq1S9mUfUnaN7hC8k6
   5.224 -lTzBjBqEGrNXUTvXKuKIxi6R+zyK4f8e/zz+/4Se+IegqBA8wfwTjUHH39fnwZXPg7UUTk8Q
   5.225 -Zv1kD6JEr1wWHMbvTarXML1qK9IOT3soniNYV3SnHkHvh/DSxv6W7OhL6ILNcNxQhFNLZBvT
   5.226 -J70uwEZEC/LWWoPm8cdyO1TQMTk/XYyihdPeh/E4Wt922prBlGNsvXUNWSZhh1W+f97W6TC5
   5.227 -zihZSTPXfM5fFLe/HpvLlmYxn5NUGFkpbAQlNHW/mHxLSFPRevxid6cjBhNGR8irP8thHxK+
   5.228 -ZUrws2qowhKtm8yfbIlm4QV3ZdHwW87q3Mr5zWD0+FAc7nsfPs5NMxzfThnin6K9eJNTRqph
   5.229 -nR49Ljam2+A/D+nbJwtrqK62l2lG7i64r6pK0fdtbEDRkS4L4Xy5ZqHrEaOFKkqcBZUcTeXs
   5.230 -G9gLs3ifteRaYxLGO1Zn2ZXwaRVT9UF0umyTK3vmMQWuR7fQVOnebKGbDm+QPhJG9Kro6m3u
   5.231 -Jvb1WOh6yO9HtAxAQ6izrdSa758FRS92CcMC741dVT+p+V8RxFTm26bct7Dr7VkUrz8wHIAx
   5.232 -IUKPDljqhQMWbAccS3RXw3JZFfJpQGeTNzIqtO8uivB6QJs0N8J9U5o31JwF7HS7PhQ21bb3
   5.233 -RiUC/M6+hUQ+TfXW9mCo94MZaUYDxGj9cLBaFbdxDqkKZLb18RvxWmN2WbMZlFxbkvIJjotW
   5.234 -LCtBoWOZ/V7TCBW7DsSBC+OutSuE+E3A1wNtU7b7cRwsay6s5TyQoc4jIiB+wztqbYIQl9qE
   5.235 -G6JRbYiOvoMUbm8QTlE/1Eku3HGJS+64hMg5BoZsG8rqQBfG5e+NIRcOsbkFXqPj9tXB7SvM
   5.236 -YLx6vcgPB5sU/Sr5/cUsW+I2pRmbA1CPLokjm2uQZWyVtmYkUzYthsjmjmhNEK+gmhVrNTMB
   5.237 -Z84CQ00QRi/OQkOdCspfztHVutIbPs3RfzKV6FtL48iTZdclrb5dHNrAtbP/BZdu7EGVQNiA
   5.238 -gXIMH7qHJajH6+PByAUSN5vx1hpVslBe1IBVPTw083hG05c9azQYSN7bmsifTTNvGnqpva0B
   5.239 -tUQEpKJVtvFb0+O30PSHw1FBMKyY0PA04zlPZM48NOewMmGVI2M7hJtQZ+1eRbmPFqkwATf1
   5.240 -VSyKZvFtT9HhoyxyNA1qVcR0SMqslRzYtLUixxPk1QJ3HrBI64EIfMQlx75+KgjuGyPf9YSy
   5.241 -1nsVER3+7/RS22XVlNFgpWYKyYGynNkIqzGsdR5iX72+FTeNMzxpKC1P+onjWt30om1Vx9Yq
   5.242 -5I1V9gBLZxwzwi9MPb49Jb9YPQzigMM0jqxOWgVIz/xmQ3qnD7vytU15VENnkOzSou11GS2F
   5.243 -I9xlJI/GzZVCM5+dOj+nIfDtiaTfpUVZNrUyfNTDOFot3gXYcsiETIfIMfYkkeoQMpY0ap4i
   5.244 -vNmVurU3F3nHYu8qW8YeYNEuxZt3Ld4cKY8nRfwy5+Ee7/1OejevAuzRYPzJkfGho60KwNOW
   5.245 -xuumRbsoby4a67S3RAQ29F8gRbXj5fCWZXS9I7A6r7NaSnyLbhnU4pTaa3yrjBipFdSjE2h1
   5.246 -kKaOqZNPzkpkUlcyMkaDVq1+U8o5vhVH9wBSwx4Pi1fauJ+dMXHZWUUKjR4thZq5tx0kDHqM
   5.247 -ubaHjw8ptyOj8fHopEEJu/KTWjipijAeSsK4zXrE+LoUzXubXyJhomvlrNbI3jTz/KJZZ3wr
   5.248 -LmqoQYOKo4lFb4BzVeLrLYLism4By1StRft0Q08jPhV3RQwoDQVlhS9xbAxSBEkw7awx6+Q9
   5.249 -joByU3CnFm4ZNW5UqB9kyIFmpG62iFutLnfoEovVDlWoZgQy05RxCil3EqNxx0lq8EqJQcDH
   5.250 -ARYCyb4YowusaXw4rpEO+Y5eWTUsMgaSTbyIwtUas1TRMLaJ4Z1D3MU5BMzR3PchahFwfSxx
   5.251 -reSz2nfetCYaUTmnhomfh6+xDyEHJ3we3nYlcJQ276pIrKXsZxdlVTQ0tIfNnKseU23Dy8Q5
   5.252 -ajFLYs1wFlsx5Qcl1ML0xOX8g3X0AugaONqun2e0dc46fR/leEgUD4SA3JRBEmhxUyv4PqzW
   5.253 -nAfVaP4QX56jW0ZcNjZWN0euc9Zi++J61YPOC3QUXUlVzy2ySosuZyKKHI+4H5E24bCwy2Lk
   5.254 -FyrXdyfVqdztGSWsH8qUPGqgetDNSOrJQ2YxGnueVtTQc9zFFSDVaVBilDivFLOebm1hdMQM
   5.255 -aNwk7yWqu1bxPNrct9401clshrGRFalDdIOUmLdEPi6q2t8ajRoK1WhZh1yPeyPXD1lZoRvN
   5.256 -7ib2LSvAxPiDBCuBbb1R5/Mb2+/S3NoJgyVAV+LdBGdJvHLaYibOz6PAss03O1o6mzF45ENI
   5.257 -LJNPazPfU3n+y3e15bgNw8B/n8IXCCBboh7HKPrRAwTtzyYLtPf/6MxQlL0oUCyQzcQmTZPU
   5.258 -cAjL8ziCQ8JvMEzJwU66WsQeQOlcAC/hu+fE3hUwzK7EGdDXcJ8Mv/nI6IkLZiElBAxTTsUL
   5.259 -gW61PARGE6NiNMyLk+F2uORzwgZOaRE43jQXsXA5FwAXq98D+44CNMa5AvoSLe7FOWp2rZsX
   5.260 -dvVRqpxO9QHUPcFUH4FCfUycJFllSpoGU+3FxI+IawhQriZNe1gF5Lh/EYrOgVlRczGbOIsu
   5.261 -wPaTZa83FRZ4Rme+zc7ITWy4VNiFY/c0ylw1BI/we7McmTjkHficTYy3Mg4JeU/lQirHc5sw
   5.262 -EmEorBJhcGyoK2kZuRGgvIxULMiEyE5MxVTkHUi7TVKYF+pqpcCnxMOLrkSXp4ScURevngUq
   5.263 -6SamytCoif7uTrvgR3BNoNhLAjcpYVhqNvmRsuSbZxw44NrWATTd13E7n1+9tYfdYnd6eN0w
   5.264 -7YT7kJ8K9jHqzSky4HVVrXTfPMNaK89biThynDE+ukeN7XDmc6R4zwULl0c/YTg9gdA1NXvK
   5.265 -hCmX9eLM3FxTgEZdK4yqWq6LMxxyUVtVBFfXpuh/bd/w93vnxE74LFjg7GyZzHfwDd8bL7y3
   5.266 -x9GwgGFScJx/p40uIKPqoU6aGvufn9uP/fPmrx3YPhBAB9vYgOhbDtP+6JDODGs6XEZo5CzK
   5.267 -ZP3KZdKSspD+MSgwwBpQCoVWullwg8KilCXxX/gRdVsPvHuoqEJm/7F1KU2WC/fwuFw87j7+
   5.268 -lwXoIqyUesTH7VHQsGfH6lKgXZqlcYsWB7Nq0pv+2eHsQx7GYK450HNjCVMN/Noo3zBY0Apd
   5.269 -MPmyASMdWspzXx/0Paspntv+V4ABAMjGeEoNZW5kc3RyZWFtDWVuZG9iag0xMiAwIG9iag08
   5.270 -PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIyNTY+PnN0cmVhbQ0KSInsV0uOXDkO3Ocp
   5.271 -8gL1IJL6HmMwizlAYRoGJj1A9/0XE0FSyvSgbPTSi4SBsiL1RIpfBT/KJXpvlwy7f8hVxgJY
   5.272 -9f6hl1iL9ecNaJrkjl22uNN1EoxGoGb8rl7V1r1e2uX+IJRRAYs6tGt2A6xzuZhGZWKD2lrV
   5.273 -BBAjV2917wlu2HGq1bWBAUh8SIjTxffmtLtcTf3+HTvl6tb5oV2qkFWu0ql6rkkwKr6EZNdS
   5.274 -S5oQsMMVuDNOzPrEIQBqK2SLC+lwYLkMegCkTAj5doN63LBeC5Z/vzW4ZSR6AI06Yd0ogfro
   5.275 -RKsD6aVQv5FcA65S9wP3Sm9AWvm3QZZeNga8UbTl+vNWcRVLBI1T4JGukutyNcjgV0QfcW9E
   5.276 -ZLjNClPsqu2ATygdEJ5QPc44NRF72SLoYPi+O2ilYmdACYF0am/j+VlT3xmKjSq+MQe/qsU3
   5.277 -1orvjLLdz9iqvlbjd21ltKp/N+LmbdAbGoem0gHTbIPPG6zqkSJCV2ike10ro0LNg/YiHE3d
   5.278 -MYMJueZkcGWvUSKe6YEQEWG0FOlnzAxDMC2W1Gk1f4cXJ0M0Ow+ZMqgMP1NF5jWpMlLs+ws2
   5.279 -fP0gFizoAPgGqAzfVSTRRgU+cn8Ehpm4xmNDXAEXkYHCawADOSrd6ykAznXE1/YejGOJ9cpl
   5.280 -hxqWvIelwSRChdlCgxbyU6r7LDIFHyGdPI9ovbDWxhaM3+DroxTH7eyxYlwts0E9L/H5dKuQ
   5.281 -aoNQGvYQc09F9CKsqzvXQxfIvKphOyJqNMkzsqRmXn+hurihjacCqWvwU9VLjpECaF5Zs7yA
   5.282 -SLyyM7lubS3rRF2d53aEbKH+2o4nFSaMjgJbadYXOMOP5H4JP2zM8Gs96IQ/cBS/H51G2AHp
   5.283 -U2YCsk6YjpIAp+AjOXsImJvJlpogGoh/OH8wOnGWJjz/NJrBjSILq584zWxIwC9gGl3Ry4+o
   5.284 -6gHeNifCJUJw4JPyAeFEGgPQs2txbf20SSiU5UmLvnXS3D3Q0fJfvNPhxLH3hvdihe4DYAJc
   5.285 -hQ8DsnVE8x77/fJKHRDQjkmot+hj6Z2Dwx14QOYVUY+mcGD4R4c3ypRGtPXEeieEo+0aB9EL
   5.286 -sLRT79rzGYmyBCx1V6niKdKZ3QCgeh1GN1DShp7dQKs/CtERlG/8aQhAiFv0AzX/MYWjol+a
   5.287 -kKq/G7mnqYv9AEB6Pf1AYVGp2Q8AkDneDrBU78rRDxLuhqDlCoE4inVoZj+Q5fm9G0LC3RGU
   5.288 -7X/s3g3QLDvCAd4REp3i2DiyFojP9g7/wiP7WhwHR/iVb2v9Cmf4xUOwww909Pj6hJ9odwOA
   5.289 -3rMZ0KG6Ex6gl3kSXumVnf8A3W1kO0iw20HCp8WJox0oSdqxWOkyeVr8xGlh840vcFpcPSu2
   5.290 -NLw4x2Jf727g6CQ8QXQCLJunBlsBAdM5WwF0ld0JToq78XgIXx3T4cC29/q1nI2xEyTYnSDh
   5.291 -6QQbZ4X2TU3clI5IvLwOT7w7wR+3f9z+vIO64R84OGurINlnRVDIwD6/37jFvx9TmY2M9j//
   5.292 -7xRqtdq81zrgnPo8NIoT35JHfjy0cGjyEIg8y+acAktmN2MxM/LlDm7xVOsftQVeBFfOinCs
   5.293 -+1//vv3r/t9X6YuFC35Xm5O68ZQewj+e0j9exaN04WqX859XeRUtcqGCqyGUTNfnbREIz5HR
   5.294 -etBSDw57CClm1418UKilb/zghDHoHq8/HwfackYebNeJyOwr13Yt8SHiV1NV/elUVX8xVc1f
   5.295 -TlX6OlXN91T1nqreU9VvOFUVec9V77nqPVe956r3XPWeq95z1W80Vwn62GKzmgX9ZckPc5UZ
   5.296 -974YkUTYP/D+gwDhFHj4c+iI8SUnJXDemGH2oPX3hiQR2oZnGa2SI1h7yg/xW/qPwn8yIqFt
   5.297 -wkWo7YlI2Vj6aiNfcouJpyxy71piTOgk5a3YBvRozhOEA1R9xTmSQjTA5oNCw2iDO3M+QAcA
   5.298 -JUSwVsupwSGayYND0MAxpICHlBMSvgLkWwQA5tF9GEgQFNGHJ8K4zGPDvCjSsfRtQqgL8472
   5.299 -4imAjrycS/tb0PwhA73Bh3g2ndfP0chlzXJN6t7nSvTgXOAsp3fzqaM6KZvmA9+IAWvkGjJX
   5.300 -kGGi7ny0OdcNHzLJJNfkuYrcDhS0Fq4tbJjsInCmDxIxB/gIycGGpBtmxMhjdKs4Nx54MKFQ
   5.301 -vE83yzUHlurCiJj/DIvqzDVyU2Oq6WT0Mjn7BKPVwr9k/7iPhF9m55sY9xX4gUSx3WM4KZ7m
   5.302 -e1Sh9+F7jni+4nuD0Jmr97mldF64GgkIpxBS+hmTCJ+YinCh8pB+Cee1GpNWcGKvW+O5jXiX
   5.303 -OMI+yhPqUxzXn6gf0ulAw9tNnNjrkLURtcSJo/7laskXPak5ecBn7tgeNKpNRjLZWCtE1XMJ
   5.304 -pwpS68CSzyeD4zAY/wqCykcQ1R/MfbaRwNmk9Lb3eJyhsr3kpGtJOoWPjlXfM7esdqeYOjdw
   5.305 -Y1obe4+hYTgnHMIruYgyVnD3vggF9ydxd48KKiPZ/8uH5hJXW9zT6gVV/EM17vRp8SHTLVKD
   5.306 -YBDUGhJ1eVq1VB2RQYWwFYvtaIj46/KMDRK2RKyYXXBWoT0ynJaPRg2jjBy4pvc7CiUPw3ot
   5.307 -yTWqSiQ+mxzLelBqcjxS4kU/smMHcMUyzx4LZWR74IU7d8zd842MskMzG/NeosrEuSaXcA7f
   5.308 -vsLfq8kGTN+W76TzuNY0n8nCp4KMk6RU2DEM1Uw2MCVBPNigFrnHi7JBMV2CeGJ7JPEU9oi5
   5.309 -nI5wFgIj6E486TF8HNQNfQI+Jw1wajR0beEcxuypGLNnP3sSurQ1rtnAIKFbcEESxMpXjNSv
   5.310 -VSrzjoNMWLxG9UJNiH7sbxp4IBkweDVjuFJ3UQRs+tTIFu+x3LC3Fuc43maUlmctPXEAR7MV
   5.311 -RJMw+sdjQwQHYgAiwRk2KKi+Y5L6HAav5cv2utwxh5wddfwXUW9tg93CEkbd+yk2OyRVkHmJ
   5.312 -KE2uu1isnTBabbmj/powugewc3ze7v8TYAB5DXT9DWVuZHN0cmVhbQ1lbmRvYmoNMTMgMCBv
   5.313 -YmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNDE1Pj5zdHJlYW0NCkiJbFdJjmy5
   5.314 -DdznKfIC9SyJ1MAT9LrRRyi4+wOuWti+P+CIoPQyC23Uol6kKIlDcFBr1+jzWa9m/fn1aAnL
   5.315 -5W5PgO4BYAugXqt0glqfn48Duccvm+3Hp4QA7Zq1nQPsGsV5dO8H4No8LaFdvbfcl3AuSvZo
   5.316 -+A6cRDDW06/SB7fhozmg+xPfzhUs4zOq5TeE+jVG7JV+hb6rn2+72tpihNAIun4dCG2tUnTZ
   5.317 -PHb0q7Z4OWJD7Pn1sHl1Gvz8vj+3K2xcq50jACaOzcM3yAh8PjY8rtjQr9kWRStM7ThkPq1f
   5.318 -rcQG2OfXguv3msNP+G6IIr6tLIAye8qVQketGE+DowddA9/g26Aw3AjXQ86wgecVqG1gAmix
   5.319 -D69XrPq6uCJA47WWlzUE2coVWinDKFiuYbxtmdbIFFxdgyBv7jXlKi/2pkCE4g8vL8R/7atL
   5.320 -GwTeGeYwBeLA0Xvuq85Qd59PgtV5w7oBuRncl5D+971v9UPTgBPuwC9w4y0DNmSQyrXq+PF5
   5.321 -wl6uhsDtsMMwa/voDfLaNNraZrb2eRAaIP04ksDwr/thNqJS5+Y5vl0W1nUDBDSlfNtHv2yY
   5.322 -GQ5gt304e1i77TuQe/x6/zi2gaN+9hq4fJuW4CT3hjejD5zinJ/cJv9kZuY24Ootc3tTOA1F
   5.323 -Krw8AJbE3Av9mvpGbu/vk9sbntzecKcfy0M/ZoBMfbxcsKFy+8/H74/y5F99/uvxj9/+qM+/
   5.324 -/vv4N1D+NhGlhRLUF3Y1KPH5LfnvB0pleg8l054f42pjJGxvcNcYfM3LRxILhkFiXuGiJiRe
   5.325 -6NcDTIVXPmAAzvl+wRnxBEBl/GAV6wQIC26qYjzgHLp4UZC6AuBQfE9+9mkSM5PYLANLdBbA
   5.326 -QqiQkl0rK6oEh7bF5BELfIeSpYJzBYkaB30+gK3Y22qvSxtxGtCYUpJukOxqUmw2rYZptTtQ
   5.327 -RQ3TlS0Y3wpOux/8RWxHpSdALVLCbXErix3QLDQSuDU5FcpLB+i34KhUfm7w+WC2O1FBHcJZ
   5.328 -UAq7sDTFeXi6BhN5QzAWeT1BTJyOKguAg2AZQJHggpuhSPZYeL4I4EZdnECZQD/R94npCZ7Z
   5.329 -VBqgviVifZY5yGfAOSotLzN4Yy1CTCKgPud2Guot8GJ5wAkW1Jt0III/PthGesqO0oijSHag
   5.330 -xn2wyq83RBp+gpdUcUi6w45v4amj4XKCKp9ExnWGlBgZSeAmlftKTqTLHJQWX4aQbVlbMohx
   5.331 -ZaHtAr3eLkyUDK0Jl6gsBVx8Zarf97P421EOoPaj986utElWIuLgInztYNC38Ez1Gssjccwf
   5.332 -2DLggcpe6a6MFL/DZ1JBAc+SwBDT7AHJLoR0rFMjj8IvJ2yMKFZRf1yWDrwxeUlsxrNKl18W
   5.333 -6Y57MxIowp9UcNJLHBCGFJTx4k4Xv+iKNlPUjzekv5lWFxowkav0NA0SB5+6VVH5mSHv2BW5
   5.334 -roZPbNKxYZ2oifwLrK2Mkx+fMwoNZWLNZDG5RjwtAxrPVlQMeTYICTSGZeQ1PoJQLWmBQ4Gs
   5.335 -bwYZUR1+EKyIrBvALEDgUHq9s1LcjGL9l+zG0XNVriqmjZ0kgVvPoUoUMgdoTkk2EjoQnGRf
   5.336 -zqcguDLSIi1hIYX/OZiXqpVxJnPPjRMMAJpLhy4QvLEWmoqVNAX2OokdIee8P7ODLMn21bOo
   5.337 -WspqFSU4ulZZEVCuMQQ00nGqsM8tW0NV1iAEHYJJjtJIP0Mjk+xIHTgniA6oZzTs1FyGgP1h
   5.338 -F2D68V6rGARrkmoKedd1I1omRYRWncUMtd6zGyD6RFVmWbI+NCUTmxKGTVCdDmQAMLwC2IQy
   5.339 -zt100Gp7K6sGD8b5DFi2Nmnuu89l6Gz21xprqrreEkFrPW6U6Oo6cnZRMrLrjrdvk40vzL7E
   5.340 -faFw1CXZVWVTiU30mbJkCn3MEpFVh/oUUWDF3DyzniTQSaUomWcVQ1cVGhr96RCPLP2Nqy20
   5.341 -kz8CFbYXUGuoqC3sFWayAfWUbSxxiF/RWl01ZRt7BOZ8BgE9d9SkMMMXIvdYPSO9TPnkoCxj
   5.342 -uzOoxY04XqbohiNJsbISGjKQV1QhDkpSoKogh+t+yrBUg9zSXGj4pmWJLM+IAylR/PTqw+DT
   5.343 -yRXt1yqJH9o5lRYcEnhuiUyh0nXP6ko3jR+caJvSzeopeiqDdF2covqBs/BIYnH7zz/vtdOo
   5.344 -Wr4LIaTch6xmY4KU5qqesFAhOzubYuKibCgojXgfzJEDWj5MqBkUaLHfMzOUAotDdsnuuVR+
   5.345 -8KpqHJ92YuMhZWwAexFJPOrZCFQzdfLYhlSYcS4F2lMpFToo1ZWssIuWZycni3Wfi2FsKJv2
   5.346 -rZyC9MyURnD6eKl7oniMydVjaO48bjjnHiflrceBqdFP98oPZfnL3S/sRTqV2NM+QW3auqzn
   5.347 -1toVi8KURvpknBooSpSlgRFOd6cLe+hRy6JMh5rQyJk/h3DgufoZ0YFi1TO+yy3+Gu6Bfb4t
   5.348 -jqyi2shXwXw7FqUyXyC8FB4sUY9C9O58aQvY0jLaYvky23YSeXt5gbjvSVSLw473Xih9fTAf
   5.349 -eHlQVxWZ1u5j0VzrFq2bRut59OFc5EdZjosrRUtOsxOt7ViJglPW7QNTuZUP9kzqmRI+z7x6
   5.350 -PHum1+P3vbpjsjfuiN3H7njuS3est0KbCUfdw5O05XAo7TwM20447EsPHWam937yFl7wY3fB
   5.351 -6rdwDsIFZQjv3r6LKydSAFtKrgGdgMaeqaciih5VskSioNu42l09AYbFW1aCanZnqaFgzPuV
   5.352 -ZJw15uuVZCwuWWs7FyMTmOXdaLdSPzTpAre0BREAMHm+kWAAkXHYgj72oN25yCcLXYtjXohl
   5.353 -JWUjXiMwdF//DzuJ/A7ZSolWHoYeSTQUmKr3ALHnEA/SAmX4FzofQTa5uR02+jiPU6A+xDGM
   5.354 -u8bKmYOy70Ot5Gi8tFq9HToyRN5fZGUI422RjywexDRjtxcROEpLtObja4VkS9nPRCgL0qyx
   5.355 -XZCcIrw9RFXm33H2uK+bgwf/ejji2zznJ7ISOIomrYqccNM/zkRomkB9aibqi13HOcnntIJY
   5.356 -u+tNwHkEJAWaI4NDGvhutq6W5JyF/FjsPYcVNnGK4upk4cKU5hzkxuGo59S9e4xkhavMIuJ8
   5.357 -lJO0sxoGUT8qLJ5UUeKkwhhCDWo6020lailb4l6ERUOXcESjYUUbh0ldlIIcGxYyy0lGJVi1
   5.358 -eEMuf2VuJ/y6YWW6wZdlSgM+FehpDvVoomVfUkhKlmB5etDTfItN6c6RLZF8UpiOexV05jui
   5.359 -aDRy9Peqc9nWITtzFbeiGwCtuT22hNLXVrbsykhMeANoZprwOQvUSz4vm6Vssww3UgI6RFLY
   5.360 -6RSkVMmnl+YcxrtG1kmRYWYL78hX2rYb+kw3hGXXq4pEj+zYAtby4eWRopbvF+IvahS+/o5P
   5.361 -ppw8OBiZEZk7SHpkd01y/4/pKkiOJAZh935FP8Fgg+1n7BtStZVD5rD/vyyS3DOpXEYxbWMM
   5.362 -QpQeTMjBZ1HmryuqlEX2i+QOPPmxVSoGntNVZANodvqd5NKAEpfrFf0oyupUjK2iFBhs90dN
   5.363 -BLJv/Frd55L1MgHeoHxIhiBCxQHNwNW+qBGsAvug8tdDtgdHsVa8w94rJtjnCDIWHc7R8NMq
   5.364 -MeCD+iPKHv4lEcYk+huLomHyLktDSiUF7jlpmdZPFAYxJCFi5Ad1xs9ILbFPxIjR3UFjsJbg
   5.365 -GPp2uzpQhuLJRB3d5REomDphYJWjGniZCH38jBO03S7cGME2JWJxivo6O2KeCDZTv3RG8Ajn
   5.366 -jF+oU408uGhrcycXMUGNYN/O+SPYueCDqKnnUnznw0wBds0PbRV2McpZbU7bPhkVpCb23Qph
   5.367 -cteFm1UgN/1reP03Ot4a9czBFe0j1+Fhfes8jBQygWZfIhid4g/34JFmPrwU6tpv1kJwS8s8
   5.368 -q5WHkxzGBKycbbSFtCnblC7ViBFo0WTDXa2qEPmjQkDxG6gN9gRIp0JbkU5/gHNQpeWOLsll
   5.369 -WFzONGFIcIakJ1s0PCDbbbi6U82aKcJmUBm4TlkRDwbnB3hLL6LGeQ8WB65TKJta+zxnLMl2
   5.370 -lD68U4GCVx6kCU++J+kGTQ07aeq1YHxMTBdPqaeJuhrTjUmiKRPFMdd7BEWSoB4IC7Cv1Hed
   5.371 -Dx0iQKWTSx9OSoHKmLWG3NlEGjIWZeb39ff6c/277W71Z/cMdNR9pyOVkHKvCyuvq9601fZ4
   5.372 -Z+bUqDKxUiTq1Ov8/rqY1PZZgvQzdTqH643jVtlVCtfD135HFBUbtwqL9EUDsGkyBMT5p2EH
   5.373 -u6Y3ieccyuohW1/EI3XgpG3kVkWxAnKYHN3ad5ryMLg6kex1icWsXnYuNZx5vcQVzkV+bxo7
   5.374 -ClHasBL0b+d+Q/vhSVFR0icQYF9XQdUDOKcsJZ9GpRg24UFBIWykuSOmikMkswZ+hyLrLWiX
   5.375 -kgkj0SY5hDkrs4DmKtuDhnNSgltRIi5HSbCCDwIFUzwYXS42yswMKpcMTbOKka0DGPrR4sks
   5.376 -HCQhkUH6z9gSp7SFgJY89SVd6ipE0wjB8saox301HwD+AC5NCKn3P82Gfa9cWJLnBgq+/wsw
   5.377 -AMl9eIMNZW5kc3RyZWFtDWVuZG9iag0xNCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUv
   5.378 -TGVuZ3RoIDMxNTg+PnN0cmVhbQ0KSIlsV0tyZKsOnHsV3oArACE+63HciB60J2//g5eZElS1
   5.379 -7Ul3pdEBfZJE+miPNur7R3/0td4/6mOb0GiDqO9x0OcbsLXxslr7Fir4sjz26EQ+G23LY67A
   5.380 -Nrg66o5TCPoIUDxMrRFq8/KocWark6hsmZY5w7Tgmw977N7fAXojmHM8gc8KywutxTZVn1Vz
   5.381 -HdGwaXvsnec37Aa8hnHVthFN5qVgv0E01s6wAtaumJ3AvUc6llCtmSyXaR9KrMcZnUfXx6xC
   5.382 -PEq2ewWu2qIN7dtaj+21T62yhZt9EpcyFFJr3HAhbIa7WmxPU3sMVpNna3HZJDKVmL9QOJj1
   5.383 -R6R6WSTelSPv7QXVnaYNWyEJ8IVVQDFqnGlYWQCr7PByIJQWVcRfd31n7HKujJUgil8sYVG1
   5.384 -+NHC74W/4EtGQuLhd0fECGYaV0vlb9GplA6jP2/jMXCaKzNfQF4E22jv49F2J+io8XgUpsDB
   5.385 -XDrrUWr+195h0YxgdQMoLAgAidIfkwwVAltjv4k0gZ6Nv72RpMZ1ngSECmxtYPjpQxvXPmTV
   5.386 -m27aBsEtb8DC/nYu5Gguu8rtWAjuETTesODvKfanmauIFTH8pau/QJw5e0DeVTgHFwCW2DFR
   5.387 -lq768YQaEccdRh7xc+W9xO8dN9/MlT9lCffZmbJaZefOZOpmdfGQhjYUC+nDdCnOiduDPNYL
   5.388 -aLhR5ITjKMLgb4uTuB0K7HKjLq4M131Yk9UeN9zPpMXJxXq0Hwh74yYLLVW14OYtMFPlNhcw
   5.389 -VXUs05bT2oF/Qb0Kisa13KDtV+DQH9wKULepcBP/AY2icseNJt5x16AxlZQX6ritQDvY4M5U
   5.390 -V8qA/IVaA/CLTBNQ3/OZQ+DpL4vbb6DVbpEkq8BtxplDqxaUM95AZNFVw+AtcKrJHlp1Epzs
   5.391 -0Zd6GfBHt7ANnhlDIZihWE8U+UpT4Qk5yA8R0Wp3V8piOrClkoWCk+4gawwznUVG5wpbhcKH
   5.392 -TLYKs6qiJwkVHJ2RL6WIOt7eM3sQq30zKyBDpf2sVR1f/RYLO44VhVUpqZDvp8pVKnE4kEp9
   5.393 -CIKYtkwthB8m/xLr821DcSSsOOnr0C7g38vCkMfAY/2DvenhcpcT0+LFGzpob6FWk2qtC5eh
   5.394 -OJ3Cz+eXuQGLAkTpWugwJJlCtbUnRKOSqHrU11KOcbN21ANXslIW+bB1v7+TDUKmK12voljV
   5.395 -joyfuinRBzaJvFfRZq5Q6KbrsfdTvRnP3AlP6K72hGny3HRHOcjYxH8vdokGUauh8ARtP3Vh
   5.396 -635dXUCx4jHhu87KheIjk/uE4foOAjL1iIQufSVEg9HkwHrwYAT5RFfC6tZT+QPDMxT5mn+D
   5.397 -phwFDL2pKBGRK9nsU4BCQlJ8FloEuyKyWW/qC13buBMvAg7c/WKgkVrfheYOFMVOzKT18H92
   5.398 -5XQWHTNmvM46Rs0QwTzHtHiGF1ctigFVA2BABLum81EaJJxhzkMNAPWohyczemB2ADhx4sZE
   5.399 -RfEBEEmoNyFta23xYGyulmohq+9ZT8hkKFHAWwS8cH38xKeGf95ak2Yllaho+WL+77+7dsjS
   5.400 -2CPydrJnoSnUClcMnoYxF49iNI929WXfqW6aprF2TSf2sJdjAh9Stq1wDysT3hAshOQHPiEf
   5.401 -++/4EJO4+CEmUfQcJCZQ7fZkJnDLyQQ1BurFDjUbCdSf1ARe/WKjavVDTaAaHU9Q8+BDTeLe
   5.402 -DjX57ehJTWy7k7Wipo7xQ822tWNQE8DXk5l0fq1kJuMMuoOMbSnVh5mAFlwkM1GNHc0pmQkU
   5.403 -nwUxAb34ISYLV/K9fz9VPcw8+NYBPZbtn/hJTWvq53+lUK4dCpmfVtNEoSd27EkUzQO0HGDV
   5.404 -GFOcIkwcXXEBH4ikyHXqu92iQ6ktTHcoSkfKDe192JL3QC30bVBoAXOGZQ8K1NeTC2gUlz+Z
   5.405 -Arz99leGux48IseALK+6unkkce7TQQHFd20JjCHTYhoP9p1pjfklbsFWPDa2IkF4asAUY8Vj
   5.406 -bOktjlkz9K/KI7v0kPN2uWLs0eMlRA5w1ooBAxQ1Np5Vj61ZmCYuiM/Y1WtgtUAzmoIVtujo
   5.407 -TQ0EWyAWZfR8+dOB0xUwXahCQObAokVg7pZC5yZbyVu41BI/rU2TaqAuAHuonbM6InW1qBEb
   5.408 -yApRNBPbhZo6CFNfQOjqEgcpATQjZEjjQUFKPr70r65oMRdpOjV9cWvkneUcSsmI4vYuJ7qt
   5.409 -CNRWONm02nbcJhKcnJHsVzXawCUkukIzkbG1ajaSp37ZZIqn2XOuoLQ8aGQt6D5ePeBN2dc/
   5.410 -aky9vueFa9mT/nnrK27vmVSIl67kgmgCDZHcOfOtmCqhIqp+J5UlOfhrx+1IwuEcoFrqpV8H
   5.411 -T9pd6+eB5WfgoteXPS3eozzRYuhKZxKdtvCJC0h4vqzK1Nk3Wl3Y5qFFtU5/yMbr62HqCSQX
   5.412 -M8b8LjNwd4305JGZuXTnn7zKAanHzXNi0xNCNKXChj/CvVLESNfE2kO3P6KfJYoKgQqdTag6
   5.413 -x+ojMx35M6glkI3QoSnkMS7GnAc87ivZWapx1A1JSFUK7QO27i+r3p9fDkhVe9kWPI5mT4ci
   5.414 -nXGKHCLj/cVd3IiIjLFQI8YNE1enzpckAFu9KSJaN32JbrIvHjt2MpVCDuW+nGd2urCSRfP9
   5.415 -OFTVPB13eZUyNAWDq7ZEeQUaU9ZJwxkgT5JigDwJ1H0+2c3LfVIfa1GU/CordvfMeuaJWev0
   5.416 -JplwfU2aZCRJoYwyCXZzkPTLDF2qKnv/EPfzzQ1tDtpkcf7rzTH9cVKAY2hJ0VxyOpSSAvTK
   5.417 -MSXUGrBxfoPyONcqpp8QQoACzxG+tzDkTWRfiR2hW3w2qFr8Pfik+NCGIWkcV6vWUPEiJSXw
   5.418 -23tqxx1zbvQsB5+e5th/x2duc5zxGz72nXPIL/iel/av2BhhgyQRoAiIagfYir1SngF7Y08N
   5.419 -b/kbbzj7a/4ehXmebYfZNNZgxxq7ISQY/3rVi8PUR8bULiNjWprIOorUVKu6dgIlrK/6XJsg
   5.420 -B75CJbL6TQTk++FTxb5TQeIzFTjf7OesmvBmYvBH/4lvJdL+Oz5TAbHfqYBorzMVODur9pwK
   5.421 -gGvMr1QtIPN2pgLnSGpPvfMdjU5goB09G6cC+hjNXkwFB5+pYLCtqWcqIKqWUwE2WvtlKtAx
   5.422 -/UwF/pxtJ4Hn9KqxwNnQzBwLGFrL1xVBrzu8fjIjbfbz1qIaa8wzFQAN38+xALjH8EdtYOUi
   5.423 -l0j1KesZCw6+hRgxpXzHz7Fg8Ka3c2m+Do5RAFlqEs9vkC9rbYlnO50msIUS45qghkD87KNI
   5.424 -DoG8CXGi/KTtXNGHcpX9rOfzDuBolc9bD8ghI9cgoP12pUAePUJ0pcPVkPNIXJTBVle2juIO
   5.425 -NRYhuwPdRHas8AmoRedIvSVSo9ak++OOVnzhiGboNfY7CFqosh58JAiez99w0+v4iluEnW0f
   5.426 -myKiaDvXnpGFWfXmTJmOeIAGXknmK/rXvneYutUzDgB1k22TqRUxgldRpjUgLhZAqdm/sl7M
   5.427 -zXn+WL7hzzWqIT9D2oGyYe6FLAQr9grnsCcosv7PdBldSQzCMLCVKyEkYJn+GzsJI9jPeZtk
   5.428 -wdjY89Zki0XRHID16GIHiAnJikdc+bws+RTN1/ZJ0sV77FPcu+1TVAIl/SSNL69+kuPp1k9R
   5.429 -TVLST1K+/egncdar0k8o884IBmUe7pUEpX77+RVltbrMSLP/+Cearz75J5RwnwVUhLgCCl7v
   5.430 -7b0CSo5vWEBJH2ABhbpsXAGFRo+0gK5VeOhHFY6vpUju/7WBBi+i2W2gJJSslYFeloGS5rgp
   5.431 -Rzl8xjVQcvawgepgENtA9wpc64rYnBsVhOFSJ8S4lQ7NSFXba/sd2z8JCu/xzxW5af8kZdmo
   5.432 -/FPEEB0BFcP+KShTkH+arn9qdTWwln8uTjsc2i6sqLN9xrzypzOYsH6KnmH9XDnTr36So+ZO
   5.433 -DU3QfGHj9Om5RJWn0/pJguVTyY+f/9cJ1GlpdSqqslgt3AV35RNZTc5SZGbZ80YR9QrMV7TL
   5.434 -dejkyfGsEoXiQBrVrxhEEt5VK61HPbvOhiX6rl81nLg6Zs3J1heo0X6nsrifMwdADTp+SlLt
   5.435 -PM3JbMp6kTWRmu5+po9U41j/yb2kYp1VkVM0soaY9tWjoUGFe2EZkLCCoGlDkGubo9WT2Uob
   5.436 -n/Wd3NFr3yHP7ZfBzPCbTOmW57PK1r2C3Xw4e3g5ahffWSybhVbw9y/AANF6dtINZW5kc3Ry
   5.437 -ZWFtDWVuZG9iag0xNSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMyMzI+
   5.438 -PnN0cmVhbQ0KSIlsV0mSZCsO3Ocp8gIVhsQgOEafIa3b/iJr0X3/Rbu7gBc1WJlVhvMECMc1
   5.439 -MMurrfn5w17d43OWVxXA//jt1Ql8zM+vD+AyK7H1z1ivmdPKIhgxNvj6AGz1+eQ1JzUnKrNp
   5.440 -yRa0nK/lS/v19gk0SxDRI6BwIxox03Z0uTPTdhSs66/SZNvpgMPVNO2tEbbp+shN/BWY8aDl
   5.441 -nqeawJxpnz8/Jub43PD7wB/t1bHSO17dPokatu2valMIRkADNOXK0w7+Fu6VuJnYnXURWV8X
   5.442 -Yd3S9lybB2suD9RfvW7utdEUsOgb6OitaNMJPyPwRw52q0StzWcT4DIGcbX4jPGa5LCC5nHR
   5.443 -oenB1jpXKlP31kYQdUjiB88bue4iSdASrlOXsYjgF7ytEZ/4XXoqZQzfEGDVIcMhfmxpmttm
   5.444 -pOUysAGQFsqrQwskq2i/WPFc6cbfH/98TKjQ6znNT2HTWSckMaHCMF0y/AVqUxdTqq4Rp1nC
   5.445 -HR8DXOkiJuQ8B4ReL/cTJt3ux/aaOMeeB45TG3tR7DzH3RKcM+y2OxtdhV5cavs8MxEy/qxL
   5.446 -Boy2e1OwhhMdh8jv9fZwf46yP+5T7ombg7vsZmhvutnbDv3CrVjwZW9cb1yVAYAqtgeqlD0Q
   5.447 -CazgqOXcqmsJHHEyUISQDQiWAsT62FwngbVq1eDvFvpN+kltRFqupdsdq5MEm7INKmcoUyWA
   5.448 -6cg8dj/OmHdi6LTPsoGF6t00cMi47oRU/jiLwLsHYbDEPWNkcFwCgBEQhx6idanb6BJ98Vi5
   5.449 -Emf68UfrIo+1tW25K69MKm6S0MTpj7PIs2MfTEdBbE+ZWib92uKScPL3oSiz+6FPiX9Tu0vC
   5.450 -oT0/7Ruxowjd111Td7n327e8fdkauJ5ugexzpHb2Cbew7vm37PxIZEtUzP0i2K+PVbFscrUq
   5.451 -BEzsPQuPfwLVkXR5I/KkspWZc82TIETywpJmeepJNEq/lAC2eiBALVkmB0EWvppmZplqm/FT
   5.452 -6bIbRYbFRF0s6mwZMqg04BW2lmXCweE7mqJZONUEEXGmKRAN96t1mlTY6l63K2g7/hBNZasY
   5.453 -OlXJEF6zpb8lFCe25KFlMNbIg9XMer7PVl14QIEkpN/oI1s+ntgkl1VhHPCfPKMOcSbKJG9h
   5.454 -F7Ix8hbqVOSarqg1Ob9INFCm2hHMbAvFcLWDv4VN5dRo3fI6IVFclVxqN92TwTpOqV3UrzI8
   5.455 -RVIkSVZaNSQryzf8g1gW+6qVW86LrvouNlz0nojLT1OtWtR6yQFtiZKY97urpx1PT6onH+4n
   5.456 -1QNJCSywPKEChZV0Jh8RqgoLV3TYMUn1oAyML9TVtZB0VAAL5PiTWPw4MhF+K+QRpDBZ7PT0
   5.457 -baT62c0JB20njpBU4oArMmwOz/Eap9vBb89FAydfI1Xb1bvCcmA4OyxgoL60TOVvaQvX2kZa
   5.458 -qvg1VT0gN10XuyUg6/o2vKdtyTrgXSuVlnpHh0gkbcWxVB9kg80iHf8TQoDRDlQhGIh2omg3
   5.459 -qAK9qsoAxSgKospBdAsEoVKY83a1q3VbijuUpS7WS5Fp72LZqsrSqJZ34F0HC5NtS0oUfuyv
   5.460 -21v4oTcft26ulf0fVhLwyEqoVaGBLo9s6uMucDOkCeklOfi6+jkUWWEC/NtAFuE9EFJAgZ4E
   5.461 -szvjC4LQfT49ODYY2QBnD/4PFgBvq2VvE9AsByS+HPjWQFv9xARh2Ok8iZT9Tl9qhXI/XSvR
   5.462 -KKejtQJB2BOHxLXdnotw5FoFZ7CC6tq0lM80h9qzsa5IToQ1BdWmkB5uaIWtbuvh4i5a1/c4
   5.463 -XXkuHqFaUVqa4/arfKFLhKi0x2/Qhj0ev9Gax7x+W7n5hH4D7p4z3TbmqXXdBtytJd02XFj1
   5.464 -N7cx4IyD7bax8s/rtrGyjje3ObBUAZ0XDtizz0BVEOpZnJdv6z6UwBgVCVXarfZ3WEe75vHI
   5.465 -RQf/64CrQftlwDdzq2cb0i1hNkxTTxMNFBX3SOvZ1D8NdByESr6mPieto+h7jZbXUnQ8T+uW
   5.466 -TbnNs3at4sqgA0Ibu/vQ/a7cqqx9/WO+f23ZV7BqSxvjra3hAOVNR6u0tLrQIuuE2XqRk1Ti
   5.467 -quOdtZGe/THw0HgHfAdO9f7QOE57dGhExk6mIq3dHxaRv7ckNotM4PGwiPYz21SxyJrzC4uo
   5.468 -LdmmJYsoLtUvT8gzXt9YRBrqz1cWEH9YZKLt7yy2Xc1FIlP2w2E7DerhcA88lDn8an8ZeHLl
   5.469 -zWw5gGRnyPzKvnXwLfbgXhlcTW0ki05pCasq0kwfOJAFovjM70ttlkXOjkz01XybT5N5UyS3
   5.470 -rM5Nj1AzUFXzOZWBjFqc01l9CHd7p7AG62ZP+eFAzP58H6ck4CfWiXyYDZlSLPreRn5XO9+U
   5.471 -ngSzdPGdQPNQk7YHvjWg9IWteKmAu41g3SHM/rA137upVMM/a9ubvrsVHaOs28mYsbzvlpGU
   5.472 -oOkrooQbClalklWTojvAlpqzLZNZ3XBkXZrbHEfY5WNf7tr9YPL55HNjXaon25OSkVVpEzqz
   5.473 -BvsamyHvStk96WBWYY4XCj1OWEE3malq9p9mSBv5lFl9w0yOteStYmCqoxxSzNRDiQSseGCq
   5.474 -90t6hqtNExzp6GcOZACu5vK9ZsM69t2rNTE1/XlwzxcZ04tuKx9XrnjgwzSfsxFbdflqpZU0
   5.475 -WM4jdlN6M4HkXM9bL8WfD0GpG2JavzjS5OF1lHEZzzEyTPOUOrijiBbdQSx1LZ4dOu/BlUGd
   5.476 -O+v6O+o8IcNSXUsIcvhpW9z0pjl9i6Mkjlv/gVg2r16A57hdjUOHa169AJ6lUy/OdjjrP4Xo
   5.477 -7GIFO6nwtpvkMcSxs1HMPoUxAeiZnUtJWFNBnjxzQDfWGQNAzUXjhPcXImAy4M7ATZo8yV8H
   5.478 -biV6BnxTMe2pRICx3gs6B7JURlqHjVuKnMJ+L+gkdvoNYcA2b0H39OEpRRjwarcUAe4iTP3x
   5.479 -AuNNgM49+9vXutYtRc6+uL6VIqqlxqlFFNNbMSKkdm4xOgOXNUOrkS+v3wZuMXoEe4uRMxNf
   5.480 -m593gEpO6qfSEu7W3vHbous0xL8NZA/5NuWPARQ11LA9UHq+T3hWwMz2zZegmgcWrVQQWiF/
   5.481 -qg1gK/rOdyuhnm23TmFgtjtA/8p+VLWEfBQRuqrHGSCPbR/IWpYTqQ/zh75H7rbaShR3N6k5
   5.482 -2FsDcl3CPFnXUyiWnZNMDcya5w47hcpDd3ALFXDNMOHrkhe1LJ9VMQVzat0cDZS5nm+ypc8t
   5.483 -C3CPz3vrVU+Ir0cGzxVhoYzp3wYe7fzn418f//1EBcM/+wyk7Qq/Rg9eE1b9+cEvPz+w50I+
   5.484 -LZi0fzINAmW/+AugEaPEzi+GA32mTFg25xv+52PCJ7sjdJYZJ98l//v3+czOqsORqUS/H1cM
   5.485 -O0Q9Yq3LFnX9iKTmExR8+sHfF+di39f+d8xEoeiDlu08qS681kPd3h/47pbmv0HsYW1jpvkf
   5.486 -7D6YznH+OQTVHnWJbCPc7mmuMcAOYORrjr3KJBp7qS4pHJytllzLd0eTRqnU/5Nd5chxxDAw
   5.487 -1yv8AhdJgNd7lHr/n7oPDndVCjEHbnQDaYn7ALpiuyY85r7p2fx4DeKIowwOwsYS0rJe8gxG
   5.488 -q3UHhylgKiRWLm6Irtm1VTxbCGTrQWpC/lrQ4Yj8KwdA+27Kw9wsPQgNyKkPALuMt4gGyCo+
   5.489 -Bzr2zF/dhIAxoegQ8NZibFvs/ZIsoijiPQxIlQOASjxuGniaS/F1Y9ZdBEAXZrkRY1gDZFuw
   5.490 -EB8lazRS74NA64c/TzAexFEci7fSQNc5di5eQbCe8mQBkyCOabGIOiLOBugH/76iedBCuYB2
   5.491 -rQqsaZNvdX2WGJGM4qlbcBqBZnPROMGN94ldNd83Fr3LGhdObib6m5NRrwhM7dNfSwaIANK5
   5.492 -phC1eD0Oqp4+MrY1d20vohH4ycbVZkp+JrBODVwrRHVm0OPaqlISReO3kMdoBnSCEwkjuE9s
   5.493 -WcW4IFuV6eDJ0SQR3d0EbBvomly1lpa1l2R6ObVX09J2BMBleLHM2WlL2M/Scw4VLPo27YFr
   5.494 -RQ0+mbSYs2X6fckV25S31Xpr64TpbTsx0WSUOUDa9lYAYGUKJGd7S/978ZbgCryuDPZBq/Xi
   5.495 -C3Fodc7tQw2AkvQpQX4hkNyoT5LF5VSiK5NHWLz9TwQd477FkPku1Z+oc64PvTwv4lpFK3Eg
   5.496 -7RElFOJ2zPMWDVWh4/m18mBYV7Ogk/gGwy09mINejObB2UgHXCzLgNNy2Ofe3MxcPRBSGe8x
   5.497 -fSK8U5vz2D7vSeDz/TfoaMendmwKupOO9a3ePJ6dTF+/n0KcuJ4qnah/FvH7689/AQYAnKh9
   5.498 -Qg1lbmRzdHJlYW0NZW5kb2JqDTE2IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
   5.499 -dGggMzE4OD4+c3RyZWFtDQpIiWxXO7YcOwjM7ypmA+4jJCTQepy8wN5/+qoAdfe1Hc0UrQ/f
   5.500 -Aum6rI3Pj3H11j+/v9QvbTPwkI/uay0ncv3Mdununx/zat0/P7+mXN3xcV3i+wO0fH1+2DWx
   5.501 -8aB9tWm5NrC0a+LAs1Xk2rg9ThbAcbWlWB73crleffZPKNUDOnbruta2gFuEy6GS6PN9XLbs
   5.502 -2d2vPdf79H7J6PftKpfJvnU78Kh+cBp29qbRcbQ9Lombd/krtLLbld8cDY/Ma6mEktMcnj8C
   5.503 -vWzY59fXHJfiir/wgB6TuNb/iQWajcLSPw2enJ+5LjX5yDW9f6ZfXSbBitj4tfognAgFzO78
   5.504 -pjYJFKbLNcbgwoTt6rZ5wb5kEY6xeOZuTsDbcCJ0ToB9dtle55sh9FRLeJtdbSNwPJIL17UZ
   5.505 -WKQDbiCiQS0cQNSZMlfTVWsj5teYYd9uDDlipTdCrLrW2mYvV+3Q+S98u7rW/4krVr++/vta
   5.506 -8JOfFb+/FnX1Z8fB54Za/gc8oTK4RictXfLGZ7n1y+wf+Nx21v+JBQ7QIxhZYExbQO8JrQHK
   5.507 -5TJv+JPnd6nvcCDghJ6EqA+gXWdNz8WJNXaHdvNU6+DyxpIgQmxx1xrjVbvQZdt6vjP2eRj4
   5.508 -AkjEy/HUDI6zmZcN6x9A3fldEHfAkYXuzXJ1L8PUJz/LSMhfwvACvDlXLm97hGAgzCdIMKCt
   5.509 -G0lU2U+kgKGi4QEUf2+CHAC+EbwAvkgmgPXm7+J3WDX8oQJHTjcNDL4AshZ1PaCzIxQ91lqY
   5.510 -BGzJEq3vj8MSCY5QCIHGim9b41zEi2Gclw5+NFMCcDgAzgaJqWgu9B2ktuEuoI00BOGNoS+0
   5.511 -THJt4LsWoNFS+4fAcK0VppJQQ5XmLQ8lFXlgGzkyAjVqQkft/Crhtpbm2QaCR/OcqbEW5CGh
   5.512 -dWfiVDQMGb5u5JHIP+9Y3UoatNnjbwHoJKKX6wv99+XoQCR6JhjrndiyZcCpQEH7Qn5FBLFq
   5.513 -Zh6xl8JnG07fkXh9fTaqL9oTwrPnZ6NI13pVHwRb9RZsRjGXK1J/I9Xd4vAdrAyBad2Gbrfn
   5.514 -JaGJg1IB+grUZhyNzslMK8GvLyzYs0pb4/ChWbobXWAjFU1exQrVxavRorZhF0sjGm26oY/U
   5.515 -tHnYjRRY1eYnviNgsbtFXh54Gu3BCDNqhXvZ7tBowfc8ekcmbC+Pth0M7tQT/cPldFpo7VOf
   5.516 -8qIDu53y2pq5To5QOihyFefGaAAHDc/2DuIDMrqDpdwDsRQzB8gA2M3mgyxjBH8Th5YwBISC
   5.517 -m7alBVhE1yLarIK8iapr5DaIjDHnvZn3tGDtpyqYMVUl/NquVt0KvROeYLNkVXSG2NmI49aO
   5.518 -0AGx47MqJkGwZapLA4RJRWJCAjvz+hZYJB2haJy2kMkiLO0YAY1RIG4ZFsctgjj3Nk5tS0Pa
   5.519 -T3nMkIZr5ny+G7Is+aolVA0GZTficjZR4+WG+BFai/xgvgeUsMbXqOUhQHysvkfF7vjvbJjI
   5.520 -PI3pIc6emZpMYV4u0SpQwmA94hFF2INouQNZEHWK9oYJkNjp+CjED23r1SR7P9Zy9IpGCbvo
   5.521 -DibCqWtiq9rLwqf/ql2hauhckfwuyx7nU75yPb9kOXcQeQRPkpaaZ/Re0c0NWoMB59ZXvCFx
   5.522 -I9fxGt1Z4z1SAIdbvxt0qD38RQo0VMzu8ZueaTO5lfVIX49Vt+705YxuQsU5GRLnfNKCMAJT
   5.523 -zx1zfW4IQTqZUEcWJqdaHkceYpRXLWdVsQhapgKHWtaIW+mznqn9VjjG9tucUdrT3v3QiVDJ
   5.524 -YpuWSc+Ow36d3vLZs19rlchsUecNp9DfLXN+Dn8iBOJ4xwccPi2CkYLqQ8KxSP5AkaLbvgs2
   5.525 -lxFqdZbtgV3W3fPyvinfB1vp4CvGImn59yOwqGbpqM9pOSxowNHiCbSjK4M3c0TjFILQdvJc
   5.526 -v2u+wx39zQkd6fXihM5J1e7dAudnqOp0CMT7fbug+ve6dQNkTt4t5f6OmAlr8Gxn0Myf82NS
   5.527 -DpdAgVbJukIdLRrYK/Fu2Zt7Egn0z5YJV8IOYvdntr4Nfqq8j9LhrMCvztcJek/f5w69lr2U
   5.528 -mNkASsUKwMuEitAx8gTwOOF7hLmhdMyM/h0XksROCeBAdTv1ge0jx8oqnw7uzPLj44JwJk/P
   5.529 -2Fzwua0EHJ5Y7Gc7pwRWK89vOS21pWUQ5/cgFBRXqvfwDdWvvC5G6myYrxUI83wfgLSIYfi5
   5.530 -QphBjw5iUZ+3jgc/iVWCMrK2lwfi+DfBxP2PA6nderz7zftYPdB7SAqZ479DEDwPlsCQJmPl
   5.531 -CJg1JINvoXdJDVKRnXFBBtIk36rsgYSR4EmRXC7JZ+jxTL8hYcRpswfC8jFreQjgmgHr7u1w
   5.532 -ncrrfORj32H9UaBa461fDcC3AU+JDFgqT2sk9p0n6NrhAe1VEdnZBvt5dWcSA1zWNfu7sz0f
   5.533 -n7Imsj0PtGdbt+RXSEbNr0vzlq1PXlHP2b7lGSzb0u95mL6wet1yIJbBx+1rIKaAz8MzEUvf
   5.534 -Rck5Et/4KZYS5FAc+7ucqZj3tRwMt5/g+DhjMR3dOFBUolF/f3cyuNX6ujsZ7A2PgId6ulBH
   5.535 -DHeyvDwmO1qZhzvgwGT+GM+OPzNrY7pUP0/ZidxBIusOBivBr0fw9LCXJJrYBB8X40YTI46x
   5.536 -625ivGW9n3L3vTxDZ0nWrGENplKC8W1l6Dr4G+6sZlnB1pks9wRbtXpBDUIKjVaSijHlgLul
   5.537 -HiMnUu2osZQ0DpXAY2dDXr0HlpFMJ0kUKtWverxZiG1k/0F4Aq+Z+bPmqh2zyo9TYWDNjKJ2
   5.538 -b6zazw79FgTMftL/IWBWIhYlSTUoCNPNa1JNZ63+fsPSneuYyhqHu7V2sFsR75pVZjY5hEhr
   5.539 -IvdYcYKIGmI6HrzD+5Ffk08gyXHJmV8QxENpRpVB7zmjlFkQdM5EkPddAdh0vxuzIBY6ZCZs
   5.540 -59S1MJvsINLGrgHoke+rR0IsMlyMNhtPBMKadAa0kUWu4lE7PbJwSlaXxmGsonFepbI4EY+3
   5.541 -Kis6z/0dfOYBh8+A0eDo7+CJBe5acXkLXTzfFkxZxGeBT/JhtjMHIOgrPEeOB9Ieb8jdA03S
   5.542 -NTg2h28KpmRlz/xu8UQcTOoHcqSv5fatHqlcm/+SkGKsBD1bJmuM9o0m91QI7wzzV4uD93pS
   5.543 -UbQ4+jojwfAyEtvimTpzaoQgSndFPAklejcH94M8pq5cLP5N2RaG/0PyqI+W7o/6EyT2aD+R
   5.544 -6/7WHmm4MxyhPaCksaH9nFnRt/YQxPOktI+sv7UvdGtf+NF1ks77vyR4FYkdASOOOmI6AKqF
   5.545 -ekNWQvFDD3VF94cvUInG5O4szrHi0UCBJ+1MdkLg4flUjTcY8GZ687XZ4lRLe2NKwK2G9Ksp
   5.546 -OQjEMI/4tyHBHGm5nyHBkNMjhwblYwDYW0/OH8HH3qI041LWILBJTn1OtgXmiETcZtzhKHHZ
   5.547 -twS+csm6jCEhb9kzn1D7f7arJbmSGITtc4pcIFV2+wfHmDOkKquZ+28jAcZ+k1Q2Ea/bbWyQ
   5.548 -xOP7bPJiEpCYHIuAxGdch1mEBWoa7fYIi/+14xEWSFf1eISN0yPsQHgEvF9LT48AaLWaHmFR
   5.549 -r2qaBG5PjxvF/mmxDhHxWPshKpzRKG5laT5xHI/zjrqRRkDVxkO6Kh6gHTn2Rm4h5GJeJ0bi
   5.550 -4h4J3gLK8s+x91aBwtn31LOhOwUszlv+OeyuGw/QzFpJqGRjMRfpV+OxqPr1+3A1Zct0g0XN
   5.551 -GY9H46TohNh4tCKAlVtF5w1H4MfYuKcyoZI9W43JYK3XdtyRbD4G3I9b8xGe3gPqq1+9h08s
   5.552 -ubXavumvT9kBpyIyAgNr2zrhGQmk4bjAqiVHPb9vRalrXjfQ8snFdEdxf7VfuqOPtc7WHeUy
   5.553 -I3UHsPd16Y6ym9fWHaUsb9kB0DYv2WFgScoOoVe5yc6BITs7cI4ae9tu/L9I8jYDZSRvM9u5
   5.554 -kriFNK5X/eDs5JqsAKtna8TNg/bFwtIgUNQy4GJRHKgePYi8HdWjYkaaqzXjUIUF0LEDf08g
   5.555 -L3+/8iPAGa1ZAClg/vkgd7wE9iu4dYj/80vgfDZe+RGgK+0ZCXvH4fApcJvBkuRmuDHgdrE3
   5.556 -I7LZG/XHr5J/3FIaHLHgEHt+B7qt4Pus3S8cuXLBVVfac2Izd0nE3NR82vUE3F4o/aKUIolt
   5.557 -6Nmin5ZWU3+isXeAawwJ7H3iUnzAk+gHibEClW8NI96vPJgWePogstzAM9LdCdPjnCvESFTm
   5.558 -hasJDkvl6+0P/t6/BRgA6y9qdQ1lbmRzdHJlYW0NZW5kb2JqDTE3IDAgb2JqDTw8L0FJUyBm
   5.559 -YWxzZS9CTS9Ob3JtYWwvQ0EgMS4wL09QIGZhbHNlL09QTSAxL1NBIHRydWUvU01hc2svTm9u
   5.560 -ZS9UeXBlL0V4dEdTdGF0ZS9jYSAxLjAvb3AgZmFsc2U+Pg1lbmRvYmoNMTggMCBvYmoNPDwv
   5.561 -QUlTIGZhbHNlL0JNL05vcm1hbC9DQSAxLjAvT1AgdHJ1ZS9PUE0gMS9TQSB0cnVlL1NNYXNr
   5.562 -L05vbmUvVHlwZS9FeHRHU3RhdGUvY2EgMS4wL29wIHRydWU+Pg1lbmRvYmoNMSAwIG9iag08
   5.563 -PC9OdW1zWzAgMiAwIFJdPj4NZW5kb2JqDTIgMCBvYmoNPDwvUy9EL1N0IDk+Pg1lbmRvYmoN
   5.564 -MyAwIG9iag08PC9Db3VudCAxL0tpZHNbOCAwIFJdL1R5cGUvUGFnZXM+Pg1lbmRvYmoNNCAw
   5.565 -IG9iag08PC9MZW5ndGggMjQ4MC9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5zdHJlYW0N
   5.566 -Cjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+
   5.567 -Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhN
   5.568 -UCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAg
   5.569 -Ij4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy
   5.570 -LXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK
   5.571 -ICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgog
   5.572 -ICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21t
   5.573 -LyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
   5.574 -MC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6
   5.575 -Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAg
   5.576 -IHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAg
   5.577 -ICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAg
   5.578 -PHhtcDpDcmVhdGVEYXRlPjIwMTQtMDgtMTBUMjE6NTA6MjMrMDI6MDA8L3htcDpDcmVhdGVE
   5.579 -YXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTA4LTEwVDIxOjUwOjIzKzAy
   5.580 -OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0w
   5.581 -OC0xMFQyMTo1MDoyMyswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3Jl
   5.582 -YXRvclRvb2w+QWRvYmUgSW5EZXNpZ24gQ0MgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9v
   5.583 -bD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDpkN2UxNWU4NC0yMjA0LWZhNGQt
   5.584 -YTNjMi0xODc0YjhkYTI4NDg8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpP
   5.585 -cmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDplYjk4OTk1Yy00ZmZlLTRjOWMtOTNjNy1iZGQ4
   5.586 -ZDU0Y2U3MDk8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRv
   5.587 -Y3VtZW50SUQ+eG1wLmlkOjZjMmQ1ODhjLWJhMmItNGJkOS1hMWYxLTAxMDRkOTA1MmMyODwv
   5.588 -eG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOlJlbmRpdGlvbkNsYXNzPnByb29m
   5.589 -OnBkZjwveG1wTU06UmVuZGl0aW9uQ2xhc3M+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5Pgog
   5.590 -ICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
   5.591 -eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVy
   5.592 -dGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJz
   5.593 -PmZyb20gYXBwbGljYXRpb24veC1pbmRlc2lnbiB0byBhcHBsaWNhdGlvbi9wZGY8L3N0RXZ0
   5.594 -OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFk
   5.595 -b2JlIEluRGVzaWduIENDIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAg
   5.596 -ICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAg
   5.597 -ICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTA4LTEwVDIxOjUwOjIzKzAyOjAwPC9zdEV2
   5.598 -dDp3aGVuPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2Vx
   5.599 -PgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJv
   5.600 -bSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5j
   5.601 -ZUlEPnhtcC5paWQ6Mjg0NzZlZDgtM2VlYi00ZTlhLWI4NDMtNzJhYTU4MGFjYTVhPC9zdFJl
   5.602 -ZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOmVi
   5.603 -OTg5OTVjLTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6ZG9jdW1lbnRJRD4K
   5.604 -ICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmViOTg5OTVj
   5.605 -LTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE
   5.606 -PgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+ZGVmYXVsdDwvc3RSZWY6cmVu
   5.607 -ZGl0aW9uQ2xhc3M+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxk
   5.608 -Yzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwZGY6UHJv
   5.609 -ZHVjZXI+QWRvYmUgUERGIExpYnJhcnkgMTAuMC4xPC9wZGY6UHJvZHVjZXI+CiAgICAgICAg
   5.610 -IDxwZGY6VHJhcHBlZD5GYWxzZTwvcGRmOlRyYXBwZWQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0
   5.611 -aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+DWVu
   5.612 -ZHN0cmVhbQ1lbmRvYmoNNSAwIG9iag08PC9DcmVhdGlvbkRhdGUoRDoyMDE0MDgxMDIxNTAy
   5.613 -MyswMicwMCcpL0NyZWF0b3IoQWRvYmUgSW5EZXNpZ24gQ0MgXChNYWNpbnRvc2hcKSkvTW9k
   5.614 -RGF0ZShEOjIwMTQwODEwMjE1MDIzKzAyJzAwJykvUHJvZHVjZXIoQWRvYmUgUERGIExpYnJh
   5.615 -cnkgMTAuMC4xKS9UcmFwcGVkL0ZhbHNlPj4NZW5kb2JqDXhyZWYNMCA2DTAwMDAwMDAwMDAg
   5.616 -NjU1MzUgZg0KMDAwMDAyNzI2MSAwMDAwMCBuDQowMDAwMDI3Mjk1IDAwMDAwIG4NCjAwMDAw
   5.617 -MjczMjQgMDAwMDAgbg0KMDAwMDAyNzM3NSAwMDAwMCBuDQowMDAwMDI5OTMxIDAwMDAwIG4N
   5.618 -CnRyYWlsZXINPDwvU2l6ZSA2L0lEWzxDODIwMjYzOUE5Njc0MDgyQjQyNTI2OThGNkQ4OTNC
   5.619 -OD48QUM4OEI2NkM5ODAwNEY4MzlEM0U1REMyNjA4NjVDQzE+XT4+DXN0YXJ0eHJlZg0xMTYN
   5.620 -JSVFT0YN
   5.621 -
   5.622 ---cEobB2knsyc5ebfU--
   5.623 -
     6.1 --- a/test/mime_test.cc	Sun Mar 29 13:54:38 2015 +0200
     6.2 +++ b/test/mime_test.cc	Sun Mar 29 21:03:41 2015 +0200
     6.3 @@ -1,7 +1,10 @@
     6.4 +#include "platform.h"
     6.5 +
     6.6  #include <iostream>
     6.7  #include <fstream>
     6.8  #include <string>
     6.9  #include <assert.h>
    6.10 +
    6.11  #include "mime.h"
    6.12  
    6.13  using namespace std;
    6.14 @@ -69,6 +72,17 @@
    6.15          cout << msg3->longmsg << "\n\n";
    6.16      if (msg3->longmsg_formatted)
    6.17          cout << msg3->longmsg_formatted << "\n\n";
    6.18 +    bloblist_t *_b;
    6.19 +    for (_b = msg3->attachments; _b; _b = _b->next) {
    6.20 +        cout << "attachment of type " << _b->mime_type << "\n";
    6.21 +        if (_b->filename) {
    6.22 +            cout << "filename: " << _b->filename << "\n";
    6.23 +            unlink(_b->filename);
    6.24 +            ofstream outFile3(_b->filename);
    6.25 +            outFile3.write(_b->data, _b->size);
    6.26 +            outFile3.close();
    6.27 +        }
    6.28 +    }
    6.29  
    6.30      free_message(msg3);
    6.31