IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP IMAP comment lire les emails correctement


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Août 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut PHP IMAP comment lire les emails correctement
    Bonjour,

    Je tente de créer moi-même un webmail basé sur IMAP.

    J'arrive à bien récupérer les images à l'intérieur du body ainsi que les attachements. Mais je rencontre deux soucis :

    mb_convert_encodin($bodymsg, "UTF-8", "auto") ne semble pas marcher avec ISO-8859-1

    Malgré imap_fetchbody j'obtien souvent plusieurs part dans mon body dont le message en plain text, le message en base64 et parfois les fichiers

    Pouvez-vous m'aider à corriger ces problèmes ?

    à toutes fins utiles mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    **
         * @Route("/email/read/id={id}", name="email_read", methods={"GET", "POST"})
         * @IsGranted("ROLE_USER")
         */
       public function readInbox(Request $request, Imap $imap, $id, Packages $assetPackage): Response {
        $mbox = $this->logImap("");
     
        if ($mbox === false) {
            die('La connexion a échoué. Vérifiez vos paramètres!');
        } else {
            $uid = $id;
            $structure = imap_fetchstructure($mbox, $uid, FT_UID);
            var_dump($structure);
     
            $headerText = imap_fetchHeader($mbox, $uid, FT_UID);
            $header = imap_rfc822_parse_headers($headerText);
     
            $body = "";
            $filename = "";
            $attachments = "";
            $messageNumber = $id;
     
            if (isset($structure->parts)) {
                var_dump($structure->subtype);
     
                switch ($structure->subtype) {
                    case 'ALTERNATIVE':
                        $body2 = imap_fetchbody($mbox, $uid, 2, FT_UID) ?? imap_fetchbody($mbox, $uid, 1.2, FT_UID);
                        $body2 = $this->decodeCharset($body2);
                        break;
     
                    case 'PLAIN':
                        $body2 = imap_fetchbody($mbox, $uid, 1, FT_UID) ?? imap_fetchbody($mbox, $uid, 1.1, FT_UID);
                        break;
     
                    case 'HTML':
                        $possibleParts = [1.1, 1.2, 1, 1.0, 1.3];
                        foreach ($possibleParts as $part) {
                            $body2 = imap_fetchbody($mbox, $uid, $part, FT_UID);
                            if ($body2 !== null) {
                                break;
                            }
                        }
                        break;
     
                    default:
                        break;
                }
     
                if ($body2 !== null) {
                    $body = quoted_printable_decode($body2);
                }
            } else {
                $body = imap_fetchbody($mbox, $uid, 1, FT_UID) ?? imap_fetchbody($mbox, $uid, 1.1, FT_UID);
                $body = quoted_printable_decode($body);
                $body = $this->detectAndDecodeCharset($body);
                var_dump($body);
            }
     
            // Handling for RELATED and MIXED subtypes
            if ($structure->subtype == 'RELATED') {
                $data = $this->handleRelatedSubtype($mbox, $uid, $structure, $assetPackage, $body);
                $body = $data['body'];
                 $attachments = $data['attachments'];
            }
     
            if ($structure->subtype == 'MIXED') {
     
                $data = $this->handleMixedSubtype($mbox, $uid, $structure, $assetPackage, $body);
                $body = $data['body'];
                $attachments = $data['attachments'];
            }
     
            imap_close($mbox);
     
            if ($this->is_base64_encoded($body) == true) {
                $body = base64_decode($body);
            }
     
            if (strpos($body, '<') !== false && strpos($body, '>') !== false) {
                $allowed_tags = '<a><abbr><acronym><address><area><article><aside><audio><b><basefont><bdo><big><blockquote><br><button><canvas><caption><center><cite><code><col><colgroup><datalist><dd><del><details><dfn><dir><div><dl><dt><em><embed><fieldset><figcaption><figure><font><footer><form><h1><h2><h3><h4><h5><h6><head><header><hr><i><iframe><img><input><ins><kbd><keygen><label><legend><li><map><menu><meter><nav><noscript><object><ol><optgroup><option><output><p><param><pre><progress><q><rp><rt><ruby><s><samp><script><section><select><small><source><span><strike><style><strong><sub><sup><table><tbody><td><textarea><tfoot><th><thead><time><title><tr><track><tt><u><ul><var><video>>';
                $body = strip_tags($body, $allowed_tags);
                $body = $this->deleteStyle($body);
            }
     
            $bodymsg = mb_convert_encoding($bodymsg, "UTF-8", $encoding);
            return $this->render('core\emails\readinbox.html.twig', [
                'header' => $header,
                'corps' => $body,
                'attachement' => $attachments,
                'structure' => $structure,
                'object' => "",
                'attachments' => $attachments,
                'id' => $messageNumber,
            ]);
        }
    }
     
    private function handleRelatedSubtype($mbox, $uid, $structure, $assetPackage, $body) {
        $attachments = []; // Array to hold attachment information
     
        if (isset($structure->parts)) {
            $parts = $structure->parts;
            $body2 = imap_fetchbody($mbox, $uid, 1.2, FT_UID) ?: imap_fetchbody($mbox, $uid, 1, FT_UID);
            $body = quoted_printable_decode($body2);
            $i = 0;
            foreach ($parts as $part) {
                if ($parts[$i]) {
                    $i++;
                    if (isset($parts[$i]) && $parts[$i]->ifid == 1) {
                        $id = substr($parts[$i]->id, 1, -1);
                        $imageid = "cid:" . $id;
                        foreach ($parts[$i]->parameters as $object) {
                            $filename = $assetPackage->getUrl("emails/inline/" . mb_decode_mimeheader($object->value));
                            $path = $this->getParameter('kernel_directory') . "/public/emails/inline/" . mb_decode_mimeheader($object->value);
                            $attachment = imap_fetchbody($mbox, $uid, ($i + 1), FT_UID);
                            if ($structure->parts[$i]->encoding == 3) {
                                $attachment = base64_decode($attachment);
                            } elseif ($structure->parts[$i]->encoding == 4) {
                                $attachment = quoted_printable_decode($attachment);
                            } else {
                                echo "encod:" . $structure->parts[$i]->encoding . PHP_EOL;
                            }
                            file_put_contents($path, $attachment);
     
                            // Add attachment information to the $attachments array
                            $attachments[] = [
                                'filename' => mb_decode_mimeheader($object->value),
                                'path' => $path,
                                'url' => $filename,
                                'content' => $attachment
                            ];
     
                            $body = str_replace($imageid, $filename, $body);
                        }
                    }
                }
            }
        }
     
        // Return both the body and attachments
        return [
            'body' => $body,
            'attachments' => $attachments
        ];
    }
     
    private function handleMixedSubtype($mbox, $uid, $structure, $assetPackage, $body) {
        $attachments = [];
        $returnData = [];
     
        if (isset($structure->parts) && count($structure->parts)) {
            for ($e = 0; $e < count($structure->parts); $e++) {
                $attachments[$e] = ['is_attachment' => false, 'filename' => '', 'name' => '', 'attachment' => ''];
     
                if ($structure->parts[$e]->type != 1) {
                    if ($structure->parts[$e]->ifdparameters) {
                        foreach ($structure->parts[$e]->dparameters as $object) {
                            if (strtolower($object->attribute) == 'filename') {
                                $attachments[$e]['is_attachment'] = true;
                                $attachments[$e]['filename'] = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $this->suppraccent(mb_decode_mimeheader($object->value)));
                            }
                        }
                    }
     
                    if ($structure->parts[$e]->ifparameters) {
                        foreach ($structure->parts[$e]->parameters as $object) {
                            if (strtolower($object->attribute) == 'name') {
                                $attachments[$e]['is_attachment'] = true;
                                $attachments[$e]['name'] = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $this->suppraccent(mb_decode_mimeheader($object->value)));
                            }
                        }
                    }
     
                    if ($attachments[$e]['is_attachment']) {
                        $attachments[$e]['attachment'] = imap_fetchbody($mbox, $uid, ($e + 1), FT_UID);
                        if ($structure->parts[$e]->encoding == 3) {
                            $attachments[$e]['attachment'] = base64_decode($attachments[$e]['attachment']);
                        } elseif ($structure->parts[$e]->encoding == 4) {
                            $attachments[$e]['attachment'] = quoted_printable_decode($attachments[$e]['attachment']);
                        }
                        $path = $this->getParameter('kernel_directory') . "/public/emails/inline/" . $attachments[$e]['name'];
                        file_put_contents($path, $attachments[$e]['attachment']);
                    }
                }
            }
        }
     
        // Extracting and processing the body
        $bodymsg = quoted_printable_decode(imap_fetchbody($mbox, $uid, 1, FT_UID));
        if (empty($bodymsg)) {
            $bodymsg = quoted_printable_decode(imap_fetchbody($mbox, $uid, 1.1, FT_UID));
        }
     
        $crawler = new Crawler($bodymsg);
        $ltrDivs = $crawler->filter('div[dir=ltr]');
        if ($ltrDivs->count() > 0) {
            $ltrDiv = $ltrDivs->first();
            $extractedHtml = $ltrDiv->html();
            $bodymsg = $extractedHtml;
        }
     
        $bodymsg = mb_convert_encoding($bodymsg, "UTF-8", "auto");
        $body = $bodymsg;
     
        // Processing inline attachments
        $source = imap_fetchbody($mbox, $uid, 2, FT_UID);
        if (isset($structure->parts[0]->parts)) {
            $inlines = [];
            for ($j = 0; $j < count($structure->parts[0]->parts); $j++) {
                if ($structure->parts[0]->parts[$j]->type == 5) {
                    $imageId = substr($structure->parts[0]->parts[$j]->id, 1, -1);
                    $uniqueName = uniqid('img_') . "." . $structure->parts[0]->parts[$j]->subtype;
                    $partNumber = ("1." . $j + 1);
                    $inlines[$j] = ['is_inline' => true, 'name' => $uniqueName, 'filename' => iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $this->suppraccent(mb_decode_mimeheader($structure->parts[0]->parts[$j]->parameters[0]->value))), 'attachment' => base64_decode(imap_fetchbody($mbox, $uid, $partNumber, FT_UID))];
                    $path = $this->getParameter('kernel_directory') . "/public/emails/inline/" . $uniqueName;
                    file_put_contents($path, $inlines[$j]['attachment']);
                    $imageid = "cid:" . $imageId;
                    $filename = $assetPackage->getUrl("emails/inline/" . $uniqueName);
                    $body = str_replace($imageid, $filename, $body);
                }
            }
        }
     
        // Adding body and attachments to returnData array
        $returnData['body'] = $body;
        $returnData['attachments'] = $attachments;
     
        return $returnData;
    }
     
     
    private function decodeCharset($string) {
        $encoding = mb_detect_encoding($string, mb_detect_order(), true);
        if ($encoding === "ASCII") {
         $string = mb_convert_encoding($string, "UTF-8", $encoding);
        }
     
     
     
             elseif ($encoding === "UTF-8") {
            $string = quoted_printable_decode($string);
        }
     
     
         else {
            $string = iconv($encoding, 'UTF-8', quoted_printable_decode($string));
        }
     
     
     
     
    // Decode the string to UTF-8
    $string = mb_convert_encoding($string, "UTF-8", $encoding);
     
     
     
     
        return $string;
    }
     
    private function detectAndDecodeCharset($string) {
        $originalCharset = mb_detect_encoding($string);
        $string = mb_convert_encoding($string, 'UTF-8', $originalCharset);
        return $string;
    }
     
     
    private function is_base64_encoded($string) {
        // Remove any whitespace characters from the input string
        $string = trim($string);
     
        // Base64 encoding typically contains characters A-Z, a-z, 0-9, +, /, and sometimes =
        // Check if the decoded string is not false and if the decoded string contains only valid characters
        return base64_decode($string, true) !== false && preg_match('%^[a-zA-Z0-9/+]*={0,2}$%', $string);
    }
     
     
     
    private  function contains_html_tags($string) {
        return preg_match("/<[^<]+>/", $string) === 1;
    }
     
    private  function deleteStyle($bodymsg){
     
     
     
        $crawler = new Crawler($bodymsg);
    // Find all <style> tags and remove them
    $crawler->filter('style')->each(function (Crawler $node) {
        $node->getNode(0)->parentNode->removeChild($node->getNode(0));
    });
     
    // Get the updated HTML after removing <style> tags
    $bodymsg = $crawler->html();
     
     
           return $bodymsg;
     
    }
    En vous remerciant par avance

  2. #2
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2024
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2024
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Rrrrrrr
    Problème de conversion de charset avec mb_convert_encoding :

    Tu utilise mb_convert_encoding($bodymsg, "UTF-8", $encoding), mais $bodymsg n'est pas défini. Vous devriez plutôt utiliser $body car c'est la variable qui contient le contenu de votre email.
    Assure toi que $encoding est correctement détecté en utilisant mb_detect_encoding.
    Assures toi aussi également que le contenu de l'email est correctement décodé avec quoted_printable_decode avant d'appliquer la conversion de charset.
    Problème de récupération des parties du corps de l'email avec imap_fetchbody :

    Tu sembles rencontrer des problèmes pour extraire les parties du corps de l'email, notamment le texte en clair, le texte en base64 et les pièces jointes.
    Assure toi de spécifier correctement le numéro de la partie à extraire. Dans votre code, tu utilises différentes méthodes selon le sous-type du message (ALTERNATIVE, PLAIN, HTML, etc.). Tu peux également essayer de vérifier le type de chaque partie pour décider comment la traiter.
    Assure toi que tu utilises les constantes correctes pour FT_UID (dans imap_fetchbody), ce qui semble être le cas dans ton code.

  3. #3
    Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Août 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Août 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Merci de la réponse, mais pour mon problème de parties intégrée dans body j'obtiens cela :


    ------=_Part_1440622_910372461.1713334288255 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: base64 PGh0bWw+CiAgIDxoZWFkPgogICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNv bnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiAgIDwvaGVhZD4KICAgPGJvZHkgc3R5 bGU9Im1hcmdpbjowOyBwYWRkaW5nOjA7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIEFyaWFsLCBz YW5zLXNlcmlmOyI+CiAgICAgIDx0YWJsZSBzdHlsZT0ibWluLXdpZHRoOjEwMCU7Ym9yZGVyLXNw YWNpbmc6MDtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7IiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNp bmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBib3JkZXI9IjAiIGJnY29sb3I9IiNmZmZmZmYiPgogICAg ICAgICA8dGJvZHk+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJm b250LXNpemU6MDtsaW5lLWhlaWdodDowO21heC1oZWlnaHQ6MDtvcGFjaXR5OjA7b3ZlcmZsb3c6 aGlkZGVuO2Rpc3BsYXk6bm9uZSI+PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAg PHRyPgogICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgc3R5bGU9ImZvbnQtc2l6ZTog MTNweDsiPgogICAgICAgICAgICAgICAgICA8dGFibGUgc3R5bGU9IndpZHRoOjcyMHB4IiB3aWR0 aD0iNzIwIiBhbGlnbj0iY2VudGVyIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGJv cmRlcj0iMCI+CiAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgICAgICAg ICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndvcmQtYnJl YWs6YnJlYWstYWxsO2ZvbnQtc2l6ZToxcHg7bGluZS1oZWlnaHQ6MDtsZXR0ZXItc3BhY2luZzo4 MHB4Ij4mbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAg ICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0ZCBzdHlsZT0icGFkZGluZzoyMHB4IDEwcHggMCI+PGEgaHJlZj0iaHR0cHM6 Ly93d3cudmFkZXNlY3VyZS5jb20iIHN0eWxlPSJjb2xvcjojNjE2MTYyOyIgdGFyZ2V0PSJfYmxh bmsiPjxpbWcgc3JjPSJjaWQ6bG9nbyIgYWx0PSJWYWRlIiBzdHlsZT0iZGlzcGxheTpibG9jayIg d2lkdGg9IjE3MCIgYm9yZGVyPSIwIj48L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAg PC90cj4KICAgICAgICAgICAgICAgICAgICAgPCPSJmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z ZXJpZjsgZm9udC1zaXplOiYjeEE7ICAgICAgICAgICAgMTJweDsiPkRlcHVpcyBjZSByYXBwb3J0 LCB2b3VzIHBvdXZleiBlZmZlY3R1ZXIgcGx1c2lldXJzIGFjdGlvbnMgc3VyIGxlcyBtZXNzYWdl cywgb3UgbGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc3VhbGlzZXIgZW4g bGlnbmUgZW4gdm91cyBjb25uZWN0YW50IMOgIHZvdHJlIGNvbXB0ZSBkZSBxdWFyYW50YWluZS48 L3NwYW4+PGJyPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMTgw IiBzdHlsZT0id2lkdGg6MTgwcHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFi bGUgYWxpZ249ImNlbnRlciIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiNmM2YzZjMiIHN0eWxlPSJi YWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO2JvcmRlci1zcGFjaW5nOiAwOyBib3JkZXItY29sbGFw c2U6IGNvbGxhcHNlOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsgbXNvLXRhYmxl LWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHRleHQtYWxpZ246IGxlZnQ7IG1h cmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IHRleHQtYWxpZ246IGNlbnRlcjsg bWF4LXdpZHRoOiAyMTBweDsiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+CiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBzdHlsZT0ibWFyZ2luOjA7cGFkZGluZzow O2JvcmRlcjowOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHls ZT0icGFkZGluZy1ib3R0b206IDE1cHg7IHRleHQtYWxpZ246IGNlbnRlcjsgbWFyZ2luOiAwOyYj eEE7ICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXJpZ2h0OiAwOyBwYWRkaW5n LXRvcDogMTBweDsgYm9yZGVyOiAwO2JhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7IiBjb2xzcGFu PSIzIj48aW1nIHN0eWxlPSJtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyBi b3JkZXItc3R5bGU6IG5vbmU7JiN4QTsgICAgICAgICAgICBib3JkZXI6IDA7IG1hcmdpbi10b3A6 IDA7IG1hcmdpbi1ib3R0b206IDA7IG91dGxpbmU6IG5vbmU7IHBhZGRpbmc6IDA7IHRleHQtZGVj b3JhdGlvbjomI3hBOyAgICAgICAgICAgIG5vbmU7IC1tcy1pbnRlcnBvbGF0aW9uLW1vZGU6IGJp Y3ViaWM7IiB3aWR0aD0iMTUwIiBoZWlnaHQ9IjE1MCIgYWx0PSJncmFwaCIgc3JjPSJjaWQ6Zmls dGVyR3JhcGgiPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBzdHlsZT0ibWFyZ2luOjA7cGFkZGlu ZzowO2JvcmRlcjowOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8dHIgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyI+ ICAgICAgICAgICAgICAgICAgPHRkPiAgICAgICAgICAgICAgICAgICAgPGltZyBzdHlsZT0ibWFy Z2luLWxlZnQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsgYm9yZGVyLXN0eWxlOiBub25lOyBi b3JkZXI6IDA7IG1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDA7IG91dGxpbmU6IG5vbmU7 IHBhZGRpbmc6IDA7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLW1zLWludGVycG9sYXRpb24tbW9k ZTogYmljdWJpYzsiIHdpZHRoPSIxODAiIGhlaWdodD0iNzAiIGFsdD0iZ3JhcGhMZWdlbmQiIHNy Yz0iY2lkOmdyYXBoTGVnZW5kIj4gICAgICAgICAgICAgICAgICAgIDwvaW1nPiAgICAgICAgICAg ICAgICAgIDwvdGQ+ICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPC90YWJsZT48YnI+PHRhYmxlIGhlaWdodD0iMjAiIHN0eWxlPSJib3JkZXI6IDFweCBz b2xpZCByZ2IoMTQzLCAxOTgsIDEyMSk7IGJhY2tncm91bmQtY29sb3I6IHJnYigxNDMsIDE5OCwg MTIxKTsgYm9yZGVyLXJhZGl1czogM3B4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPjwvdGQ+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48YSBocmVmPSJodHRwczovL2Ns b3VkLnZhZGVzZWN1cmUuY29tL2NvbnNvbGUvIy9jbGljay9xdWFyYW50aW5lP3Rva2VuPTE5Njgy NjAtOTA1NDhhZDAtNDdjNS00NTNmLWFjZTAtODk2N2U3MWRmNjZiJnR5cGU9U0lOR0xFX1VTRVIi IHRpdGxlPSJDb25zdWx0ZXIgZW4gbGlnbmUiIHN0eWxlPSJjb2xvcjogcmdiKDI1NSwgMjU1LCAy NTUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OkhlbHZldGljYTsg Zm9udC1zaXplOjguNXB0OyBmb250LXdlaWdodDogbm9ybWFsOyB0ZXh0LWRlY29yYXRpb246IG5v bmU7Ij5Db25zdWx0ZXIgZW4gbGlnbmU8L2E+PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwv dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4mbmJzcDs8 L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAg ICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDAiIHN0eWxlPSJ3 aWR0aDogNDBweDsiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBj b2xzcGFuPSIyIiBzdHlsZT0iIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7IHdpZHRoOjcyMHB4 OyIgd2lkdGg9IjcyMCI+PGJyPjx0YWJsZSB3aWR0aD0iNjYwIiBzdHlsZT0id2lkdGg6NjYwcHg7 Ym9yZGVyLXNwYWNpbmc6IDA7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IG1hcmdpbjogMDsg cGFkZGluZzogMDsgYm9yZGVyOiAwOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10YWJsZS1y c3BhY2U6IDBwdDsgdGV4dC1hbGlnbjogbGVmdDsgbWFyZ2luLWxlZnQ6IGF1dG87IG1hcmdpbi1y aWdodDogYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyB0YWJsZS1sYXlvdXQ6IGZpeGVkIiBjZWxs c3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8dHIgc3R5bGU9Im1hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDsiPgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMyMCIgY29sc3Bhbj0iMiIgYWxp Z249ImxlZnQiIHN0eWxlPSJmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgVmVyZGFuYSwg c2Fucy1zZXJpZjsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbWFyZ2luOiAwOyBwYWRkaW5n LXJpZ2h0OiAwOyBwYWRkaW5nLXRvcDogOHB4OyBwYWRkaW5nLWJvdHRvbTogOHB4OyBwYWRkaW5n LWxlZnQ6IDFweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE0cHg7IGJvcmRlcjog MXB4IHNvbGlkICNkMWQyZDQ7IGJvcmRlci1ib3R0b206IG5vbmU7IGJhY2tncm91bmQtY29sb3I6 ICNmZmZmZmY7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0OiBib2xkOyB3 aWR0aDogMzMwcHg7Ij5OT04gUFJJT1JJVEFJUkVTPC90ZD4KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzMjAiIGNvbHNwYW49IjMiIGFsaWduPSJyaWdodCIg c3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXRvcDogMDsgcGFkZGlu Zy1ib3R0b206IDA7IGJvcmRlcjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkMWQy ZDQ7IGJhY2tncm91bmQ6IG5vbmU7IHdpZHRoOiAzMzBweDsgYm9yZGVyLXJpZ2h0OiAxcHggc29s aWQgI2YzZjRmNDsgcGFkZGluZy1yaWdodDogMXB4OyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHRyIHN0eWxlPSJtYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ij4KICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIHN0eWxlPSJtYXJnaW46IDA7 IHBhZGRpbmc6IDA7IHBhZGRpbmctbGVmdDogMTBweDsgYm9yZGVyLXNwYWNpbmc6IDA7IGJvcmRl ci1jb2xsYXBzZTogY29sbGFwc2U7IGJvcmRlcjogbm9uZTsgYm9yZGVyLWxlZnQ6IDFweCBzb2xp ZCAjZDFkMmQ0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyI+Jm5ic3A7PC90ZD4KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIiIHN0eWxlPSJtYXJn aW46IDA7IHBhZGRpbmc6IDA7IHBhZGRpbmctcmlnaHQ6IDEwcHg7IGJvcmRlci1zcGFjaW5nOiAw OyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yaWdodDog MXB4IHNvbGlkICNkMWQyZDQ7IGJvcmRlci10b3A6IDFweCBzb2xpZCAjZDFkMmQ0OyBiYWNrZ3Jv dW5kLWNvbG9yOiAjZmZmZmZmOyI+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHN0eWxl PSJtYXJnaW46MDtwYWRkaW5nOjA7Ym9yZGVyOjA7Ij4KICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHRkIGNvbHNwYW49IjMiIHN0eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7 IGJvcmRlci10b3A6IDA7ICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QxZDJkNDsgYm9yZGVy LWxlZnQ6IDFweCBzb2xpZCAjZDFkMmQ0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyB3aWR0 aDogMTAwJTsgcGFkZGluZy1sZWZ0OiAxMHB4OyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyI+Jm5ic3A7 PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IjIi IHN0eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7IHBhZGRpbmctcmlnaHQ6IDEwcHg7IGJvcmRl ci1zcGFjaW5nOiAwOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBib3JkZXI6IG5vbmU7IGJv cmRlci1yaWdodDogMXB4IHNvbGlkICNkMWQyZDQ7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAj ZDFkMmQ0OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOyI+Jm5ic3A7PC90ZD4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC90YWJsZT48YnI+PGJyPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4m bmJzcDs8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAg ICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iNDAiIHN0 eWxlPSJ3aWR0aDogNDBweDsiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAg IDx0ZCBjb2xzcGFuPSIyIiBzdHlsZT0iIGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjM7IHdpZHRo OjcyMHB4OyIgd2lkdGg9IjcyMCI+PGJyPjx0YWJsZSB3aWR0aD0iNjYwIiBzdHlsZT0id2lkdGg6 NjYwcHg7Ym9yZGVyLXNwYWNpbmc6IDA7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IG1hcmdp bjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7IG1zby10 YWJsZS1yc3BhY2U6IDBwdDsgdGV4dC1hbGlnbjogbGVmdDsgbWFyZ2luLWxlZnQ6IGF1dG87IG1h cmdpbi1yaWdodDogYXV0bzsgdGV4dC1hbGlnbjogY2VudGVyOyB0YWJsZS1sYXlvdXQ6IGZpeGVk IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8dHIgc3R5bGU9Im1hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDsiPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjMyMCIgY29sc3Bhbj0i MiIgYWxpZ249ImxlZnQiIHN0eWxlPSJmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgVmVy ZGFuYSwgc2Fucy1zZXJpZjsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbWFyZ2luOiAwOyBw YWRkaW5nLXJpZ2h0OiAwOyBwYWRkaW5nLXRvcDogOHB4OyBwYWRkaW5nLWJvdHRvbTogOHB4OyBw YWRkaW5nLWxlZnQ6IDFweDsgdGV4dC1hbGlnbjogY2VudGVyOyBmb250LXNpemU6IDE0cHg7IGJv cmRlcjogMXB4IHNvbGlkICNkMWQyZDQ7IGJvcmRlci1ib3R0b206IG5vbmU7IGJhY2tncm91bmQt Y29sb3I6ICNmZmZmZmY7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IGZvbnQtd2VpZ2h0OiBi b2xkOyB3aWR0aDogMzMwcHg7Ij5JTkTDiVNJUkFCTEVTPC90ZD4KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIzMjAiIGNvbHNwYW49IjMiIGFsaWduPSJyaWdo dCIgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZy1sZWZ0OiAwOyBwYWRkaW5nLXRvcDogMDsgcGFk ZGluZy1ib3R0b206IDA7IGJvcmRlcjogbm9uZTsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNk MWQyZDQ7IGJhY2tncm91bmQ6IG5vbmU7IHdpZHRoOiAzMzBweDsgYm9yZGVyLXJpZcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5n PSIwIiBzdHlsZT0iYm9yZGVyLXNwYWNpbmc6IDA7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7 IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyBtc28tdGFibGUtbHNwYWNlOiAwcHQ7 IG1zby10YWJsZS1yc3BhY2U6IDBwdDsiPgogICAgICAgICAgICA8dHIgc3R5bGU9Im1hcmdpbjog MDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyI+CiAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjEz IiBzdHlsZT0idGV4dC1hbGlnbjogbGVmdDsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3JkZXI6 IDA7IHdpZHRoOiAxM3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3N0ZGOyBib3JkZXItYm90dG9t OiAxcHggc29saWQgI2JlYzFjNTsiPgoJCQkJCQk8aW1nIHN0eWxlPSJtYXJnaW4tbGVmdDogYXV0 bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyBib3JkZXItc3R5bGU6IG5vbmU7IGJvcmRlcjogMDsgbWFy Z2luLXRvcDogMDsgbWFyZ2luLWJvdHRvbTogMDsgb3V0bGluZTogbm9uZTsgcGFkZGluZzogMDsg dGV4dC1kZWNvcmF0aW9uOiBub25lOyAtbXMtaW50ZXJwb2xhdGlvbi1tb2RlOiBiaWN1YmljOyBk aXNwbGF5OiBibG9jazsiIGFsdD0ic3BhbSIgc3JjPSJjaWQ6c3BhbSIgLz4gICAgICAgICAgICAg ICAgIDwvdGQ+CgkJCQkJPHRkIHN0eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjog MDsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkMWQyZDQ7Ij4KICAgICAgICAgICAgICAgICAg ICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFk ZGluZz0iMCIgc3R5bGU9ImJvcmRlci1zcGFjaW5nOiAwOyBib3JkZXItY29sbGFwc2U6IGNvbGxh cHNlOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsgbXNvLXRhYmxlLWxzcGFjZTog MHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7Ij4gICAgICAgICAgICAgICAgICAgICAgICAgPHRy IHN0eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsiPgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iZW1haWwtY29udGVudCIgd2lkdGg9IjI2MCIgc3R5 bGU9Im1hcmdpbjogMDsgcGFkZGluZy1yaWdodDogMDsgYm9yZGVyOiAwOyB3aWR0aDogMjYwcHg7 IGRpc3BsYXk6IGlubGluZS1ibG9jazsgcGFkZGluZy1sZWZ0OiA4cHg7IHBhZGRpbmctdG9wOiA1 cHg7IHBhZGRpbmctYm90dG9tOiA4cHg7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFk ZGluZz0iMCIgc3R5bGU9ImJvcmRlci1zcGFjaW5nOiAwOyBib3JkZXItY29sbGFwc2U6IGNvbGxh cHNlOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsgbXNvLXRhYmxlLWxzcGFjZTog MHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7IHRleHQtYWxpZ246IGxlZnQ7Ij4KICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBzdHlsZT0ibWFyZ2luOiAwOyBwYWRkaW5n OiAwOyBib3JkZXI6IDA7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8dGQgY2xhc3M9InJpZ2h0LWJvcmRlciIgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsg Ym9yZGVyOiAwOyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjYmJiZGMwOyI+CiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSB3aWR0aD0iOTclIiBib3Jk ZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgc3R5bGU9ImJvcmRlci1zcGFj aW5nOiAwOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7 IGJvcmRlcjogMDsgbXNvLXRhYmxlLWxzcGFjZTogMHB0OyBtc28tdGFibGUtcnNwYWNlOiAwcHQ7 IHRleHQtYWxpZ246IGxlZnQ7IHdpZHRoOiA5NyUiPgogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHN0eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7 IGJvcmRlcjogMDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiBIZWx2ZXRpY2Es IEFyaWFsLCBWZXJkYW5hLCBUcmVidWNoZXQgTVM7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7 IHRleHQtYWxpZ246IGxlZnQ7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyBmb250 LXNpemU6IDEwcHg7IGZvbnQtc3R5bGU6IGl0YWxpYzsgY29sb3I6ICM1ODU4NWI7Ij4xNiBBcHIg MTA6MTg8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDx0ZCBhbGlnbj0icmlnaHQiIHN0eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJv cmRlcjogMDsgdGV4dC1hbGlnbjogcmlnaHQ7Ij48YSBocmVmPSJodHRwczovL2Nsb3VkLnZhZGVz ZWN1cmUuY29tL2NvbnNvbGUvIy9jbGljay9xdWFyYW50aW5lP3Rva2VuPTE5NjgyNjAtOTA1NDhh ZDAtNDdjNS00NTNmLWFjZTAtODk2N2U3MWRmNjZiJnR5cGU9U0lOR0xFX1VTRVImbWVzc2FnZUlk PTE3MTMyNTU1MjMuVjY0NzcwSTE0NjhNODQ4MzIuMTQyODY0MDM0NyZhY3Rpb249ZGVsZXRlIiBz dHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyI+PGltZyBoZWlnaHQ9IjEyIiB3aWR0aD0iMTIi IGFsaWduPSJyaWdodCIgc3R5bGU9Im1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1 dG87IGJvcmRlcjogbm9uZTsiIGFsdD0ieCIgc3JjPSJjaWQ6ZGVsZXRlIiAvPjwvYT48L3RkPgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBzdHlsZT0i bWFyZ2luOiAwO3BhZGRpbmc6IDA7Ym9yZGVyOiAwOyI+CgkJCQkJCQkJCQkJCQkJPHRkIGNvbHNw YW49IjIiIHN0eWxlPSJmb250LWZhbWlseTogSGVsdmV0aWNhLCBBcmlhbCwgVmVyZGFuYSwgVHJl YnVjaGV0IE1TOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyB0ZXh0LWFsaWduOiBsZWZ0OyBt YXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsiPgkJCQkJCQkJCQkJCQkJCTxzcGFuIHN0 eWxlPSJmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxMnB4OyI+PGEgc3R5bGU9InRleHQt ZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6ICM0MDQwNDE7IiBocmVmPSJodHRwczovL2Nsb3VkLnZh ZGVzZWN1cmUuY29tL2NvbnNvbGUvIy9jbGljay9xdWFyYW50aW5lP3Rva2VuPTE5NjgyNjAtOTA1 NDhhZDAtNDdjNS00NTNmLWFjZTAtODk2N2U3MWRmNjZiJnR5cGU9U0lOR0xFX1VTRVImbWVzc2Fn ZUlkPTE3MTMyNTU1MjMuVjY0NzcwSTE0NjhNODQ4MzIuMTQyODY0MDM0NyZhY3Rpb249dmlldyI+ Tm9zJiMzMjtTb3J0aWVzJiMzMjtGYWNpbCYjNDY7JiM0NjsmIzQ2OzwvYT48L3NwYW4+CgkJCQkJ CQkJCQkJCQkJCTxzcGFuIHN0eWxlPSJmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjNDA0MDQxOyI+ PGEgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTsgY29sb3I6ICM0MDQwNDE7IiBocmVmPSJo dHRwczovL2Nsb3VkLnZhZGVzZWN1cmUuY29tL2NvbnNvbGUvIy9jbGljay9xdWFyYW50aW5lP3Rv a2VuPTE5NjgyNjAtOTA1NDhhZDAtNDdjNS00NTNmLWFjZTAtODk2N2U3MWRmNjZiJnR5cGU9U0lO R0xFX1VTRVImbWVzc2FnZUlkPTE3MTMyNTU1MjMuVjY0NzcwSTE0NjhNODQ4MzIuMTQyODY0MDM0 NyZhY3Rpb249dmlldyI+bWFya2V0aW5nJiM2NDtub3Nzb3J0JiM0NjsmIzQ2OyYjNDY7PC9hPjwv c3Bhbj4KCQkJCQkJCQkJCQkJCQk8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDx0ciBzdHlsZT0ibWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3JkZXI6 IDA7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8dGQgY29sc3Bhbj0iMiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIEFyaWFsLCBW ZXJkYW5hLCBUcmVidWNoZXQgTVM7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwzogMDsgYm9yZGVyOiAwOyAtd2Via2l0LWJvcmRlci1yYWRpdXM6 IDNweDsgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7IGJvcmRlci1yYWRpdXM6IDNweDsiPjxhIGhy ZWY9Imh0dHBzOi8vY2xvdWQudmFkZXNlY3VyZS5jb20vY29uc29sZS8jL2NsaWNrL3F1YXJhbnRp bmU/dG9rZW49MTk2ODI2MC05MDU0OGFkMC00N2M1LTQ1M2YtYWNlMC04OTY3ZTcxZGY2NmImdHlw ZT1TSU5HTEVfVVNFUiZtZXNzYWdlSWQ9MTcxMzI1NTUyMy5WNjQ3NzBJMTQ2OE04NDgzMi4xNDI4 NjQwMzQ3JmFjdGlvbj1kZWxpdmVyIiB0aXRsZT0iUGxhY2VyIGNldCBlbWFpbCBlbiBlbWFpbCBw cmlvcml0YWlyZSIgdGFyZ2V0PSJfYmxhbmsiIHN0eWxlPSJmb250LXNpemU6IDEwcHg7IGNvbG9y OiAjNmQ2ZTcwOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsg LXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7IC1tb3otYm9yZGVyLXJhZGl1czogM3B4OyBib3Jk ZXItcmFkaXVzOiAzcHg7IHBhZGRpbmc6IDRweCA4cHg7IGJvcmRlcjogMXB4IHNvbGlkICM4OThi OGU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsiPjwhLS1baWYgZ3RlIG1zbyA5XT4mbmJzcDsmbmJz cDs8IVtlbmRpZl0tLT5SZWzDomNoZXI8IS0tW2lmIGd0ZSBtc28gOV0+Jm5ic3A7Jm5ic3A7PCFb ZW5kaWZdLS0+PC9hPjwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIHN0eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7 IGJvcmRlcjogMDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHN0eWxl PSJib3JkZXItc3BhY2luZzogMDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbWFyZ2luOiAw OyBwYWRkaW5nOiAwOyBib3JkZXI6IDA7IG1zby10YWJsZS1sc3BhY2U6IDBwdDsgbXNvLXRhYmxl LXJzcGFjZTogMHB0OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8dHIgc3R5bGU9Im1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAwOyI+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0 eWxlPSJtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsiPgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIw IiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHN0eWxlPSJtYXJnaW46 IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBz dHlsZT0iZm9udC1mYW1pbHk6IEhlbHZldGljYSwgQXJpYWwsIFZlcmRhbmEsIFRyZWJ1Y2hldCBN UzsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3Jk ZXI6IDA7IC13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OyAtbW96LWJvcmRlci1yYWRpdXM6IDNw eDsgYm9yZGVyLXJhZGl1czogM3B4OyI+PGEgaHJlZj0iaHR0cHM6Ly9jbG91ZC52YWRlc2VjdXJl LmNvbS9jb25zb2xlLyMvY2xpY2svcXVhcmFudGluZT90b2tlbj0xOTY4MjYwLTkwNTQ4YWQwLTQ3 YzUtNDUzZi1hY2UwLTg5NjdlNzFkZjY2YiZ0eXBlPVNJTkdMRV9VU0VSJm1lc3NhZ2VJZD0xNzEz MjU1NTIzLlY2NDc3MEkxNDY4TTg0ODMyLjE0Mjg2NDAzNDcmYWN0aW9uPWFwcHJvdmUiIHRpdGxl PSJUb3Vqb3VycyBjb25zaWTDqXJlciBjb21tZSBwcmlvcml0YWlyZSIgdGFyZ2V0PSJfYmxhbmsi IHN0eWxlPSJmb250LXNpemU6IDEwcHg7IGNvbG9yOiAjNmQ2ZTcwOyB0ZXh0LWRlY29yYXRpb246 IG5vbmU7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7 IC1tb3otYm9yZGVyLXJhZGl1czogM3B4OyBib3JkZXItcmFkaXVzOiAzcHg7IHBhZGRpbmc6IDRw eCA4cHg7IGJvcmRlcjogMXB4IHNvbGlkICM4OThiOGU7IGRpc3BsYXk6IGlubGluZS1ibG9jazsi PjwhLS1baWYgZ3RlIG1zbyA5XT4mbmJzcDsmbmJzcDs8IVtlbmRpZl0tLT5MaXN0ZSBibGFuY2hl PCEtLVtpZiBndGUgbXNvIDldPiZuYnNwOyZuYnNwOzwhW2VuZGlmXS0tPjwvYT48L3RkPgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rk PiAKCQkJCQkJCQkJCQk8dGQ+Jm5ic3A7PC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8 L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgICAgICA8L3RkPgog ICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICA8dGQg c3R5bGU9InRleHQtYWxpZ246IGxlZnQ7IG1hcmdpbjogMDsgcGFkZGluZzogMDsgYm9yZGVyOiAw OyI+Jm5ic3A7PC90ZD4KCQkgICAgICAgPC90cj4KICAgICAgICA8L3RhYmxlPgogICAgPC90ZD4K PC90cj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciBzdHlsZT0ibWFyZ2lu OjA7cGFkZGluZzowO2JvcmRlcjowOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDx0ZCBjb2xzcGFuPSIzIiBzdHlsZT0ibWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBib3JkZXIt dG9wOiAwOyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkMWQyZDQ7IGJvcmRlci1sZWZ0OiAx cHggc29saWQgI2QxZDJkNDsgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsgd2lkdGg6IDEwMCU7 IHBhZGRpbmctbGVmdDogMTBweDsgcGFkZGluZy1yaWdodDogMTBweDsiPiZuYnNwOzwvdGQ+CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSIyIiBzdHlsZT0i bWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBwYWRkaW5nLXJpZ2h0OiAxMHB4OyBib3JkZXItc3BhY2lu ZzogMDsgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsgYm9yZGVyOiBub25lOyBib3JkZXItcmln aHQ6IDFweCBzb2xpZCAjZDFkMmQ0OyBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2QxZDJkNDsg YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsiPiZuYnNwOzwvdGQ+CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFi bGU+PGJyPjxicj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+Jm5ic3A7PC90 ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAg PHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj0iNCI+Jm5ic3A7PGJy Pjxicj48L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAg ICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICA8 L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgIDx0 ZCBzdHlsZT0id29yZC1icmVhazpicmVhay1hbGw7Zm9udC1zaXplOjFweDtsaW5lLWhlaWdodDow O2xldHRlci1zcGFjaW5nOjgwcHgiPiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzwvdGQ+CiAg ICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgPHRkIHN0eWxl PSJwYWRkaW5nOjE2cHggMCAxN3B4OyIgYWxpZ249ImNlbnRlciI+PHNwYW4gc3R5bGU9ImNvbG9y OiAjNjE2MTYyOyBmb250LXNpemU6IDEzcHg7IGZvbnQtZmFtaWx5OiBIZWxldnRpY2EsIEFyaWFs LCBzYW5zLXNlcmlmOyI+VmFkZSDCqSAyMDIxPC9zcGFuPjwvdGQ+CiAgICAgICAgICAgIDwvdHI+ CiAgICAgICAgIDwvdGJvZHk+CiAgICAgIDwvdGFibGU+CiAgIDwvYm9keT4KPC9odG1sPg=------=_Part_1440622_910372461.1713334288255 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMBAMAAACkW0HUAAAAFVBMVEUAAAC9vsC9vsC9vsC9vsC9 vsC9vsB2CSz6AAAABnRSTlMAYPAwkFBPs1gFAAAARklEQVQI12OAAUcGBhEGBpY0AcY0BwZmtUSx JAMGBqO0NGUGBiAXxGFgTEsTAFJiSWqJII6yEZDLmGTArAYUDWZgMIUZBQB3kAjnOpIkOgAAAABJ RU5ErkJggg=------=_Part_1440622_910372461.1713334288255 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: iVBORw0KGgoAAAANSUhEUgAAAJYAAAAtCAYAAABMDJJUAAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAA B3RJTUUH5QQVETYpzlDhogAAEbFJREFUeNrtnHmcVNWVx7/nvapuoAsVRFncJgjuGo2oEdQ4aqKA GsQV44agSOGGSxIniTqjjqMxUT5AgwMuLK6Io4QYmXFDRVBRiTq4IQMGBNmlq4Huqronf5xXdHV1 dXdV12twIr/Ppz/96t33zr3v3nPPPfcsV8iDk1kF0N1DT4jgyjz0oyjJuc+xDy3F3cwB6O2hh0ZI Ox+HjxLBUXedxqt3zwXXmvM7c113vz69dA5t5/noch99CdjSkZta/B3/KIiTiAJvAkdn3X4R6FtJ rGT6kcxFH9agVEQ8Nl+QQgf6uG6gRwbPfKn4Hw/kq4993IMCK4DU0/xTsfVdCly5nfpyLegsH/er 9dy7rAO/3E7N+H7A60UVR1FFLeX7K8k/KjIWOAs4hjrG2xf4OfBLYJ6gA5UqzmNzsfXNFvSV7fSt uwpcCFwt6HZqwvcHHoBD9gAeUfQaYKcmno8C3TwYXU67CW1Yvu/FfFlQRbfQhwjpxwUdJHAZsGg7 fXM5yHaq+vsDr5wU2EAfXcR7uwNDBZ0UId1jMJ8zhM+afelmTiCKWxUhPUlgkMCDwKZt9bEK3yiM 2iGvWh+RaspO99CRgN+C9/sI+oiPXq7IF4W8cD0nAlDJS/MVPgIeA24ETm9hG4rB2yBrv6sSK04C oBuwG6BYQ5cBa63PCleq4yRwaJmH9MBUGgG2AF8Arti2XYHikRSf2u5ALGgfQduW57YtosjhoLu2 tDMEjgMe9UlfPIyFiz08xnFAAR9+CkDNRGa9ofCJoJcAI4Af0Eojr8i0NFLllUAjTjVAF9CBQEfq BskHXgHmZHdywCw7AYOpPyACTAWWGgm/G+hZwAXY6pEOnnkFeFrwno2T2BebgJk6PYzxplQSS2fV VwFc4iEHYXplu+D5dcDDDh4BljbXD3E2Bs31IlB9LnAIcD6wZ9AGAd4D/jScxExgoYBWEiMCXF3q gAnaW+BWH73S4WqLeXcopwKseZS/3A/MFPQC4Lpg0MLEa8BfADqUbm6oBs4DfpJzvwvwTpxEMmcG 3wz8hvoTZmXQnqXg9QO9GzgAKMuh2Q/4ieLOAd4Hbs0pfweT+umAqdoDdwFxGq4A3YDfenCi4I1U XDOSSwCvF/CvQB9g5zwP9QGOFdvt3w+Mi5NIe0DnUnvZmqADQAd8Q4xr+ajo9y+jr0Zwn4Pchc2y l8AUwHAgC5N4a3ctkakqqQC0CngmT/sugTpxHQw02K46VwpPU2OUk4D/BA6jIVNlUAGcDFzcWLuC utoA/44Ji6bUiuMUNwqTPE3Qk0OBRzHm3rkJeh7QHbgXuCJzIyzs7MGYvfj2/BrKuY4PiybwC07n IvqnI6RngV4otiwsxJaFUvCtwsSQ19fnMX0lG+XA/jn1nAT0zXmuCnSOmO5zPrBHAfW1xdSEpnA5 NrCFfGpvGmGs4SRwiAcMBA7OKlLgr8ALIDOBNzDpnd3GSxT29oBkWD0N7AZ6V4wt+0VKUJPOZQBl uNVtSU0Xs5+NBhK0QOm03pDnBW1+21owPR8h/TdgSk5RFIgr+FnSqjOwS85z/wcyAzgUuChPFQ5b 3q7FbIdv0uzkcuWY7bE8pyAF/A34l4DeJGBjU5QE8NC9gKtyil4G+kNFf5CfY5PmvpxnjhU4zQMe CqvDA3RX9GaPZOwmPmgxkQEMpC/nEsEt8tDfCHq8mJT4tkhSTuHlJN6mztwQygeOoy3gIzZ71+YU dwPZL7jeGfJW+gdFNgODqFOsM0iD3I3pSKM9vPsEORsYS+MTKwXeEdgkzMXTCsc7W6ZGY8vk6dhK 0ATkakxnzOBrQX4lyPJKhEraOauX/4EGlvIzPUHnEq7UEkGHAre1IVXy6tOPc4mQ3hTFLRD0YuAa gQ1FkHgf5JWwN5r97d+LwNs5RfuDnhp0xS5A15zyD0DeKjd+ymc7fBL0P4CNlcQYQzt16Co1xlja RJPKoYE9Yr3AOIGl44mlgw1FAlvCpjb9hdol50Y7Ra9W9ME4iQfjJB4ExpN/4vT3FKYDo2jhMtMY BM5K4R30a94rmdbPuICTGUQUVy3wLDZLCoGCvLyJtsu6cX2Yn0c/Yqj12e+BmpziYxVpBxqnof40 X0kvqqW6MeV6PpDItQv5sByoLLKZNZrj4TC6AshioKoIWrtgJpMrs/6GYXpY29yHvShaLcgoYElY nR5gX9CHBbfHLbwbCkHBJ0p1tdiMK+SNDYo8VN5g3EPFp9iWPxunielPPXPurwOekiL3TMLWWR/S LlkBTUNRTtMUZiIp6M8D2IV1ywQdKXYzNAj8yEf6JkPafJ7ABShtAF1fYPfN9JCvpZUs7Q4PQVfS UIKWgd5Jw93ga8DcZsj+EGiXpfxn0BUYXmQTozRuTupB037hXCwDORk4HDgiz1+9+958YrzMXpRT O0PQ3xOq7YiIoPe2I3XGrQ1UkVZHSmF2LVTvyTWtUsF42qHGtNOpv+S0AU4J/mdjCrApWOYc8Eke soMwM0tFnETGPtUOGInZwxpDEnPZZGNXYLiDrsNJeCOo5mo2lQO9gjoahZp0zUZX0DOx+ysria2s JJaRUKsAX6BagrKtosThI+hUQQtcZgpGB0EH+aRjtzc7WUPFO8ATrV1JwCSfYop8U3gf6lmOFXiY hsxQju0ARwFDgKHB9fU0bvT0wfsQeCFP2WAP3hC4RtEhDnc38CdMMjYKsTpX5bTrVuDfgAuHs6nT CKp7YHrXCGC2wj0KbeMk6gL95tCBPqxZpchQbFt/SIj9P0iQ5VVEbw6RZlNQ4OV9WLBJQrem5IXD pNFQGkqpDGYDX2aUcjX1ZqEgT2MW+2y0wZhqSIH1C7gENpkGUp8ByzBJ90AxnedgqW8egd9mFbUF fg0kBTdfzSNwcFZ9u4NMBp1XT/mZQyd2pWaxmBEtzCURgTM6UHvYXbyVCVNuRchmRZ79kh+1cj31 sBh4tZGylZgE2IpxtEeQauBx4JsC6Kdo3swyDpOCheADLBI4D5EYvhlkn4C8LpQocCzmhspm4p1A rx9LRUOtusrcVWMEvY9w7Vv7C4zz0U4h0swLhamCflI6pcIQSKE12HKYZ0LKkxD5OteDFrw3C7Nw L6PxXZoD5tGEMTugVY1Z6ifQtPloYWCEXdI0PVmIhZM/DA13E3mwClhxOV94kdySV+nEKazaghnk TlGkV3G70qagRwo6oAadOJp3uKao2MKtNAC+wqRAlzwPbAGZm8Kv2a/oTVTJmBD870K98Bh9GlLJ JuKpnsOk1qnYTvJI6sJSFmIO7ylAJ2yyZ4fNLM38riRGnMQG4Cbgcyzy4GeYhBFgPWYYHQ+yKAiX mh2872G6YhbaAP4CqB6m6OsCB2JLbfesNkhA421FXnTI3J2pco3uw/uxnBSR03zcBA/ds7HsmNz7 Xt576ax3dJGPngd8cBPHFz1yc3gMRdpDarqP/jRSL0vH4aMLIhYJsK5nA1fXdxvBDnBvLLzFASLI akGWKOrGUlEULUE6KtqduuVqM/C/QLolmTjDSODBAWKuqq0TR03yfTMui2ajjHUqK4mYinmjoPdE cH44jOXw0cci6JUONt3QIKSpecxjEilkuorM9Yqj7utj3ZfEd7RoY45DtQLBq1XM6iS2CjkckS BMiFBbFIyQGtYLZc45AZXzXw6+7AtkaTJnGx5M/VWPZOmBbOdqC/80gfOorwssEUZvjop9/NiPbv F5pkrD/TjQRllKFLBJkMYTrd9AAPLqzA98c2uksvCpuBt5J4NQcxrDX7bAcKQLNOvFeDhJEUjBfb KYaJ62pJDnbAhGYN181iocDj+h3NwPm+oSDv8LPsRRtSTtBpNAzHLQVtgeFlJPdNl5b5pYpMfZY9 t5RCZAfCQ1HT+3yWoHCSjz7h43Zv6a6w/kEgDg/3VAS9SmFDkLXTJOYxiTQyxkdHGJ30RrHgunlH WCz/NkNgIogBMYXOAoeBLgRZBiSiJKuTRD3MBiUg64HayhzTwVXU4PAlQs1OoDG1sJsKgXeBhIfb ALgx7JSpsyPmv6sF1lUSU4DhbERxnkckY4heE4xzp/zjLRuBTZVFmDIKQaSYhz2UNPK6oJMhvCNb BM5W68A/FPJ8kMn5DOZja6/Ik2XUvJNsNMmldRAnIcA/B+3oFyRHtMXCjpPA60miYzHb0UuYoXII 8FYOHaDW8ywEOQ4cImad9DDdcbHDGw9MiZNIBvcnBnW/BQygvpekI7aTj2Jx6eVYaE8Hgii/4Lk0 6PPAtDiJVzPMGQaKCpR6gh8QxaUE/ijoC8W82wwiAsMiuD4P8d9MohDSugRznyRAXqmhrdtW0ipO NXELvT8HY/BLMaNhAnNrVGFM1h8LXfGwYwk6k5PsEEifCMhwzHVyIsYk6zBpswWzxI/D8hMzs6cj FtWZz0XmZ9XnBb87Yx6B8oDmlqDsKmAacFGchMQL8tw0j6Ij8B6jOz7pFaC30TBmpxT0FHRCGcnD vAJcSBIILoUVisxy21RpVyDSDbgFkwIfYuEkRxIEvakx3XhoYE/Rhj/lGOBubEl9DTiBusC5Y4GZ GEPdCpznt9zHlga5D3Me/xD4KRYK3RELse4eVg+1OLQzjSwQ9B7CPdTjQOCKNqTLnmBmc88GaU0y qiObN4TYhgKggPbF9KDVgtwkyF2VxFZXEltXSWz9OGKvVhK7AfPPNcH1nh/ExrcHPsaWykWVxNZX Eltn38hV2JJXDgxL0+KT0RSoBvm2ktgGLD5sMOZv7IzFVYWCFjHWZHoSxaXSyANYrlmYuCKJXFtO Sp5iRiO945EmshI4R9HHV9OWoxgccjOagoCdIRbBQk/ebHn4s3pYmDDAf62gYnG2Hy+4XgE8jfkP d8eWtrD0oU+wBBWwiR0KWiyxJrEfbUjXBratME0Q5QK3J/FujJCKTuO5Bg/05mKO4xfpH3Pp58cw eP0x25SptmKrfURRXOlJTkngma71Eovr4Tks0TSqJt1KRsC0aSywM1SUnOUQJfWmmDhdEmK7KgS9 U5Hr2pLynts6of6h4QvSVRsVRFqOicqUNB8b5ShAoo2oi4qOhv0xJTHWBA5gHAcTo2aO2NE4YeYm lgvcnsK7IYKLzmB62N/eYgTpW5nk0QoszKVUeIpeKTg/zpp8tY6gLlzF0QhzCT4e0QODdjXJXGox iWXY6T6ZZoTSR0XZsRpDDREERoMeiu2GwkKFoHcpaBmpB2YyPR0hxWmcH2IVxUNNIIwCOQ+LJ58I XD6MxFIPnIAnNmAiyGZXf3xzBzuJ7fqOBnor3hmOsheGsK42igeID3oUSCaV7M/gVYFODjYQewMn xdFZO7ORjWg7tYNBOmKKf17mqjNzcBq286wFeb7081cMoTDWGA7hWj5aD8TFWhbmyJcJ3K7IfmUk xzlkQYi0S4B8DtyOnUV1IjDLt+jMl4Gj1dK4VNFMNCdYvuGJoJ3iVAXavqaCA0L6AT8WZIKPzPcp m4gZRy/DIkG7YZGzU7FzreZjKWf7A49A9cQN+HPFbF29gvpGC7Ja0cw56gL0AO0Dsjd2FMJhmCQc qzA5rBzMUI0/N/BXFNnVw433cecU6tIp4pz3RT5umo/e75DVJ3FhmM0vCteSQhA/yeYR2MFk7amf WKBYNMi9WGr8AvKHUieB3iACejNwJvlPjHkbuJP6aWa9scSXHnlovifIZcBnAWO9T8PD7Gox5r0X i6f/Jowz3qEVjmQMTpjp5KFjfPR88wWGw1gR3BYPN9tDL1JkzfZkLNi6nJRj51ZdR10seBCLLhOx pI4IMAazwucuTSnMPfYZSHvQjIuoIqvWAGZonXzODH2QS4wzE30N7UnVv6JJZjmMkL3B07aSY7 83mLIFMU/RBbMmvCYipopbM+g4NAdhM4J4Ib6ZHuWSJjbfZxa33cHWV2Et56xbG9GSuDsNwgzSHf wDdVd5Bc0SK6paLV/CC/410ipEjjH+fhrvfRXj5unyIZ66sI7m0Pno+Qnh2ck5Da3sr7DjSPVnew 3cE8HJ7nkz7ew+3n43aJ4K7wcT0bYawFEdwkH1ft4b4ow80+k7N3HM3+/wx/B9pXO+bvx3AMAAAA JXRFWHRkYXRlOmNyZWF0ZQAyMDIxLTA0LTIxVDE1OjU0OjQxKzAyOjAw+CCdHgAAACV0RVh0ZGF0 ZTptb2RpZnkAMjAyMS0wNC0yMVQxNTo1NDo0MSswMjowMIl9JaIAAAAASUVORK5CYII------=_Part_1440622_910372461.1713334288255 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: iVBORw0KGgoAAAANSUhEUgAAAA0AAAA8CAYAAAC9zTB0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA AXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAIzSURBVHgB7ZatT5xBEMbn2hM9VU62qodsDUnr eklpgqy4/gP9MLUUBY4XiQIsCoJEAMGSAAk4PgU4vgwEw0dCAg72d8PALu/uG0AhbpIL+2bneXbm mdlZStJ7fS1PtFfyDGuBWqAXAfpfF5n/p+vfn0VOM5G9XpGOdwnQh6rI0A+R80uRtopI1iWyf6J7 RpQDdbwXOXOAxoQyQ/LTrf9OKgnf0fBs848LbePInXR6vwehWdkWC7vqRA5Yz6yePvVLCc6uIiCY vo86Mb6qw/Cyhjmz5fKbk8BKNiPa3mh4KfNDLftCPFQpYO9LhOezDsyF7NHwMJTrbBfp79I14oyv ioytFoB8MzB/ObE2GAkvBdg4dApuh/t3INTrrmv/YYs7WgJCTOYEq6nXLOZl6AhB7iScFnd9trSV HvMAEIUfZrnIsfHR3asvmm+0uOb4rV3FwBFDvfG1kLDsAxCCZt081IJyEUeW88XNzQgEgT3VQthr qWcZC5wO3K9a0fnARbSuP74ISaLqkU/jkwLJsemYEoIm5RK+rWjNOkfvm9i34CSuOk6IwWmpNroT AjYAdHM1U2dyi1lOPUv4oEC9XEdY09octO9kw8Jeux2KTFqatlbNHVTcsNZK/szDgpy4rTYsWfMA 8KMMURCDkV5jkKBis++WRKa3lSAOuk2cacoaYw0w+QAgNZucSH3oCHIxgsIHYL1bv3liKDhvFlfD FyM3LC1MSPimccdWCkCPtdY/Hy1QaDcvO+LXkFxFzwAAAABJRU5ErkJggg=------=_Part_1440622_910372461.1713334288255 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: iVBORw0KGgoAAAANSUhEUgAAAJIAAACSCAYAAACue5OOAAAHiUlEQVR4Xu2dPWwVRxDHLyEIJMo0 SFAEkT6kS0EBFbhFok6HZSSCZOy7CzRO5TYFSAm9K1xS0CHLgNJCYVf4VcaKTfEgEqawPdnZsWV7 b969e8/3tXv/v/QTCPv2Y2Z4725udzaKIAiCIAjyVjN0KUpownDf8NiwYHi5z4qhZ/hgoH347/xv /LOD3+Nr+FpuY8K2CQWq23QqiukX4+iHhsUopbfmz+0jAVI22/t9LEbcJ/fNY4A8VEo/GydOG54b PivOrhseA49l2o4NarESump4avioOLJt8Bh5rFfdaUBNaJYum//hc8Yha4qzfGHNzoHnAtWoO3Ta 3Hf8anilOMVveE48N54jVJHu0Rlj5LuRPDllnRAWPTtXnjNUkmboXCQ3zkcfxbsCz3na2gAaU/zx nlBs2FIM3DXYBjG+8kZVSteM4VYVg3adVWsbaIhm6Xwk2WLXgOA4C9ZWkCPJPv9mDNRXjAZ0+tZm yJrv6xFdMEZZUgwFirFkbdhppXTTGGJTMQ4YjU1ry85pjr4zk5837CpGAePBtpy3tu2EYrpoJrys GAKUw7K1cdCapStmohvK5EG5bFhbBynJDeGprD764eWcYroVVbuYDOhsW9sHoYQmDTvKJEE9sO0n Xbf4pYRSZWKgGVLXPX5IPoncyYBm8eyTSe6J8HXWPnb8uWeSpzPcWLcX3uVyzXVbuyR5Ijzit59+ e/NMkrFGstEfNtqXAZd3Z3jt4R/L7Xo3Jy9g3UECP5h33dmMZCkI3uL7y27zS1BkURrWE/nPZnOL 43iJJ1Y2hsRSM8t2ZY21OxjgM+zTWiW7PZAvCg/OL9W4OwVbhkJmwXV3NYrpuulsTxkACIM96+NK JduoufSd2zkIi5Vqt4fLXny3UxAmsev+ciRVQVDQoTtsVVMFJaUHSmcgZNjnpWqOzpqG1zMdgdBZ t74vTQlNKZ2AbjDlhsN4kie1ntIB6Aa9cp7guDhmtnHQJTgGTqyEXmcaBl3jtRsWoymlHyNksQHH AMfC2JJi6G6joItwLIwn+sY08D7TIOgq721MjCw528NtDHSbMc5OielvpSHQZTgmRtIcfRv5ccoQ qJePNjYKS847cxsBgG+6RzhvTs7+yDYCAMdGYclph24DADDP3XDRJduvPykNAMB8KrbNWw4Sdi8G 4BCOkaGK6ffMhQAchWNkqBJ6lrkQgOM8c8Mmq4TeKRcCcJR3btgclyQivygXAnCUL/mJyZR+UC4C IAvHykAldCNzAQA6N9zwORQqjICi5FYuSelJ5gIANDhWBgqP/qA4OSmAhF4oF5TG938Q/fUP0e4e Wbk/B17xwg2fQ1W8Y+Tf/4ievJEgQiB5T87OkoqTkT/9KX8ikIIgJylZ045aBFIQ9NzwOVRNZWsQ SEGw5YbPoRL6qlxQOgikIPjqhs+hEEigOLmBhK82UJTcr7aeckFpDJL7e8ALcm+2K338B0GR+/hf aUISBEVuQrLSVyQgKHJfkeClLShKzktbLCMBRcldRoKFbaAouQvbsNQWFCdnqS0WgfFwKHDc56uripIF3WPzpiby7tRN8oQ9uxcec5QReKPdy6OGdMrxQF+ w3PiueErrGbN0uX9ovJrGaf4w5qdA88FaoHk7JSnkR+nOvEYeazjnO0B1SY5b45v0PkkzM+KI+uG x8BjmbZjgzyUZM35wOeHhkXjyLdRtYvseJcG97EYcZ/cN7LPAWuGLhlHTxjuGx5HklF/uQ+XN+xF x1MO/Hf+N/7Zwe/xNXwttzFh24QgCIIgKDT9D1uKHnrYWqOcAAAAAElFTkSuQmCC ------=_Part_1440622_910372461.1713334288255 Content-Type: image/png Content-Transfer-Encoding: base64 Content-ID: iVBORw0KGgoAAAANSUhEUgAAALQAAABGCAYAAABll74gAAAB9UlEQVR4Xu3YTatNURjA8aW8Da73 UjJRlJGBDHwEmUjIUPgE3kpKmcgHkJeQ5AOIjIwpGRkY3IwMJAYi5a2UrmdZZ2udddv73lJX1/n9 6l9737VX3cFzVvuclM7OzMwrWBTawe1r2NboUfQ1+hDdjKbGnoAF0Q5uXeRWdSGeKN0dXo+tgT sCDawe1r2Pc0fiKvSOWk7uT9h6NP0eNUhr6zO3oafYneRkeqtbzvaPR+1L5oTyrP/Yj2/3kSfmsH t69h96Nr0bFoe7OW5f13ozXRieh2tTYdHYxWRsdTGdxO3ncnWhUdip5HF1L58BxIZaih0g5uX8M2 RDdSGbifqQzpzmo97982ul4fvavWastSebaTr7vTfOnoPu/vzPV/MXHawe1r/tZF56IX1d/y/uWj 6zyY9cmaPwzno3vRqzR7oJc097X2nonXDm5fwz6m8Xfo1am8V3fy/s2j6zzAr6u1J6m8RuyNdqTZ A12b656J1w5uX8Py68bFaEsqJ/SlVH7G6+T9V1J5Fz4dXa7W8hfFXdHaVN6tDTR/oR3cvobl0/lW Kr9sfIseRpuq9bz/VPQ5epDKCd7JXwhfRm+ik8lAswgYPP4rBhoAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAA+Id+AfBVTIySAO+SAAAA[/I]
    Comment extraire chaque Part et au besoin de le décoder en base64 ?

    Cordialement

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/03/2005, 22h17
  2. Comment lire les log compressés .gz ?
    Par booboo dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 22/07/2004, 00h53
  3. [Audio] Comment lire les musiques sur un cd audio ?
    Par onlytoine dans le forum Multimédia
    Réponses: 3
    Dernier message: 10/07/2004, 22h03
  4. Comment lire les résumés/métadonnées Windows ?
    Par cedricgirard dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 18/06/2004, 18h12
  5. Réponses: 5
    Dernier message: 20/08/2002, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo