§
    (¶ÕiÊ3 ã                   óv  — d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Zddl
ZddlZddlZddlmZ 	 ddlZn# e$ r dZY nw xY wg d¢Zej                             d¦  «        Z G d„ d¦  «        Z G d„ d	e¦  «        Z G d
„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ dej        j        ¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z  G d„ de¦  «        Z! G d „ d!e¦  «        Z" G d"„ d#e¦  «        Z# G d$„ d%¦  «        Z$ G d&„ d'e$¦  «        Z%d9d)„Z&d*„ Z'd+„ Z(d,„ Z)d-„ Z*d.„ Z+ G d/„ d0e,¦  «        Z- G d1„ d2e-¦  «        Z. G d3„ d4e-¦  «        Z/ G d5„ d6e-¦  «        Z0 G d7„ d8e-¦  «        Z1dS ):zDRead/write support for Maildir, mbox, MH, Babyl, and MMDF mailboxes.é    N)ÚGenericAlias)ÚMailboxÚMaildirÚmboxÚMHÚBabylÚMMDFÚMessageÚMaildirMessageÚmboxMessageÚ	MHMessageÚBabylMessageÚMMDFMessageÚErrorÚNoSuchMailboxErrorÚNotEmptyErrorÚExternalClashErrorÚFormatErrorÚasciic                   óð   — e Zd ZdZd$d„Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d%d
„Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd%d„Zd„ Zd%d„Zd„ Zd„ Zd„ Zd „ Z d!„ Z!d"Z"d&d#„Z# e$e%¦  «        Z&dS )'r   z*A group of messages in a particular place.NTc                 ó–   — t           j                             t           j                             |¦  «        ¦  «        | _        || _        dS )zInitialize a Mailbox instance.N)ÚosÚpathÚabspathÚ
expanduserÚ_pathÚ_factory©Úselfr   ÚfactoryÚcreates       ú/usr/lib/python3.11/mailbox.pyÚ__init__zMailbox.__init__%   s2   € å”W—_’_¥R¤W×%7Ò%7¸Ñ%=Ô%=Ñ>Ô>ˆŒ
ØˆŒˆˆó    c                 ó    — t          d¦  «        ‚)ú$Add message and return assigned key.ú&Method must be implemented by subclass©ÚNotImplementedError©r   Úmessages     r"   ÚaddzMailbox.add*   ó   € å!Ð"JÑKÔKÐKr$   c                 ó    — t          d¦  «        ‚)ú=Remove the keyed message; raise KeyError if it doesn't exist.r'   r(   ©r   Úkeys     r"   ÚremovezMailbox.remove.   r-   r$   c                 ó0   — |                       |¦  «         d S ©N)r2   r0   s     r"   Ú__delitem__zMailbox.__delitem__2   s   € Ø�Š�CÑÔÐÐÐr$   c                 óT   — 	 |                       |¦  «         dS # t          $ r Y dS w xY w©z'If the keyed message exists, remove it.N)r2   ÚKeyErrorr0   s     r"   ÚdiscardzMailbox.discard5   sA   € ð	Ø�KŠK˜ÑÔÐÐÐøÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ™
'¦'c                 ó    — t          d¦  «        ‚)ú>Replace the keyed message; raise KeyError if it doesn't exist.r'   r(   ©r   r1   r+   s      r"   Ú__setitem__zMailbox.__setitem__<   r-   r$   c                 óR   — 	 |                       |¦  «        S # t          $ r |cY S w xY w)z9Return the keyed message, or default if it doesn't exist.)Ú__getitem__r8   )r   r1   Údefaults      r"   ÚgetzMailbox.get@   s?   € ð	Ø×#Ò# CÑ(Ô(Ð(øÝð 	ð 	ð 	ØˆNˆNˆNð	øøøs   ‚ —&¥&c                 óæ   — | j         s|                      |¦  «        S t          j        |                      |¦  «        ¦  «        5 }|                       |¦  «        cddd¦  «         S # 1 swxY w Y   dS )z=Return the keyed message; raise KeyError if it doesn't exist.N)r   Úget_messageÚ
contextlibÚclosingÚget_file)r   r1   Úfiles      r"   r?   zMailbox.__getitem__G   s­   € àŒ}ð 	+Ø×#Ò# CÑ(Ô(Ð(åÔ# D§M¢M°#Ñ$6Ô$6Ñ7Ô7ð +¸4Ø—}’} TÑ*Ô*ð+ð +ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +s   ÁA&Á&A*Á-A*c                 ó    — t          d¦  «        ‚)ú4Return a Message representation or raise a KeyError.r'   r(   r0   s     r"   rC   zMailbox.get_messageO   r-   r$   c                 ót   — t          j        |                      |¦  «        ¦  «                             ¦   «         S )zœReturn a string representation or raise a KeyError.

        Uses email.message.Message to create a 7bit clean string
        representation of the message.©ÚemailÚmessage_from_bytesÚ	get_bytesÚ	as_stringr0   s     r"   Ú
get_stringzMailbox.get_stringS   s-   € õ
 Ô'¨¯ª°sÑ(;Ô(;Ñ<Ô<×FÒFÑHÔHÐHr$   c                 ó    — t          d¦  «        ‚)z8Return a byte string representation or raise a KeyError.r'   r(   r0   s     r"   rN   zMailbox.get_bytesZ   r-   r$   c                 ó    — t          d¦  «        ‚)ú6Return a file-like representation or raise a KeyError.r'   r(   r0   s     r"   rF   zMailbox.get_file^   r-   r$   c                 ó    — t          d¦  «        ‚)úReturn an iterator over keys.r'   r(   ©r   s    r"   ÚiterkeyszMailbox.iterkeysb   r-   r$   c                 óD   — t          |                      ¦   «         ¦  «        S )zReturn a list of keys.)ÚlistrW   rV   s    r"   ÚkeyszMailbox.keysf   s   € å�D—M’M‘O”OÑ$Ô$Ð$r$   c              #   ót   K  — |                       ¦   «         D ] }	 | |         }n# t          $ r Y Œw xY w|V — Œ!dS )z%Return an iterator over all messages.N©rW   r8   ©r   r1   Úvalues      r"   Ú
itervalueszMailbox.itervaluesj   sb   è è € à—=’=‘?”?ð 	ð 	ˆCðØ˜Sœ	��øÝð ð ð Ø�ðøøøàˆKˆKˆKˆKð	ð 	ó   š#£
0¯0c                 ó*   — |                       ¦   «         S r4   )r_   rV   s    r"   Ú__iter__zMailbox.__iter__s   s   € Ø�ŠÑ Ô Ð r$   c                 óD   — t          |                      ¦   «         ¦  «        S )z,Return a list of messages. Memory intensive.)rY   r_   rV   s    r"   ÚvalueszMailbox.valuesv   s   € å�D—O’OÑ%Ô%Ñ&Ô&Ð&r$   c              #   óx   K  — |                       ¦   «         D ]"}	 | |         }n# t          $ r Y Œw xY w||fV — Œ#dS )z.Return an iterator over (key, message) tuples.Nr\   r]   s      r"   Ú	iteritemszMailbox.iteritemsz   sj   è è € à—=’=‘?”?ð 	ð 	ˆCðØ˜Sœ	��øÝð ð ð Ø�ðøøøà˜�,ÐÐÐÐð	ð 	r`   c                 óD   — t          |                      ¦   «         ¦  «        S )z9Return a list of (key, message) tuples. Memory intensive.)rY   rf   rV   s    r"   ÚitemszMailbox.itemsƒ   s   € å�D—N’NÑ$Ô$Ñ%Ô%Ð%r$   c                 ó    — t          d¦  «        ‚)ú9Return True if the keyed message exists, False otherwise.r'   r(   r0   s     r"   Ú__contains__zMailbox.__contains__‡   r-   r$   c                 ó    — t          d¦  «        ‚)ú*Return a count of messages in the mailbox.r'   r(   rV   s    r"   Ú__len__zMailbox.__len__‹   r-   r$   c                 ó^   — |                       ¦   «         D ]}|                      |¦  «         ŒdS )zDelete all messages.N)rZ   r9   r0   s     r"   ÚclearzMailbox.clear�   s8   € à—9’9‘;”;ð 	ð 	ˆCØ�LŠL˜ÑÔÐÐð	ð 	r$   c                 óh   — 	 | |         }n# t           $ r |cY S w xY w|                      |¦  «         |S )z3Delete the keyed message and return it, or default.)r8   r9   )r   r1   r@   Úresults       r"   ÚpopzMailbox.pop”   sM   € ð	Ø˜#”YˆFˆFøÝð 	ð 	ð 	ØˆNˆNˆNð	øøøà�Š�SÑÔÐØˆs   ‚ ‹™c                 ó~   — |                       ¦   «         D ]}||                      |¦  «        fc S t          d¦  «        ‚)z6Delete an arbitrary (key, message) pair and return it.zNo messages in mailbox)rW   rs   r8   r0   s     r"   ÚpopitemzMailbox.popitem�   sC   € à—=’=‘?”?ð 	5ð 	5ˆCØ˜Ÿš #™œÐ'Ð'Ð'Ð'åÐ3Ñ4Ô4Ð4r$   c                 ó  — t          |d¦  «        r|                     ¦   «         }n't          |d¦  «        r|                     ¦   «         }n|}d}|D ]\  }}	 || |<   Œ# t          $ r d}Y Œw xY w|rt          d¦  «        ‚dS )z4Change the messages that correspond to certain keys.rf   rh   FTzNo message with key(s)N)Úhasattrrf   rh   r8   )r   ÚargÚsourceÚbad_keyr1   r+   s         r"   ÚupdatezMailbox.update¤   s¶   € å�3˜Ñ$Ô$ð 	Ø—]’]‘_”_ˆFˆFÝ�S˜'Ñ"Ô"ð 	Ø—Y’Y‘[”[ˆFˆFàˆFØˆØ"ð 	ð 	‰LˆC�ðØ#��S‘	�	øÝð ð ð Ø���ðøøøàð 	5ÝÐ3Ñ4Ô4Ð4ð	5ð 	5s   ÁAÁA,Á+A,c                 ó    — t          d¦  «        ‚)ú&Write any pending changes to the disk.r'   r(   rV   s    r"   ÚflushzMailbox.flushµ   r-   r$   c                 ó    — t          d¦  «        ‚)úLock the mailbox.r'   r(   rV   s    r"   ÚlockzMailbox.lock¹   r-   r$   c                 ó    — t          d¦  «        ‚)ú#Unlock the mailbox if it is locked.r'   r(   rV   s    r"   ÚunlockzMailbox.unlock½   r-   r$   c                 ó    — t          d¦  «        ‚)úFlush and close the mailbox.r'   r(   rV   s    r"   ÚclosezMailbox.closeÁ   r-   r$   c                 óh   — 	 |                      d¦  «        S # t          $ r t          d¦  «        ‚w xY w)Nr   z?String input must be ASCII-only; use bytes or a Message instead)ÚencodeÚUnicodeErrorÚ
ValueErrorr*   s     r"   Ú_string_to_byteszMailbox._string_to_bytesÅ   sK   € ð	2Ø—>’> 'Ñ*Ô*Ð*øÝð 	2ð 	2ð 	2Ýð 1ñ 2ô 2ð 2ð	2øøøs   ‚ —1Fc                 ó  — t          |t          j        j        ¦  «        rãt	          j        ¦   «         }t          j                             ||d¦  «        }|                     |¦  «         | 	                    d¦  «         | 
                    ¦   «         }|                     dt          ¦  «        }|                     |¦  «         | j        r6|                     t          ¦  «        s|                     t          ¦  «         d
S d
S d
S t          |t           t"          t          j        f¦  «        rüt          |t          j        ¦  «        r/t'          j        dt*          d¦  «         |                     ¦   «         }t          |t           ¦  «        r|                      |¦  «        }|r|                     dd¦  «        }|                     dt          ¦  «        }|                     |¦  «         | j        r6|                     t          ¦  «        s|                     t          ¦  «         d
S d
S d
S t1          |d¦  «        �r-t1          |d¦  «        r"t'          j        d	t*          d¦  «         |j        }d
}	 |                     ¦   «         }|                     d¦  «        r|d
d…         dz   }n"|                     d¦  «        r|d
d…         dz   }|snW|r"|                     d¦  «        rd|dd
…         z   }|                     dt          ¦  «        }|                     |¦  «         |}Œ³| j        r8|r8|                     t          ¦  «        s |                     t          ¦  «         d
S d
S d
S d
S t9          dt;          |¦  «        z  ¦  «        ‚)z%Dump message contents to target file.r   ó   
ú8Use of StringIO input is deprecated, use BytesIO insteadé   s   
From s   
>From ÚreadÚbufferúDUse of text mode files is deprecated, use a binary mode file insteadNTó   
éþÿÿÿó   éÿÿÿÿó   From s   >From é   úInvalid message type: %s)Ú
isinstancerL   r+   r
   ÚioÚBytesIOÚ	generatorÚBytesGeneratorÚflattenÚseekr‘   ÚreplaceÚlinesepÚwriteÚ_append_newlineÚendswithÚstrÚbytesÚStringIOÚwarningsÚwarnÚDeprecationWarningÚgetvaluerŒ   rw   r’   ÚreadlineÚ
startswithÚ	TypeErrorÚtype)	r   r+   ÚtargetÚmangle_from_r’   ÚgenÚdataÚlastlineÚlines	            r"   Ú_dump_messagezMailbox._dump_messageÒ   s�  € õ �g�uœ}Ô4Ñ5Ô5ð 1	HÝ”Z‘\”\ˆFÝ”/×0Ò0°¸ÀqÑIÔIˆCØ�KŠK˜Ñ Ô Ð Ø�KŠK˜‰NŒNˆNØ—;’;‘=”=ˆDØ—<’< ¥wÑ/Ô/ˆDØ�LŠL˜ÑÔÐØÔ#ð &¨D¯MªM½'Ñ,BÔ,Bð &à—’�WÑ%Ô%Ð%Ð%Ð%ð&ð &ð &ð &õ ˜¥#¥u­b¬kÐ!:Ñ;Ô;ð &	HÝ˜'¥2¤;Ñ/Ô/ð -Ý”ð *Ý+=¸qñBô Bð Bà!×*Ò*Ñ,Ô,�Ý˜'¥3Ñ'Ô'ð 9Ø×/Ò/°Ñ8Ô8�Øð CØ!Ÿ/š/¨*°kÑBÔB�Ø—o’o e­WÑ5Ô5ˆGØ�LŠL˜Ñ!Ô!Ð!ØÔ#ð &¨G×,<Ò,<½WÑ,EÔ,Eð &à—’�WÑ%Ô%Ð%Ð%Ð%ð&ð &ð &ð &õ �W˜fÑ%Ô%ñ 	HÝ�w Ñ)Ô)ð )Ý”ð 5Ý6HÈ!ñMô Mð Mà!œ.�ØˆHð Ø×'Ò'Ñ)Ô)�à—=’= Ñ)Ô)ð -Ø   œ9 uÑ,�D�DØ—]’] 5Ñ)Ô)ð -Ø   œ9 uÑ,�DØð ØØð 0 D§O¢O°HÑ$=Ô$=ð 0Ø$ t¨A¨B¨B¤xÑ/�DØ—|’| E­7Ñ3Ô3�Ø—’˜TÑ"Ô"Ð"Ø�ð ð Ô#ð &¨ð &¸×9JÒ9JÍ7Ñ9SÔ9Sð &à—’�WÑ%Ô%Ð%Ð%Ð%ð&ð &ð &ð &ð &ð &õ Ð6½¸g¹¼ÑFÑGÔGÐGr$   ©NTr4   ©F)'Ú__name__Ú
__module__Ú__qualname__Ú__doc__r#   r,   r2   r5   r9   r=   rA   r?   rC   rP   rN   rF   rW   rZ   r_   rb   rd   rf   rh   rk   rn   rp   rs   ru   r{   r~   r�   r„   r‡   rŒ   r¥   r¸   Úclassmethodr   Ú__class_getitem__© r$   r"   r   r   "   sH  € € € € € Ø4Ð4ð ð  ð  ð  ð
Lð Lð LðLð Lð Lðð ð ðð ð ðLð Lð Lðð ð ð ð+ð +ð +ðLð Lð LðIð Ið IðLð Lð LðLð Lð LðLð Lð Lð%ð %ð %ðð ð ð!ð !ð !ð'ð 'ð 'ðð ð ð&ð &ð &ðLð Lð LðLð Lð Lðð ð ð
ð ð ð ð5ð 5ð 5ð5ð 5ð 5ð 5ð"Lð Lð LðLð Lð LðLð Lð LðLð Lð Lð2ð 2ð 2ð €Oð4Hð 4Hð 4Hð 4Hðl $˜ LÑ1Ô1ÐÐÐr$   r   c                   ó¬   — e Zd ZdZdZdd„Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdZd„ Zd„ Zd„ Zd„ ZdS )r   zA qmail-style Maildir mailbox.ú:NTc                 ór  — t                                | |||¦  «         t          j                             | j        d¦  «        t          j                             | j        d¦  «        t          j                             | j        d¦  «        dœ| _        t          j                             | j        ¦  «        sb|rLt          j        | j        d¦  «         | j         	                    ¦   «         D ]}t          j        |d¦  «         Œnt          | j        ¦  «        ‚i | _        dddœ| _        d| _        d| _        d	S )
zInitialize a Maildir instance.ÚtmpÚnewÚcur)rÅ   rÆ   rÇ   éÀ  r   )rÇ   rÆ   gš™™™™™¹?N)r   r#   r   r   Újoinr   Ú_pathsÚexistsÚmkdirrd   r   Ú_tocÚ_toc_mtimesÚ
_last_readÚ_skewfactor)r   Údirnamer    r!   r   s        r"   r#   zMaildir.__init__  s  € å×Ò˜˜w¨°Ñ8Ô8Ð8å”7—<’< ¤
¨EÑ2Ô2Ý”7—<’< ¤
¨EÑ2Ô2Ý”7—<’< ¤
¨EÑ2Ô2ðð ˆŒõ
 Œw�~Š~˜dœjÑ)Ô)ð 	5Øð 5Ý”˜œ UÑ+Ô+Ð+Ø œK×.Ò.Ñ0Ô0ð *ð *�DÝ”H˜T 5Ñ)Ô)Ð)Ð)ð*õ )¨¬Ñ4Ô4Ð4ØˆŒ	Ø#$¨QÐ/Ð/ˆÔØˆŒØˆÔÐÐr$   c                 ó¸  — |                       ¦   «         }	 |                      ||¦  «         n<# t          $ r/ |                     ¦   «          t	          j        |j        ¦  «         ‚ w xY wt          |¦  «         t          |t          ¦  «        r>| 
                    ¦   «         }| j        |                     ¦   «         z   }|| j        k    rd}nd}d}t          j                             |j        ¦  «                             | j        ¦  «        d         }t          j                             | j        |||z   ¦  «        }t          |t          ¦  «        rPt	          j        |j        t          j                             |j        ¦  «        |                     ¦   «         f¦  «         	 	 t	          j        |j        |¦  «         t	          j        |j        ¦  «         n1# t,          t.          f$ r t	          j        |j        |¦  «         Y nw xY wnS# t2          $ rF}t	          j        |j        ¦  «         |j        t4          j        k    rt9          d|z  ¦  «        ‚‚ d}~ww xY w|S )r&   Ú rÆ   r   z$Name clash with existing message: %sN)Ú_create_tmpr¸   ÚBaseExceptionr‡   r   r2   ÚnameÚ_sync_closer›   r   Ú
get_subdirÚcolonÚget_infor   ÚbasenameÚsplitrÉ   r   ÚutimeÚgetatimeÚget_dateÚlinkÚAttributeErrorÚPermissionErrorÚrenameÚOSErrorÚerrnoÚEEXISTr   )r   r+   Útmp_fileÚsubdirÚsuffixÚuniqÚdestÚes           r"   r,   zMaildir.add$  sS  € à×#Ò#Ñ%Ô%ˆð	Ø×Ò˜w¨Ñ1Ô1Ð1Ð1øÝð 	ð 	ð 	Ø�NŠNÑÔÐÝŒI�h”mÑ$Ô$Ð$Øð	øøøõ 	�HÑÔÐÝ�g�~Ñ.Ô.ð 	Ø×'Ò'Ñ)Ô)ˆFØ”Z '×"2Ò"2Ñ"4Ô"4Ñ4ˆFØ˜œÒ#Ð#Ø�øàˆFØˆFÝŒw×Ò ¤Ñ.Ô.×4Ò4°T´ZÑ@Ô@ÀÔCˆÝŒw�|Š|˜DœJ¨°°v±Ñ>Ô>ˆÝ�g�~Ñ.Ô.ð 	LÝŒH�X”]Ý”g×&Ò& x¤}Ñ5Ô5°w×7GÒ7GÑ7IÔ7IÐJñLô Lð Lð
	ð)Ý”˜œ tÑ,Ô,Ð,õ ”	˜(œ-Ñ(Ô(Ð(Ð(øõ #¥OÐ4ð /ð /ð /Ý”	˜(œ-¨Ñ.Ô.Ð.Ð.Ð.ð/øøøøøõ ð 	ð 	ð 	ÝŒI�h”mÑ$Ô$Ð$ØŒw�%œ,Ò&Ð&Ý(Ð)OØ+/ñ*0ñ 1ô 1ð 1ð øøøøð	øøøð ˆs@   –- ­9A&Æ!G Æ;H Ç+HÈ H ÈHÈH È
IÈAIÉIc                 óš   — t          j        t           j                             | j        |                      |¦  «        ¦  «        ¦  «         dS ©r/   N)r   r2   r   rÉ   r   Ú_lookupr0   s     r"   r2   zMaildir.removeN  s6   € å
Œ	•"”'—,’,˜tœz¨4¯<ª<¸Ñ+<Ô+<Ñ=Ô=Ñ>Ô>Ð>Ð>Ð>r$   c                 ób   — 	 |                       |¦  «         dS # t          t          f$ r Y dS w xY wr7   )r2   r8   ÚFileNotFoundErrorr0   s     r"   r9   zMaildir.discardR  sG   € ð	Ø�KŠK˜ÑÔÐÐÐøÝÕ+Ð,ð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ™.­.c                 ó  — |                       |¦  «        }|                      |¦  «        }|                       |¦  «        }t          |t          ¦  «        r|}n|}t          j                             |¦  «        }| j        |v r)| j        |                     | j        ¦  «        d         z   }nd}|  	                    |¦  «         t          j         
                    | j        |¦  «        }	t          j         
                    | j        |||z   ¦  «        }
t          |t          ¦  «        rFt	          j        |	t          j                             |	¦  «        |                     ¦   «         f¦  «         t	          j        |	|
¦  «         dS )r;   r—   rÓ   N)rï   r,   r›   r   r   r   rÑ   rÙ   rÜ   r9   rÉ   r   rÝ   rÞ   rß   rã   )r   r1   r+   Úold_subpathÚtemp_keyÚtemp_subpathÚdominant_subpathrè   ré   Útmp_pathÚnew_paths              r"   r=   zMaildir.__setitem__Z  sS  € à—l’l 3Ñ'Ô'ˆØ—8’8˜GÑ$Ô$ˆØ—|’| HÑ-Ô-ˆÝ�g�~Ñ.Ô.ð 	+à+ÐÐð  +ÐÝ”—’Ð!1Ñ2Ô2ˆØŒ:Ð)Ð)Ð)Ø”ZÐ"2×"8Ò"8¸¼Ñ"DÔ"DÀRÔ"HÑHˆFˆFàˆFØ�Š�SÑÔÐÝ”7—<’< ¤
¨LÑ9Ô9ˆÝ”7—<’< ¤
¨F°C¸&±LÑAÔAˆÝ�g�~Ñ.Ô.ð 	GÝŒH�XÝ”g×&Ò& xÑ0Ô0°'×2BÒ2BÑ2DÔ2DÐEñGô Gð Gõ
 	Œ	�(˜HÑ%Ô%Ð%Ð%Ð%r$   c                 ó®  — |                       |¦  «        }t          t          j                             | j        |¦  «        d¦  «        5 }| j        r|                      |¦  «        }nt          |¦  «        }ddd¦  «         n# 1 swxY w Y   t          j                             |¦  «        \  }}| 	                    |¦  «         | j
        |v r3|                     |                     | j
        ¦  «        d         ¦  «         |                     t          j                             t          j                             | j        |¦  «        ¦  «        ¦  «         |S )rI   ÚrbNr—   )rï   Úopenr   r   rÉ   r   r   r   rÜ   Ú
set_subdirrÙ   Úset_infoÚset_dateÚgetmtime)r   r1   ÚsubpathÚfÚmsgrè   rÖ   s          r"   rC   zMaildir.get_messageu  sG  € à—,’,˜sÑ#Ô#ˆÝ•"”'—,’,˜tœz¨7Ñ3Ô3°TÑ:Ô:ð 	(¸aØŒ}ð (Ø—m’m AÑ&Ô&��å$ QÑ'Ô'�ð		(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(õ
 ”w—}’} WÑ-Ô-‰ˆ�Ø�Š�vÑÔÐØŒ:˜ÐÐØ�LŠL˜Ÿš D¤JÑ/Ô/°Ô3Ñ4Ô4Ð4Ø�Š•R”W×%Ò%¥b¤g§l¢l°4´:¸wÑ&GÔ&GÑHÔHÑIÔIÐIØˆ
s   Á	-BÂBÂ	Bc                 ó  — t          t          j                             | j        |                      |¦  «        ¦  «        d¦  «        5 }|                     ¦   «                              t          d¦  «        cddd¦  «         S # 1 swxY w Y   dS )ú2Return a bytes representation or raise a KeyError.rú   rŽ   N)	rû   r   r   rÉ   r   rï   r‘   r¢   r£   ©r   r1   r  s      r"   rN   zMaildir.get_bytes„  s¬   € å•"”'—,’,˜tœz¨4¯<ª<¸Ñ+<Ô+<Ñ=Ô=¸tÑDÔDð 	4ÈØ—6’6‘8”8×#Ò#¥G¨UÑ3Ô3ð	4ð 	4ð 	4ð 	4ñ 	4ô 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4øøøð 	4ð 	4ð 	4ð 	4ð 	4ð 	4s   Á-BÂBÂBc                 ó¬   — t          t          j                             | j        |                      |¦  «        ¦  «        d¦  «        }t          |¦  «        S )rS   rú   )rû   r   r   rÉ   r   rï   Ú
_ProxyFiler  s      r"   rF   zMaildir.get_file‰  s;   € å•”—’˜dœj¨$¯,ª,°sÑ*;Ô*;Ñ<Ô<¸dÑCÔCˆÝ˜!‰}Œ}Ðr$   c              #   óœ   K  — |                       ¦   «          | j        D ]-}	 |                      |¦  «         n# t          $ r Y Œ%w xY w|V — Œ.dS ©rU   N)Ú_refreshrÍ   rï   r8   r0   s     r"   rW   zMaildir.iterkeysŽ  ss   è è € à�Š‰ŒˆØ”9ð 	ð 	ˆCðØ—’˜SÑ!Ô!Ð!Ð!øÝð ð ð Ø�ðøøøàˆIˆIˆIˆIð	ð 	s   ¡7·
AÁAc                 ó<   — |                       ¦   «          || j        v S ©rj   )r
  rÍ   r0   s     r"   rk   zMaildir.__contains__˜  s   € à�Š‰ŒˆØ�d”iÐÐr$   c                 óR   — |                       ¦   «          t          | j        ¦  «        S ©rm   )r
  ÚlenrÍ   rV   s    r"   rn   zMaildir.__len__�  s   € à�Š‰ŒˆÝ�4”9‰~Œ~Ðr$   c                 ó   — dS )ú"Write any pending changes to disk.NrÁ   rV   s    r"   r~   zMaildir.flush¢  s	   € ð 	ˆr$   c                 ó   — dS )r€   NrÁ   rV   s    r"   r�   zMaildir.lock¨  ó   € àˆr$   c                 ó   — dS )rƒ   NrÁ   rV   s    r"   r„   zMaildir.unlock¬  r  r$   c                 ó   — dS ©r†   NrÁ   rV   s    r"   r‡   zMaildir.close°  r  r$   c                 ó>  — g }t          j        | j        ¦  «        D ]€}t          |¦  «        dk    rk|d         dk    r_t           j                             t           j                             | j        |¦  «        ¦  «        r|                     |dd…         ¦  «         Œ�|S )úReturn a list of folder names.é   r   ú.N)r   Úlistdirr   r  r   ÚisdirrÉ   Úappend©r   rr   Úentrys      r"   Úlist_folderszMaildir.list_folders´  s…   € àˆÝ”Z ¤
Ñ+Ô+ð 	)ð 	)ˆEÝ�5‰zŒz˜AŠ~ˆ~ %¨¤(¨c¢/ /ÝŒw�}Š}�RœWŸ\š\¨$¬*°eÑ<Ô<Ñ=Ô=ð #2à—’˜e A B BœiÑ(Ô(Ð(øØˆr$   c                 ó|   — t          t          j                             | j        d|z   ¦  «        | j        d¬¦  «        S )z/Return a Maildir instance for the named folder.r  F©r    r!   )r   r   r   rÉ   r   r   ©r   Úfolders     r"   Ú
get_folderzMaildir.get_folder½  s9   € å•r”w—|’| D¤J°°f±Ñ=Ô=Ø#œ}Ø#ð%ñ %ô %ð 	%r$   c                 ó~  — t           j                             | j        d|z   ¦  «        }t	          || j        ¬¦  «        }t           j                             |d¦  «        }t           j                             |¦  «        s?t          j        t          j        |t           j	        t           j
        z  d¦  «        ¦  «         |S )z>Create a folder and return a Maildir instance representing it.r  ©r    Úmaildirfolderé¶  )r   r   rÉ   r   r   r   rË   r‡   rû   ÚO_CREATÚO_WRONLY)r   r$  r   rr   Úmaildirfolder_paths        r"   Ú
add_folderzMaildir.add_folderÃ  s–   € åŒw�|Š|˜DœJ¨¨f©Ñ5Ô5ˆÝ˜ t¤}Ð5Ñ5Ô5ˆÝœWŸ\š\¨$°Ñ@Ô@ÐÝŒw�~Š~Ð0Ñ1Ô1ð 	ÝŒH•R”WÐ/µ´½b¼kÑ1IØñô ñ ô ð àˆr$   c                 ó¼  — t           j                             | j        d|z   ¦  «        }t          j        t           j                             |d¦  «        ¦  «        t          j        t           j                             |d¦  «        ¦  «        z   D ]3}t          |¦  «        dk     s|d         dk    rt          d|z  ¦  «        ‚Œ4t          j        |¦  «        D ]f}|dk    r^|dk    rX|dk    rRt           j                             t           j                             ||¦  «        ¦  «        rt          d|›d	|›�¦  «        ‚Œgt          j        |d
¬¦  «        D ]t\  }}}|D ]4}t          j	        t           j                             ||¦  «        ¦  «         Œ5|D ]4}t          j
        t           j                             ||¦  «        ¦  «         Œ5Œut          j
        |¦  «         dS )ú-Delete the named folder, which must be empty.r  rÆ   rÇ   r  r   zFolder contains message(s): %srÅ   zFolder contains subdirectory 'z': F)ÚtopdownN)r   r   rÉ   r   r  r  r   r  Úwalkr2   Úrmdir)r   r$  r   r  ÚrootÚdirsÚfiless          r"   Úremove_folderzMaildir.remove_folderÍ  s»  € åŒw�|Š|˜DœJ¨¨f©Ñ5Ô5ˆÝ”Z¥¤§¢¨T°5Ñ 9Ô 9Ñ:Ô:Ý”Z¥¤§¢¨T°5Ñ 9Ô 9Ñ:Ô:ñ;ð 	Oð 	OˆEå�5‰zŒz˜AŠ~ˆ~  q¤¨S¢ Ý#Ð$DÀvÑ$MÑNÔNÐNð "1å”Z Ñ%Ô%ð 	5ð 	5ˆEØ˜Š~ˆ~ %¨5¢. .°U¸e²^°^ÝŒw�}Š}�RœWŸ\š\¨$°Ñ6Ô6Ñ7Ô7ð 6Då#�mØ%+ V V¨U¨Uð%4ñ 5ô 5ð 5øå!#¤¨°uÐ!=Ñ!=Ô!=ð 	4ð 	4ÑˆD�$˜Øð 5ð 5�Ý”	�"œ'Ÿ,š, t¨UÑ3Ô3Ñ4Ô4Ð4Ð4Øð 4ð 4�Ý”�œŸš d¨EÑ2Ô2Ñ3Ô3Ð3Ð3ð4å
Œ�‰Œˆˆˆr$   c                 ó`  — t          j         ¦   «         }t          j        t          j                             | j        d¦  «        ¦  «        D ]b}t          j                             | j        d|¦  «        }|t          j                             |¦  «        z
  dk    rt          j        |¦  «         ŒcdS )zDelete old files in "tmp".rÅ   i@ú N)Útimer   r  r   rÉ   r   rÞ   r2   )r   Únowr  r   s       r"   ÚcleanzMaildir.cleanà  s‰   € åŒi‰kŒkˆÝ”Z¥¤§¢¨T¬Z¸Ñ ?Ô ?Ñ@Ô@ð 	 ð 	 ˆEÝ”7—<’< ¤
¨E°5Ñ9Ô9ˆDØ•R”W×%Ò% dÑ+Ô+Ñ+¨fÒ4Ð4Ý”	˜$‘”�øð	 ð 	 r$   r  c           	      óv  — t          j         ¦   «         }t          j        ¦   «         }d|v r|                     dd¦  «        }d|v r|                     dd¦  «        }t	          |¦  «        ›dt	          |dz  dz  ¦  «        ›dt          j        ¦   «         ›d	t          j        ›d
|›�	}t
          j	         
                    | j        d|¦  «        }	 t          j        |¦  «         nG# t          $ r: t          xj        dz  c_        	 t          |¦  «        cY S # t          $ r Y nw xY wY nw xY wt!          d|z  ¦  «        ‚)z=Create a file in the tmp subdirectory and open and return it.ú/z\057rÃ   z\072z.Mr  g    €„.AÚPÚQr  rÅ   z&Name clash prevented file creation: %s)r8  ÚsocketÚgethostnamer¢   Úintr   Úgetpidr   Ú_countr   rÉ   r   Ústatrñ   Ú_create_carefullyÚFileExistsErrorr   )r   r9  Úhostnamerê   r   s        r"   rÔ   zMaildir._create_tmpê  sQ  € åŒi‰kŒkˆÝÔ%Ñ'Ô'ˆØ�(ˆ?ˆ?Ø×'Ò'¨¨WÑ5Ô5ˆHØ�(ˆ?ˆ?Ø×'Ò'¨¨WÑ5Ô5ˆHÝ$'¨¡H¤H H H­c°#¸±'¸C±-Ñ.@Ô.@Ð.@Ð.@Å"Ä)Á+Ä+À+À+Ý$+¤N N N°H°Hð>ˆåŒw�|Š|˜DœJ¨¨tÑ4Ô4ˆð	ÝŒG�D‰MŒMˆMˆMøÝ ð 	ð 	ð 	ÝˆNŒN˜aÑˆNŒNðÝ(¨Ñ.Ô.Ð.Ð.Ð.øÝ"ð ð ð Ø�ðøøøØ�ð	øøøõ !Ð!IØ!%ñ"&ñ 'ô 'ð 	's6   ÃC" Ã"D&ÄDÄD&Ä
D ÄD&ÄD Ä D&Ä%D&c                 ó¬  — t          j         ¦   «         | j        z
  d| j        z   k    rWd}| j        D ]I}t          j                             | j        |         ¦  «        }|| j        |         k    rd}|| j        |<   ŒJ|sdS i | _        | j        D ]®}| j        |         }t	          j	        |¦  «        D ]Š}t          j         
                    ||¦  «        }t          j                             |¦  «        rŒB|                     | j        ¦  «        d         }t          j         
                    ||¦  «        | j        |<   Œ‹Œ¯t          j         ¦   «         | _        dS )z!Update table of contents mapping.é   FTNr   )r8  rÏ   rÐ   rÎ   r   r   rÿ   rÊ   rÍ   r  rÉ   r  rÜ   rÙ   )r   Úrefreshrè   Úmtimer   r  Úprê   s           r"   r
  zMaildir._refresh  sE  € õ Œ9‰;Œ;˜œÑ(¨1¨tÔ/?Ñ+?Ò?Ð?ØˆGØÔ*ð 1ð 1�Ýœ×(Ò(¨¬°VÔ)<Ñ=Ô=�Ø˜4Ô+¨FÔ3Ò3Ð3Ø"�GØ+0�Ô  Ñ(Ð(Øð Ø�àˆŒ	ØÔ&ð 	>ð 	>ˆFØ”;˜vÔ&ˆDÝœ DÑ)Ô)ð >ð >�Ý”G—L’L  uÑ-Ô-�Ý”7—=’= Ñ#Ô#ð ØØ—{’{ 4¤:Ñ.Ô.¨qÔ1�Ý"$¤'§,¢,¨v°uÑ"=Ô"=�”	˜$‘�ð>õ œ)™+œ+ˆŒˆˆr$   c                 ó`  — 	 t           j                             t           j                             | j        | j        |         ¦  «        ¦  «        r| j        |         S n# t          $ r Y nw xY w|                      ¦   «          	 | j        |         S # t          $ r t          d|z  ¦  «        d‚w xY w)z=Use TOC to return subpath for given key, or raise a KeyError.úNo message with key: %sN)r   r   rË   rÉ   r   rÍ   r8   r
  r0   s     r"   rï   zMaildir._lookup&  sº   € ð	ÝŒw�~Š~�bœgŸlšl¨4¬:°t´yÀ´~ÑFÔFÑGÔGð &Ø”y ”~Ð%ð&øåð 	ð 	ð 	ØˆDð	øøøà�Š‰Œˆð	FØ”9˜S”>Ð!øÝð 	Fð 	Fð 	FÝÐ4°sÑ:Ñ;Ô;ÀÐEð	Føøøs   ‚AA Á
A*Á)A*ÂB ÂB-c                 óÄ   — t          | d¦  «        s|                      ¦   «         | _        	 	 | t          | j        ¦  «                 S # t          $ r Y dS t
          $ r Y Œ4w xY w)z0Return the next message in a one-time iteration.Ú_onetime_keysTN)rw   rW   rP  ÚnextÚStopIterationr8   rV   s    r"   rQ  zMaildir.next4  s}   € å�t˜_Ñ-Ô-ð 	1Ø!%§¢¡¤ˆDÔð	ðØ�D Ô!3Ñ4Ô4Ô5Ð5øÝ ð ð ð Ø�t�tÝð ð ð Ø�ðøøøs   ¬A Á
AÁ	AÁAr¹   )r»   r¼   r½   r¾   rÙ   r#   r,   r2   r9   r=   rC   rN   rF   rW   rk   rn   r~   r�   r„   r‡   r   r%  r-  r6  r:  rC  rÔ   r
  rï   rQ  rÁ   r$   r"   r   r     s˜  € € € € € Ø(Ð(à€Eðð ð ð ð((ð (ð (ðT?ð ?ð ?ðð ð ð&ð &ð &ð6ð ð ð4ð 4ð 4ð
ð ð ð
ð ð ð ð  ð  ð
ð ð ð
ð ð ðð ð ðð ð ðð ð ðð ð ð%ð %ð %ðð ð ðð ð ð& ð  ð  ð €Fð'ð 'ð 'ð0"&ð "&ð "&ðHFð Fð Fð
ð 
ð 
ð 
ð 
r$   r   c                   óv   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ ZdS )Ú_singlefileMailboxzA single-file mailbox.NTc                 óì  — t                                | |||¦  «         	 t          | j        d¦  «        }nŽ# t          $ r�}|j        t
          j        k    r,|rt          | j        d¦  «        }nJt          | j        ¦  «        ‚|j        t
          j        t
          j	        fv rt          | j        d¦  «        }n‚ Y d}~nd}~ww xY w|| _
        d| _        d| _        d| _        d| _        d| _        d| _        dS )z!Initialize a single-file mailbox.úrb+zwb+rú   Nr   F)r   r#   rû   r   rä   rå   ÚENOENTr   ÚEACCESÚEROFSÚ_filerÍ   Ú	_next_keyÚ_pendingÚ_pending_syncÚ_lockedÚ_file_length)r   r   r    r!   r  rì   s         r"   r#   z_singlefileMailbox.__init__D  sù   € å×Ò˜˜t W¨fÑ5Ô5Ð5ð	Ý�T”Z Ñ'Ô'ˆAˆAøÝð 		ð 		ð 		ØŒw�%œ,Ò&Ð&Øð 9Ý˜TœZ¨Ñ/Ô/�A�Aå,¨T¬ZÑ8Ô8Ð8Ø”�Uœ\­5¬;Ð7Ð7Ð7Ý˜œ TÑ*Ô*��àøøøøøøøøøð		øøøð ˆŒ
ØˆŒ	ØˆŒØˆŒØ"ˆÔØˆŒØ ˆÔÐÐs   Ÿ5 µ
C ¿A7B;Â;C c                 ó°   — |                       ¦   «          |                      |¦  «        | j        | j        <   | xj        dz  c_        d| _        | j        dz
  S )r&   r  T)rï   Ú_append_messagerÍ   r[  r]  r*   s     r"   r,   z_singlefileMailbox.add[  sR   € à�Š‰ŒˆØ$(×$8Ò$8¸Ñ$AÔ$AˆŒ	�$”.Ñ!ØˆŒ˜!ÑˆŒð "ˆÔØŒ~ Ñ!Ð!r$   c                 óN   — |                       |¦  «         | j        |= d| _        dS )r/   TN)rï   rÍ   r\  r0   s     r"   r2   z_singlefileMailbox.removee  s(   € à�Š�SÑÔÐØŒI�cˆNØˆŒˆˆr$   c                 óx   — |                       |¦  «         |                      |¦  «        | j        |<   d| _        dS )r;   TN)rï   ra  rÍ   r\  r<   s      r"   r=   z_singlefileMailbox.__setitem__k  s8   € à�Š�SÑÔÐØ×-Ò-¨gÑ6Ô6ˆŒ	�#‰ØˆŒˆˆr$   c              #   óp   K  — |                       ¦   «          | j                             ¦   «         E d{V —† dS r	  )rï   rÍ   rZ   rV   s    r"   rW   z_singlefileMailbox.iterkeysq  s=   è è € à�Š‰ŒˆØ”9—>’>Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#r$   c                 ó<   — |                       ¦   «          || j        v S r  )rï   rÍ   r0   s     r"   rk   z_singlefileMailbox.__contains__v  s   € à�Š‰ŒˆØ�d”iÐÐr$   c                 óR   — |                       ¦   «          t          | j        ¦  «        S r  )rï   r  rÍ   rV   s    r"   rn   z_singlefileMailbox.__len__{  s   € à�Š‰ŒˆÝ�4”9‰~Œ~Ðr$   c                 óN   — | j         st          | j        ¦  «         d| _         dS dS )r€   TN)r^  Ú
_lock_filerZ  rV   s    r"   r�   z_singlefileMailbox.lock€  s1   € àŒ|ð 	 Ý�t”zÑ"Ô"Ð"ØˆDŒLˆLˆLð	 ð 	 r$   c                 óN   — | j         rt          | j        ¦  «         d| _         dS dS ©rƒ   FN)r^  Ú_unlock_filerZ  rV   s    r"   r„   z_singlefileMailbox.unlock†  s1   € àŒ<ð 	!Ý˜œÑ$Ô$Ð$Ø ˆDŒLˆLˆLð	!ð 	!r$   c           	      óJ  — | j         s$| j        rt          | j        ¦  «         d| _        dS | j        €J ‚| j                             dd¦  «         | j                             ¦   «         }|| j        k    rt          d| j        |fz  ¦  «        ‚t          | j
        ¦  «        }	 i }|                      |¦  «         t          | j                             ¦   «         ¦  «        D ]ß}| j        |         \  }}| j                             |¦  «         |                      |¦  «         |                     ¦   «         }	 | j                             t!          d|| j                             ¦   «         z
  ¦  «        ¦  «        }|sn|                     |¦  «         Œ[||                     ¦   «         f||<   |                      |¦  «         Œà|                     ¦   «         | _        n3#  |                     ¦   «          t)          j        |j        ¦  «         ‚ xY wt/          |¦  «         | j                             ¦   «          t)          j        | j
        ¦  «        j        }	t)          j        |j        |	¦  «         	 t)          j        |j        | j
        ¦  «         nH# t8          $ r; t)          j        | j
        ¦  «         t)          j        |j        | j
        ¦  «         Y nw xY wt;          | j
        d¦  «        | _        || _        d| _         d| _        | j        rt?          | j        d¬	¦  «         dS dS )
r  FNr   rI  z4Size of mailbox file changed (expected %i, found %i)Té   rV  )Údotlock) r\  r]  Ú_sync_flushrZ  rÍ   r¡   Útellr_  r   Ú_create_temporaryr   Ú_pre_mailbox_hookÚsortedrZ   Ú_pre_message_hookr‘   Úminr¤   Ú_post_message_hookr‡   r   r2   rÖ   r×   rD  Úst_modeÚchmodrã   rF  rû   r^  rh  )
r   Úcur_lenÚnew_fileÚnew_tocr1   ÚstartÚstopÚ	new_startr’   Úmodes
             r"   r~   z_singlefileMailbox.flushŒ  s  € àŒ}ð 	ØÔ!ð +õ ˜DœJÑ'Ô'Ð'Ø%*�Ô"ØˆFð
 ŒyÐ$Ð$Ð$ð 	Œ
�Š˜˜1ÑÔÐØ”*—/’/Ñ#Ô#ˆØ�dÔ'Ò'Ð'Ý$ð &?à&*Ô&7¸Ð%Añ&Bñ Cô Cð Cõ % T¤ZÑ0Ô0ˆð	ØˆGØ×"Ò" 8Ñ,Ô,Ð,Ý˜dœiŸnšnÑ.Ô.Ñ/Ô/ð 2ð 2�Ø"œi¨œn‘��tØ”
—’ Ñ&Ô&Ð&Ø×&Ò& xÑ0Ô0Ð0Ø$ŸMšM™OœO�	ð+Ø!œZŸ_š_­S°Ø15¸¼
¿ºÑ8IÔ8IÑ1Iñ.Kô .Kñ Lô L�Fà!ð ØØ—N’N 6Ñ*Ô*Ð*ð+ð !*¨8¯=ª=©?¬?Ð;�˜‘Ø×'Ò'¨Ñ1Ô1Ð1Ð1Ø (§¢¡¤ˆDÔÐøð	Ø�NŠNÑÔÐÝŒI�h”mÑ$Ô$Ð$ØøøøÝ�HÑÔÐàŒ
×ÒÑÔÐåŒw�t”zÑ"Ô"Ô*ˆÝ
Œ�” Ñ%Ô%Ð%ð	1ÝŒI�h”m T¤ZÑ0Ô0Ð0Ð0øÝð 	1ð 	1ð 	1ÝŒI�d”jÑ!Ô!Ð!ÝŒI�h”m T¤ZÑ0Ô0Ð0Ð0Ð0ð	1øøøõ ˜$œ* eÑ,Ô,ˆŒ
ØˆŒ	ØˆŒØ"ˆÔØŒ<ð 	2Ý�t”z¨5Ð1Ñ1Ô1Ð1Ð1Ð1ð	2ð 	2s    Â"D6G Ç0H	É-J ÊAKËKc                 ó   — dS )ú,Called before writing the mailbox to file f.NrÁ   ©r   r  s     r"   rr  z$_singlefileMailbox._pre_mailbox_hookÌ  r  r$   c                 ó   — dS )ú-Called before writing each message to file f.NrÁ   r‚  s     r"   rt  z$_singlefileMailbox._pre_message_hookÐ  r  r$   c                 ó   — dS ©ú,Called after writing each message to file f.NrÁ   r‚  s     r"   rv  z%_singlefileMailbox._post_message_hookÔ  r  r$   c                 ó†  — 	 |                       ¦   «          	 | j        r|                      ¦   «          | j                             ¦   «          dS # | j                             ¦   «          w xY w# 	 | j        r|                      ¦   «          | j                             ¦   «          w # | j                             ¦   «          w xY wxY wr  )r~   r^  r„   rZ  r‡   rV   s    r"   r‡   z_singlefileMailbox.closeØ  sµ   € ð	#Ø�JŠJ‰LŒLˆLð#Ø”<ð "Ø—K’K‘M”M�Mà”
× Ò Ñ"Ô"Ð"Ð"Ð"ø�”
× Ò Ñ"Ô"Ð"Ð"øøøøð	#Ø”<ð "Ø—K’K‘M”M�Mà”
× Ò Ñ"Ô"Ð"Ð"ø�”
× Ò Ñ"Ô"Ð"Ð"øøøøøøs.   ‚A+ —A ÁA(Á+C Á-B"ÂC Â"B=Â=C c                 óž   — | j         €|                      ¦   «          |�/	 | j         |         S # t          $ r t          d|z  ¦  «        d‚w xY wdS )z'Return (start, stop) or raise KeyError.NrN  )rÍ   Ú_generate_tocr8   r0   s     r"   rï   z_singlefileMailbox._lookupã  so   € àŒ9ÐØ×ÒÑ Ô Ð Øˆ?ðJØ”y ”~Ð%øÝð Jð Jð JÝÐ8¸3Ñ>Ñ?Ô?ÀTÐIðJøøøð ˆ?s	   Ÿ, ¬A
c                 ó6  — | j                              dd¦  «         | j                              ¦   «         }t          | j        ¦  «        dk    r!| j        s|                      | j         ¦  «         	 |                      | j         ¦  «         |                      |¦  «        }|  	                    | j         ¦  «         n)# t          $ r | j                              |¦  «         ‚ w xY w| j                              ¦   «          | j                              ¦   «         | _        |S )z;Append message to mailbox and return (start, stop) offsets.r   rI  )rZ  r¡   rp  r  rÍ   r\  rr  rt  Ú_install_messagerv  rÕ   Útruncater~   r_  )r   r+   ÚbeforeÚoffsetss       r"   ra  z"_singlefileMailbox._append_messageí  s  € àŒ
�Š˜˜1ÑÔÐØ”—’Ñ"Ô"ˆÝˆtŒy‰>Œ>˜QÒÐ t¤}Ðð
 ×"Ò" 4¤:Ñ.Ô.Ð.ð	Ø×"Ò" 4¤:Ñ.Ô.Ð.Ø×+Ò+¨GÑ4Ô4ˆGØ×#Ò# D¤JÑ/Ô/Ð/Ð/øÝð 	ð 	ð 	ØŒJ×Ò Ñ'Ô'Ð'Øð	øøøð 	Œ
×ÒÑÔÐØ œJŸOšOÑ-Ô-ˆÔØˆs   Á/A	B9 Â9&Cr¹   r4   )r»   r¼   r½   r¾   r#   r,   r2   r=   rW   rk   rn   r�   r„   r~   rr  rt  rv  r‡   rï   ra  rÁ   r$   r"   rT  rT  A  s  € € € € € Ø Ð ð!ð !ð !ð !ð."ð "ð "ðð ð ðð ð ð$ð $ð $ð
 ð  ð  ð
ð ð ð
 ð  ð  ð!ð !ð !ð>2ð >2ð >2ð@ð ð ðð ð ðð ð ð	#ð 	#ð 	#ðJð Jð Jð Jðð ð ð ð r$   rT  c                   ó:   — e Zd ZdZdZd„ Zd
d„Zd
d„Zd
d„Zd„ Z	d	S )Ú	_mboxMMDFzAn mbox or MMDF mailbox.Tc                 óò  — |                       |¦  «        \  }}| j                             |¦  «         | j                             ¦   «                              t
          d¦  «        }| j                             || j                             ¦   «         z
  ¦  «        }|                      |                     t
          d¦  «        ¦  «        }| 	                    |dd…          
                    d¦  «        ¦  «         |S )rI   r$   rŽ   r™   Nr   )rï   rZ  r¡   r®   r¢   r£   r‘   rp  Ú_message_factoryÚset_fromÚdecode)r   r1   r|  r}  Ú	from_lineÚstringr  s          r"   rC   z_mboxMMDF.get_message	  sÀ   € à—l’l 3Ñ'Ô'‰ˆˆtØŒ
�Š˜ÑÔÐØ”J×'Ò'Ñ)Ô)×1Ò1µ'¸3Ñ?Ô?ˆ	Ø”—’ ¨¬
¯ªÑ(9Ô(9Ñ!9Ñ:Ô:ˆØ×#Ò# F§N¢Nµ7¸EÑ$BÔ$BÑCÔCˆØ�Š�Y˜q˜r˜r”]×)Ò)¨'Ñ2Ô2Ñ3Ô3Ð3Øˆ
r$   Fc                 óz   — t          j        |                      ||¦  «        ¦  «                             |¬¦  «        S )ú3Return a string representation or raise a KeyError.)ÚunixfromrK   )r   r1   Úfrom_s      r"   rP   z_mboxMMDF.get_string  s8   € åÔ'Ø�NŠN˜3 Ñ&Ô&ñ(ô (ß(1ª	¸5¨	Ñ(AÔ(Að	Br$   c                 ó:  — |                       |¦  «        \  }}| j                             |¦  «         |s| j                             ¦   «          | j                             || j                             ¦   «         z
  ¦  «        }|                     t          d¦  «        S )r™  rŽ   )rï   rZ  r¡   r®   r‘   rp  r¢   r£   )r   r1   r›  r|  r}  r—  s         r"   rN   z_mboxMMDF.get_bytes  s   € à—l’l 3Ñ'Ô'‰ˆˆtØŒ
�Š˜ÑÔÐØð 	"ØŒJ×ÒÑ!Ô!Ð!Ø”—’ ¨¬
¯ªÑ(9Ô(9Ñ!9Ñ:Ô:ˆØ�~Š~�g uÑ-Ô-Ð-r$   c                 óö   — |                       |¦  «        \  }}| j                             |¦  «         |s| j                             ¦   «          t	          | j        | j                             ¦   «         |¦  «        S )rS   )rï   rZ  r¡   r®   Ú_PartialFilerp  )r   r1   r›  r|  r}  s        r"   rF   z_mboxMMDF.get_file!  sg   € à—l’l 3Ñ'Ô'‰ˆˆtØŒ
�Š˜ÑÔÐØð 	"ØŒJ×ÒÑ!Ô!Ð!Ý˜DœJ¨¬
¯ªÑ(9Ô(9¸4Ñ@Ô@Ð@r$   c                 ó   — d}t          |t          ¦  «        r|                      |¦  «        }t          |t          ¦  «        rM|                     d¦  «        r8|                     d¦  «        }|dk    r|d|…         }||dz   d…         }n‘|}d}nŒt          |t          ¦  «        r-|                     ¦   «                              d¦  «        }d|z   }nJt          |t          j
        j        ¦  «        r+|                     ¦   «         }|�|                     d¦  «        }|€:dt          j        t          j        ¦   «         ¦  «                             ¦   «         z   }| j                             ¦   «         }| j                             |t&          z   ¦  «         |                      || j        | j        ¦  «         | j                             ¦   «         }||fS )	z1Format a message and blindly write to self._file.Nr˜   rŽ   r—   r  r$   r   s   From MAILER-DAEMON )r›   r§   rŒ   r¨   r¯   ÚfindÚ_mboxMMDFMessageÚget_fromr‰   rL   r+   r
   Úget_unixfromr8  ÚasctimeÚgmtimerZ  rp  r¤   r£   r¸   Ú_mangle_from_)r   r+   r–  ÚnewlineÚauthorr|  r}  s          r"   rŒ  z_mboxMMDF._install_message)  sª  € àˆ	Ý�g�sÑ#Ô#ð 	5Ø×+Ò+¨GÑ4Ô4ˆGÝ�g�uÑ%Ô%ð 	6¨'×*<Ò*<¸XÑ*FÔ*Fð 	6Ø—l’l 5Ñ)Ô)ˆGØ˜"Š}ˆ}Ø# H W HÔ-�	Ø! '¨A¡+ , ,Ô/��à#�	Ø��Ý˜Õ!1Ñ2Ô2ð 	6Ø×%Ò%Ñ'Ô'×.Ò.¨wÑ7Ô7ˆFØ  6Ñ)ˆIˆIÝ˜¥¤Ô!6Ñ7Ô7ð 	6Ø×,Ò,Ñ.Ô.ˆIØÐ$Ø%×,Ò,¨WÑ5Ô5�	ØÐØ.µ´½d¼k¹m¼mÑ1LÔ1L×1SÒ1SÑ1UÔ1UÑUˆIØ”
—’Ñ!Ô!ˆØŒ
×Ò˜¥WÑ,Ñ-Ô-Ð-Ø×Ò˜7 D¤J°Ô0BÑCÔCÐCØŒz�ŠÑ Ô ˆØ�tˆ}Ðr$   Nrº   )
r»   r¼   r½   r¾   r¦  rC   rP   rN   rF   rŒ  rÁ   r$   r"   r‘  r‘    s�   € € € € € Ø"Ð"à€Mðð ð ðBð Bð Bð Bð
.ð .ð .ð .ðAð Að Að Aðð ð ð ð r$   r‘  c                   ó.   — e Zd ZdZdZdZdd„Zd„ Zd„ ZdS )r   zA classic mbox mailbox.TNc                 óX   — t           | _        t                               | |||¦  «         dS )zInitialize an mbox mailbox.N)r   r“  r‘  r#   r   s       r"   r#   zmbox.__init__O  ó*   € å +ˆÔÝ×Ò˜4  w°Ñ7Ô7Ð7Ð7Ð7r$   c                 ó:   — |                      t          ¦  «         dS r†  ©r¤   r£   r‚  s     r"   rv  zmbox._post_message_hookT  s   € à	�Š•ÑÔÐÐÐr$   c                 óD  — g g }}d}| j                              d¦  «         	 | j                              ¦   «         }| j                              ¦   «         }|                     d¦  «        rzt          |¦  «        t          |¦  «        k     rB|r+|                     |t          t          ¦  «        z
  ¦  «         n|                     |¦  «         |                     |¦  «         d}nU|sC|r+|                     |t          t          ¦  «        z
  ¦  «         n|                     |¦  «         n|t          k    rd}nd}�Œt          t          t          ||¦  «        ¦  «        ¦  «        | _        t          | j        ¦  «        | _        | j                              ¦   «         | _        dS )ú0Generate key-to-(start, stop) table of contents.Fr   Tr˜   N)rZ  r¡   rp  r®   r¯   r  r  r£   ÚdictÚ	enumerateÚziprÍ   r[  r_  )r   ÚstartsÚstopsÚlast_was_emptyÚline_posr·   s         r"   rŠ  zmbox._generate_tocX  sx  € à˜B�ˆØˆØŒ
�Š˜ÑÔÐð	'Ø”z—’Ñ(Ô(ˆHØ”:×&Ò&Ñ(Ô(ˆDØ�Š˜xÑ(Ô(ð 'Ý�u‘:”:¥ F¡¤Ò+Ð+Ø%ð /ØŸš XµµG±´Ñ%<Ñ=Ô=Ð=Ð=ð
 Ÿš XÑ.Ô.Ð.Ø—’˜hÑ'Ô'Ð'Ø!&��Øð 	'Ø!ð +Ø—L’L ­Cµ©L¬LÑ!8Ñ9Ô9Ð9Ð9à—L’L Ñ*Ô*Ð*ØØ�’�Ø!%��à!&�ñ/	'õ0 �¥3 v¨uÑ#5Ô#5Ñ6Ô6Ñ7Ô7ˆŒ	Ý˜TœY™œˆŒØ œJŸOšOÑ-Ô-ˆÔÐÐr$   r¹   )	r»   r¼   r½   r¾   r¦  r¥   r#   rv  rŠ  rÁ   r$   r"   r   r   F  sX   € € € € € Ø!Ð!à€Mð €Oð8ð 8ð 8ð 8ð
ð ð ð.ð .ð .ð .ð .r$   r   c                   ó,   — e Zd ZdZdd„Zd„ Zd„ Zd„ ZdS )	r	   zAn MMDF mailbox.NTc                 óX   — t           | _        t                               | |||¦  «         dS )zInitialize an MMDF mailbox.N)r   r“  r‘  r#   r   s       r"   r#   zMMDF.__init__}  r«  r$   c                 ó@   — |                      dt          z   ¦  «         dS )r„  ó   Nr­  r‚  s     r"   rt  zMMDF._pre_message_hook‚  s    € à	�ŠÐ#¥gÑ-Ñ.Ô.Ð.Ð.Ð.r$   c                 óP   — |                      t          dz   t          z   ¦  «         dS )r‡  rº  Nr­  r‚  s     r"   rv  zMMDF._post_message_hook†  s%   € à	�Š•Ð-Ñ-µÑ7Ñ8Ô8Ð8Ð8Ð8r$   c                 ó.  — g g }}| j                              d¦  «         d}	 |}| j                              ¦   «         }| j                              ¦   «         }|                     dt
          z   ¦  «        r�|                     |¦  «         	 |}| j                              ¦   «         }| j                              ¦   «         }|dt
          z   k    r+|                     |t          t
          ¦  «        z
  ¦  «         n|s|                     |¦  «         nŒ†n|snŒòt          t          t          ||¦  «        ¦  «        ¦  «        | _        t          | j        ¦  «        | _        | j                              dd¦  «         | j                              ¦   «         | _        dS )r¯  r   Trº  rI  N)rZ  r¡   r®   rp  r¯   r£   r  r  r°  r±  r²  rÍ   r[  r_  )r   r³  r´  Únext_posr¶  r·   s         r"   rŠ  zMMDF._generate_tocŠ  st  € à˜B�ˆØŒ
�Š˜ÑÔÐØˆð	ØˆHØ”:×&Ò&Ñ(Ô(ˆDØ”z—’Ñ(Ô(ˆHØ�ŠÐ2µWÑ<Ñ=Ô=ð Ø—’˜hÑ'Ô'Ð'ð	Ø'�HØœ:×.Ò.Ñ0Ô0�DØ#œzŸšÑ0Ô0�HØÐ2µWÑ<Ò<Ð<ØŸš XµµG±´Ñ%<Ñ=Ô=Ð=ØØ!ð ØŸš XÑ.Ô.Ð.Øð	øð ð Øð#	õ$ �¥3 v¨uÑ#5Ô#5Ñ6Ô6Ñ7Ô7ˆŒ	Ý˜TœY™œˆŒØŒ
�Š˜˜1ÑÔÐØ œJŸOšOÑ-Ô-ˆÔÐÐr$   r¹   )r»   r¼   r½   r¾   r#   rt  rv  rŠ  rÁ   r$   r"   r	   r	   z  s[   € € € € € ØÐð8ð 8ð 8ð 8ð
/ð /ð /ð9ð 9ð 9ð.ð .ð .ð .ð .r$   r	   c                   ó˜   — e Zd ZdZdd„Zd„ Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r   zAn MH mailbox.NTc                 óÖ  — t                                | |||¦  «         t          j                             | j        ¦  «        s |rŠt          j        | j        d¦  «         t          j        t          j        t          j         	                    | j        d¦  «        t          j
        t          j        z  t          j        z  d¦  «        ¦  «         nt          | j        ¦  «        ‚d| _        dS )zInitialize an MH instance.rÈ   ú.mh_sequencesi€  FN)r   r#   r   r   rË   r   rÌ   r‡   rû   rÉ   r*  ÚO_EXCLr+  r   r^  r   s       r"   r#   zMH.__init__ª  sÃ   € å×Ò˜˜t W¨fÑ5Ô5Ð5ÝŒw�~Š~˜dœjÑ)Ô)ð 	5Øð 5Ý”˜œ UÑ+Ô+Ð+Ý”�œ¥¤§¢¨d¬j¸/Ñ!JÔ!JÝ!#¤­b¬iÑ!7½"¼+Ñ!EÀuñNô Nñ Oô Oð Oð Oõ )¨¬Ñ4Ô4Ð4ØˆŒˆˆr$   c                 ó  — |                       ¦   «         }t          |¦  «        dk    rd}nt          |¦  «        dz   }t          j                             | j        t          |¦  «        ¦  «        }t          |¦  «        }d}	 | j	        rt          |¦  «         	 	 |                      ||¦  «         nJ# t          $ r= | j	        rt          |¦  «         t          |¦  «         d}t          j        |¦  «         ‚ w xY wt!          |t"          ¦  «        r|                      ||¦  «         | j	        rt          |¦  «         n# | j	        rt          |¦  «         w w xY w|st          |¦  «         n# |st          |¦  «         w w xY w|S )r&   r   r  FT)rZ   r  Úmaxr   r   rÉ   r   r§   rE  r^  rh  r¸   rÕ   rk  r×   r2   r›   r   Ú_dump_sequences)r   r+   rZ   Únew_keyrø   r  Úcloseds          r"   r,   zMH.add¶  s�  € à�yŠy‰{Œ{ˆÝˆt‰9Œ9˜Š>ˆ>ØˆGˆGå˜$‘i”i !‘mˆGÝ”7—<’< ¤
­C°©L¬LÑ9Ô9ˆÝ˜hÑ'Ô'ˆØˆð	ØŒ|ð Ý˜1‘”�ð$ð	Ø×&Ò& w°Ñ2Ô2Ð2Ð2øÝ$ð ð ð à”|ð (Ý$ Q™œ˜Ý ‘N”N�NØ!�FÝ”I˜hÑ'Ô'Ð'Øðøøøõ ˜g¥yÑ1Ô1ð ;Ø×(Ò(¨°'Ñ:Ô:Ð:à”<ð $Ý  ‘O”O�Oøøð ”<ð $Ý  ‘O”O�O�Oð$øøøð ð Ý˜A‘”�øøð ð Ý˜A‘”��ðøøøàˆs7   ÂE* ÂB0 Â/D< Â0AC7Ã7.D< Ä%E* Ä<EÅE* Å*E>c                 óP  — t           j                             | j        t	          |¦  «        ¦  «        }	 t          |d¦  «        }|                     ¦   «          t          j        |¦  «         dS # t          $ r-}|j	        t          j
        k    rt          d|z  ¦  «        ‚‚ d}~ww xY w)r/   rV  rN  N)r   r   rÉ   r   r§   rû   r‡   r2   rä   rå   rW  r8   )r   r1   r   r  rì   s        r"   r2   z	MH.removeØ  sš   € åŒw�|Š|˜DœJ­¨C©¬Ñ1Ô1ˆð		Ý�T˜5Ñ!Ô!ˆAð �GŠG‰IŒIˆIÝŒI�d‰OŒOˆOˆOˆOøõ ð 	ð 	ð 	ØŒw�%œ,Ò&Ð&ÝÐ8¸3Ñ>Ñ?Ô?Ð?àøøøøð		øøøs   ´A. Á.
B%Á8(B Â B%c                 óÜ  — t           j                             | j        t	          |¦  «        ¦  «        }	 t          |d¦  «        }n:# t          $ r-}|j        t          j        k    rt          d|z  ¦  «        ‚‚ d}~ww xY w	 | j
        rt          |¦  «         	 t          j        t          j        |t           j        t           j        z  ¦  «        ¦  «         |                      ||¦  «         t!          |t"          ¦  «        r|                      ||¦  «         | j
        rt'          |¦  «         n# | j
        rt'          |¦  «         w w xY wt)          |¦  «         dS # t)          |¦  «         w xY w)r;   rV  rN  N)r   r   rÉ   r   r§   rû   rä   rå   rW  r8   r^  rh  r‡   r+  ÚO_TRUNCr¸   r›   r   rÄ  rk  r×   )r   r1   r+   r   r  rì   s         r"   r=   zMH.__setitem__æ  sU  € åŒw�|Š|˜DœJ­¨C©¬Ñ1Ô1ˆð	Ý�T˜5Ñ!Ô!ˆAˆAøÝð 	ð 	ð 	ØŒw�%œ,Ò&Ð&ÝÐ8¸3Ñ>Ñ?Ô?Ð?àøøøøð		øøøð
	ØŒ|ð Ý˜1‘”�ð$Ý”�œ ¥r¤{µR´ZÑ'?Ñ@Ô@ÑAÔAÐAØ×"Ò" 7¨AÑ.Ô.Ð.Ý˜g¥yÑ1Ô1ð 7Ø×(Ò(¨°#Ñ6Ô6Ð6à”<ð $Ý  ‘O”O�Oøøð ”<ð $Ý  ‘O”O�O�Oð$øøøõ ˜‰NŒNˆNˆNˆNø�K˜‰NŒNˆNˆNøøøs<   ´A Á
A<Á(A7Á7A<Â E ÂA?D- ÄE Ä-EÅE ÅE+c                 óþ  — 	 | j         rAt          t          j                             | j        t          |¦  «        ¦  «        d¦  «        }n@t          t          j                             | j        t          |¦  «        ¦  «        d¦  «        }n:# t          $ r-}|j        t          j	        k    rt          d|z  ¦  «        ‚‚ d}~ww xY w|5  | j         rt          |¦  «         	 t          |¦  «        }| j         rt          |¦  «         n# | j         rt          |¦  «         w w xY wddd¦  «         n# 1 swxY w Y   |                      ¦   «                              ¦   «         D ]\  }}||v r|                     |¦  «         Œ|S )rI   rV  rú   rN  N)r^  rû   r   r   rÉ   r   r§   rä   rå   rW  r8   rh  r   rk  Úget_sequencesrh   Úadd_sequence)r   r1   r  rì   r  rÖ   Úkey_lists          r"   rC   zMH.get_messageþ  s²  € ð		ØŒ|ð CÝ�œŸš d¤jµ#°c±(´(Ñ;Ô;¸UÑCÔC��å�œŸš d¤jµ#°c±(´(Ñ;Ô;¸TÑBÔB�øøÝð 	ð 	ð 	ØŒw�%œ,Ò&Ð&ÝÐ8¸3Ñ>Ñ?Ô?Ð?àøøøøð		øøøð
 ð 	$ð 	$ØŒ|ð Ý˜1‘”�ð$Ý ‘l”l�à”<ð $Ý  ‘O”O�Oøøð ”<ð $Ý  ‘O”O�O�Oð$øøøð	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð #×0Ò0Ñ2Ô2×8Ò8Ñ:Ô:ð 	'ð 	'‰NˆD�(Ø�hˆˆØ× Ò  Ñ&Ô&Ð&øØˆ
sB   ‚BB Â
CÂ(B=Â=CÃD-ÃDÃ.D-ÄDÄD-Ä-D1Ä4D1c                 ó®  — 	 | j         rAt          t          j                             | j        t          |¦  «        ¦  «        d¦  «        }n@t          t          j                             | j        t          |¦  «        ¦  «        d¦  «        }n:# t          $ r-}|j        t          j	        k    rt          d|z  ¦  «        ‚‚ d}~ww xY w|5  | j         rt          |¦  «         	 |                     ¦   «                              t          d¦  «        | j         rt          |¦  «         cddd¦  «         S # | j         rt          |¦  «         w w xY w# 1 swxY w Y   dS )r  rV  rú   rN  NrŽ   )r^  rû   r   r   rÉ   r   r§   rä   rå   rW  r8   rh  r‘   r¢   r£   rk  ©r   r1   r  rì   s       r"   rN   zMH.get_bytes  s€  € ð		ØŒ|ð CÝ�œŸš d¤jµ#°c±(´(Ñ;Ô;¸UÑCÔC��å�œŸš d¤jµ#°c±(´(Ñ;Ô;¸TÑBÔB�øøÝð 	ð 	ð 	ØŒw�%œ,Ò&Ð&ÝÐ8¸3Ñ>Ñ?Ô?Ð?àøøøøð		øøøð
 ð 	$ð 	$ØŒ|ð Ý˜1‘”�ð$Ø—v’v‘x”x×'Ò'­°Ñ7Ô7à”<ð $Ý  ‘O”O�Oð	$ð 	$ð 	$ð 	$ñ 	$ô 	$ð 	$ð 	$øð ”<ð $Ý  ‘O”O�O�Oð$øøøð	$ð 	$ð 	$ð 	$øøøð 	$ð 	$ð 	$ð 	$ð 	$ð 	$sB   ‚BB Â
CÂ(B=Â=CÃE
Ã,D.ÄE
Ä.EÅE
Å
EÅEc                 ó  — 	 t          t          j                             | j        t          |¦  «        ¦  «        d¦  «        }n:# t          $ r-}|j        t          j        k    rt          d|z  ¦  «        ‚‚ d}~ww xY wt          |¦  «        S )rS   rú   rN  N)rû   r   r   rÉ   r   r§   rä   rå   rW  r8   r  rÏ  s       r"   rF   zMH.get_file,  sƒ   € ð	Ý•R”W—\’\ $¤*­c°#©h¬hÑ7Ô7¸Ñ>Ô>ˆAˆAøÝð 	ð 	ð 	ØŒw�%œ,Ò&Ð&ÝÐ8¸3Ñ>Ñ?Ô?Ð?àøøøøð		øøøõ
 ˜!‰}Œ}Ðs   ‚A A Á
A:Á(A5Á5A:c                 ó|   — t          t          d„ t          j        | j        ¦  «        D ¦   «         ¦  «        ¦  «        S )rU   c              3   ó\   K  — | ]'}|                      ¦   «         ¯t          |¦  «        V — Œ(d S r4   )ÚisdigitrA  )Ú.0r  s     r"   ú	<genexpr>zMH.iterkeys.<locals>.<genexpr>9  sH   è è € ð :ð :¨%Ø).¯ª©¬ð:�3˜u™:œ:ð :ð :ð :ð :ð :ð :r$   )Úiterrs  r   r  r   rV   s    r"   rW   zMH.iterkeys7  sG   € å•Fð :ð :µ2´:¸d¼jÑ3IÔ3Ið :ñ :ô :ñ :ô :ñ ;ô ;ð 	;r$   c                 ó    — t           j                             t           j                             | j        t          |¦  «        ¦  «        ¦  «        S r  )r   r   rË   rÉ   r   r§   r0   s     r"   rk   zMH.__contains__<  s.   € åŒw�~Š~�bœgŸlšl¨4¬:µs¸3±x´xÑ@Ô@ÑAÔAÐAr$   c                 ó^   — t          t          |                      ¦   «         ¦  «        ¦  «        S r  )r  rY   rW   rV   s    r"   rn   z
MH.__len__@  s    € å•4˜Ÿš™œÑ(Ô(Ñ)Ô)Ð)r$   c                 ó¾   — | j         sUt          t          j                             | j        d¦  «        d¦  «        | _        t          | j        ¦  «         d| _         dS dS )r€   rÀ  rV  TN)r^  rû   r   r   rÉ   r   rZ  rh  rV   s    r"   r�   zMH.lockD  sT   € àŒ|ð 	 Ý�bœgŸlšl¨4¬:°ÑGÔGÈÑOÔOˆDŒJÝ�t”zÑ"Ô"Ð"ØˆDŒLˆLˆLð	 ð 	 r$   c                 óz   — | j         r3t          | j        ¦  «         t          | j        ¦  «         | `d| _         dS dS rj  )r^  rk  rZ  r×   rV   s    r"   r„   z	MH.unlockK  sF   € àŒ<ð 	!Ý˜œÑ$Ô$Ð$Ý˜œ
Ñ#Ô#Ð#Ø�
Ø ˆDŒLˆLˆLð		!ð 	!r$   c                 ó   — dS )r}   NrÁ   rV   s    r"   r~   zMH.flushS  r  r$   c                 ó@   — | j         r|                      ¦   «          dS dS r  )r^  r„   rV   s    r"   r‡   zMH.closeW  s'   € àŒ<ð 	Ø�KŠK‰MŒMˆMˆMˆMð	ð 	r$   c                 óð   — g }t          j        | j        ¦  «        D ]Y}t           j                             t           j                             | j        |¦  «        ¦  «        r|                     |¦  «         ŒZ|S )r  )r   r  r   r   r  rÉ   r  r  s      r"   r   zMH.list_folders\  sb   € àˆÝ”Z ¤
Ñ+Ô+ð 	%ð 	%ˆEÝŒw�}Š}�RœWŸ\š\¨$¬*°eÑ<Ô<Ñ=Ô=ð %Ø—’˜eÑ$Ô$Ð$øØˆr$   c                 óv   — t          t          j                             | j        |¦  «        | j        d¬¦  «        S )z+Return an MH instance for the named folder.Fr"  ©r   r   r   rÉ   r   r   r#  s     r"   r%  zMH.get_folderd  s4   € å•"”'—,’,˜tœz¨6Ñ2Ô2Øœ-°ð7ñ 7ô 7ð 	7r$   c                 ót   — t          t          j                             | j        |¦  «        | j        ¬¦  «        S )z:Create a folder and return an MH instance representing it.r'  rß  r#  s     r"   r-  zMH.add_folderi  s2   € å•"”'—,’,˜tœz¨6Ñ2Ô2Øœ-ð)ñ )ô )ð 	)r$   c                 óP  — t           j                             | j        |¦  «        }t          j        |¦  «        }|dgk    r3t          j        t           j                             |d¦  «        ¦  «         n|g k    rnt          d| j        z  ¦  «        ‚t          j        |¦  «         dS )r/  rÀ  zFolder not empty: %sN)r   r   rÉ   r   r  r2   r   r2  )r   r$  r   Úentriess       r"   r6  zMH.remove_foldern  sŒ   € åŒw�|Š|˜DœJ¨Ñ/Ô/ˆÝ”*˜TÑ"Ô"ˆØ�Ð'Ò'Ð'ÝŒI•b”g—l’l 4¨Ñ9Ô9Ñ:Ô:Ð:Ð:Ø˜Š]ˆ]ØåÐ 6¸¼Ñ CÑDÔDÐDÝ
Œ�‰Œˆˆˆr$   c           
      óH  ‡
— i }t          t          j                             | j        d¦  «        dd¬¦  «        5 }t          |                      ¦   «         ¦  «        Š
|D �]+}	 |                     d¦  «        \  }}t          ¦   «         }|                     ¦   «         D ]�}|                     ¦   «         r#| 	                    t          |¦  «        ¦  «         Œ9d„ |                     d¦  «        D ¦   «         \  }}	|                     t          ||	dz   ¦  «        ¦  «         Œ‚ˆ
fd	„t          |¦  «        D ¦   «         ||<   t          ||         ¦  «        d
k    r||= Œû# t          $ r% t!          d|                     ¦   «         z  ¦  «        ‚w xY w	 ddd¦  «         n# 1 swxY w Y   |S )z=Return a name-to-key-list dictionary to define each sequence.rÀ  ÚrÚASCII©ÚencodingrÃ   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r4   )rA  )rÔ  Úxs     r"   rÕ  z#MH.get_sequences.<locals>.<genexpr>‡  s(   è è € Ð*KÐ*K°a­3¨q©6¬6Ð*KÐ*KÐ*KÐ*KÐ*KÐ*Kr$   ú-r  c                 ó   •— g | ]}|‰v ¯|‘Œ	S rÁ   rÁ   )rÔ  r1   Úall_keyss     €r"   ú
<listcomp>z$MH.get_sequences.<locals>.<listcomp>‰  s)   ø€ ð %=ð %=ð %=¨SØ,/°8¨O¨Oð &)Ø,;¨O¨Or$   r   z"Invalid sequence specification: %sN)rû   r   r   rÉ   r   ÚsetrZ   rÜ   rÓ  r,   rA  r{   Úrangers  r  r‹   r   Úrstrip)r   Úresultsr  r·   rÖ   ÚcontentsrZ   Úspecr|  r}  rì  s             @r"   rË  zMH.get_sequencesz  sî  ø€ àˆÝ•"”'—,’,˜tœz¨?Ñ;Ô;¸SÈ7ÐSÑSÔSð 	5ÐWXÝ˜4Ÿ9š9™;œ;Ñ'Ô'ˆHØð 5ñ 5�ð5Ø%)§Z¢Z°¡_¤_‘N�D˜(Ý™5œ5�DØ (§¢Ñ 0Ô 0ð @ð @˜ØŸ<š<™>œ>ð @Ø ŸHšH¥S¨¡Y¤YÑ/Ô/Ð/Ð/à*KÐ*K¸4¿:º:Àc¹?¼?Ð*KÑ*KÔ*K™K˜E 4Ø ŸKšK­¨e°T¸A±XÑ(>Ô(>Ñ?Ô?Ð?Ð?ð%=ð %=ð %=ð %=µF¸4±L´Lð %=ñ %=ô %=�G˜D‘Må˜7 4œ=Ñ)Ô)¨QÒ.Ð.Ø# D˜MøøÝ!ð 5ð 5ð 5Ý%Ð&JØ&*§k¢k¡m¤mñ'4ñ 5ô 5ð 5ð5øøøð5ð	5ð 	5ð 	5ñ 	5ô 	5ð 	5ð 	5ð 	5ð 	5ð 	5ð 	5øøøð 	5ð 	5ð 	5ð 	5ð& ˆs*   ¹'FÁ!C6EÅFÅ/FÆFÆFÆFc                 óD  — t          t          j                             | j        d¦  «        dd¬¦  «        }	 t          j        t          j         |j        t          j        t          j        z  ¦  «        ¦  «         | 	                    ¦   «         D ]í\  }}t          |¦  «        dk    rŒ|                     |dz   ¦  «         d}d}t          t          |¦  «        ¦  «        D ]^}|d	z
  |k    r|sd
}|                     d¦  «         n7|rd}|                     |›d|›�¦  «         n|                     d|z  ¦  «         |}Œ_|r&|                     t          |¦  «        dz   ¦  «         ŒØ|                     d¦  «         Œî	 t          |¦  «         dS # t          |¦  «         w xY w)z:Set sequences using the given name-to-key-list dictionary.rÀ  zr+rå  ræ  r   rÃ   NFr  Trê  ú z %sú
)rû   r   r   rÉ   r   r‡   rÖ   r+  rÉ  rh   r  r¤   rs  rî  r§   r×   )r   Ú	sequencesr  rÖ   rZ   ÚprevÚ
completingr1   s           r"   Úset_sequenceszMH.set_sequences’  s“  € å•”—’˜dœj¨/Ñ:Ô:¸DÈ7ÐSÑSÔSˆð	ÝŒH•R”W˜QœV¥R¤[µ2´:Ñ%=Ñ>Ô>Ñ?Ô?Ð?Ø'ŸošoÑ/Ô/ð "ð "‘
��dÝ�t‘9”9 ’>�>ØØ—’˜˜s™
Ñ#Ô#Ð#Ø�Ø"�
Ý!¥# d¡)¤)Ñ,Ô,ð 
ð 
�CØ˜Q‘w $’�Ø)ð )Ø)-˜JØŸGšG C™LœL˜LøØ#ð -Ø%*˜
ØŸš¨4¨4¨4°°Ð 5Ñ6Ô6Ð6Ð6àŸš ¨¡Ñ,Ô,Ð,Ø�D�DØð "Ø—G’G�C ™IœI¨Ñ,Ñ-Ô-Ð-Ð-à—G’G˜D‘M”M�M�Mð)"õ, ˜‰NŒNˆNˆNˆNø�K˜‰NŒNˆNˆNøøøs   ·EF ÆFc                 ó8  — |                       ¦   «         }d}g }|                      ¦   «         D �]y}|dz
  |k    �rg|                     ||dz   f¦  «         	 t          j        t          j                             | j        t          |¦  «        ¦  «        t          j                             | j        t          |dz   ¦  «        ¦  «        ¦  «         t          j	        t          j                             | j        t          |¦  «        ¦  «        ¦  «         n�# t          t          f$ r{ t          j        t          j                             | j        t          |¦  «        ¦  «        t          j                             | j        t          |dz   ¦  «        ¦  «        ¦  «         Y nw xY w|dz  }�Œ{|dz   | _        t          |¦  «        dk    rdS |                     ¦   «         D ])\  }}|D ]!\  }}||v r|||                     |¦  «        <   Œ"Œ*|                      |¦  «         dS )z?Re-name messages to eliminate numbering gaps. Invalidates keys.r   r  N)rË  rW   r  r   rà   r   rÉ   r   r§   Úunlinkrá   râ   rã   r[  r  rh   Úindexrú  )	r   r÷  rø  Úchangesr1   rÖ   rÍ  ÚoldrÆ   s	            r"   ÚpackzMH.pack¯  sÿ  € à×&Ò&Ñ(Ô(ˆ	ØˆØˆØ—=’=‘?”?ð 	ñ 	ˆCØ�Q‰w˜$Š‰Ø—’  T¨A¡X˜Ñ/Ô/Ð/ðBÝ”G�BœGŸLšL¨¬µS¸±X´XÑ>Ô>ÝœGŸLšL¨¬µS¸À¹±]´]ÑCÔCñEô Eð Eõ ”I�bœgŸlšl¨4¬:µs¸3±x´xÑ@Ô@ÑAÔAÐAÐAøõ	 '­Ð8ð Gð Gð GÝ”I�bœgŸlšl¨4¬:µs¸3±x´xÑ@Ô@Ý œgŸlšl¨4¬:µs¸4À!¹8±}´}ÑEÔEñGô Gð Gð Gð GðGøøøð
 �A‰IˆD‰DØ ™ˆŒÝˆw‰<Œ<˜1ÒÐØˆFØ'ŸošoÑ/Ô/ð 	8ð 	8‰NˆD�(Ø#ð 8ð 8‘��SØ˜(�?�?Ø47�H˜XŸ^š^¨CÑ0Ô0Ñ1øð8ð 	×Ò˜9Ñ%Ô%Ð%Ð%Ð%s   ÁA8DÄB	FÆFc                 ó:  — |                      ¦   «         }|                       ¦   «         }|                     ¦   «         D ]9\  }}||v r|                     |¦  «         Œ||v r||                     |¦  «        = Œ:|D ]}||vr|g||<   Œ|                      |¦  «         dS )z;Inspect a new MHMessage and update sequences appropriately.N)rË  rh   r  rý  rú  )r   r+   r1   Úpending_sequencesÚall_sequencesrÖ   rÍ  Úsequences           r"   rÄ  zMH._dump_sequencesÉ  sÄ   € à#×1Ò1Ñ3Ô3ÐØ×*Ò*Ñ,Ô,ˆØ+×1Ò1Ñ3Ô3ð 	2ð 	2‰NˆD�(ØÐ(Ð(Ð(Ø—’ Ñ$Ô$Ð$Ð$Ø˜��Ø˜XŸ^š^¨CÑ0Ô0Ð1øØ)ð 	0ð 	0ˆHØ˜}Ð,Ð,Ø+.¨%�˜hÑ'øØ×Ò˜=Ñ)Ô)Ð)Ð)Ð)r$   r¹   )r»   r¼   r½   r¾   r#   r,   r2   r=   rC   rN   rF   rW   rk   rn   r�   r„   r~   r‡   r   r%  r-  r6  rË  rú  r   rÄ  rÁ   r$   r"   r   r   §  sm  € € € € € ØÐð
ð 
ð 
ð 
ð ð  ð  ðDð ð ðð ð ð0ð ð ð2$ð $ð $ð*	ð 	ð 	ð;ð ;ð ;ð
Bð Bð Bð*ð *ð *ð ð  ð  ð!ð !ð !ðð ð ðð ð ð
ð ð ð7ð 7ð 7ð
)ð )ð )ð

ð 
ð 
ðð ð ð0ð ð ð:&ð &ð &ð4*ð *ð *ð *ð *r$   r   c                   ó|   — e Zd ZdZ eh d£¦  «        Zdd„Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r   zAn Rmail-style Babyl mailbox.>   ÚfiledÚeditedÚresentÚunseenÚdeletedÚansweredÚ	forwardedNTc                 óN   — t                                | |||¦  «         i | _        dS )zInitialize a Babyl mailbox.N)rT  r#   Ú_labelsr   s       r"   r#   zBabyl.__init__Þ  s'   € å×#Ò# D¨$°¸Ñ@Ô@Ð@ØˆŒˆˆr$   c                 óž   — t                                | |¦  «        }t          |t          ¦  «        r|                     ¦   «         | j        |<   |S )r&   )rT  r,   r›   r   Ú
get_labelsr  )r   r+   r1   s      r"   r,   z	Babyl.addã  sF   € å ×$Ò$ T¨7Ñ3Ô3ˆÝ�g�|Ñ,Ô,ð 	5Ø '× 2Ò 2Ñ 4Ô 4ˆDŒL˜ÑØˆ
r$   c                 ób   — t                                | |¦  «         || j        v r
| j        |= dS dS rî   )rT  r2   r  r0   s     r"   r2   zBabyl.removeê  s=   € å×!Ò! $¨Ñ,Ô,Ð,Ø�$”,ÐÐØ”˜SÐ!Ð!Ð!ð Ðr$   c                 ó¤   — t                                | ||¦  «         t          |t          ¦  «        r|                     ¦   «         | j        |<   dS dS )r;   N)rT  r=   r›   r   r  r  r<   s      r"   r=   zBabyl.__setitem__ð  sT   € å×&Ò& t¨S°'Ñ:Ô:Ð:Ý�g�|Ñ,Ô,ð 	5Ø '× 2Ò 2Ñ 4Ô 4ˆDŒL˜ÑÐÐð	5ð 	5r$   c                 óä  — |                       |¦  «        \  }}| j                             |¦  «         | j                             ¦   «          t	          j        ¦   «         }	 | j                             ¦   «         }|dt          z   k    s|sn/|                     |                     t          d¦  «        ¦  «         ŒYt	          j        ¦   «         }	 | j                             ¦   «         }|t          k    s|sn/|                     |                     t          d¦  «        ¦  «         ŒV|| j         	                    ¦   «         z
  }|dk    sJ ‚| j         
                    |¦  «        }|                     t          d¦  «        }t          |                     ¦   «         |z   ¦  «        }	|	                     |                     ¦   «         ¦  «         || j        v r |	                     | j        |         ¦  «         |	S )rI   Tó   *** EOOH ***rŽ   r   )rï   rZ  r¡   r®   rœ   r�   r£   r¤   r¢   rp  r‘   r   r­   Úset_visibler  Ú
set_labels)
r   r1   r|  r}  Úoriginal_headersr·   Úvisible_headersÚnÚbodyr  s
             r"   rC   zBabyl.get_messageö  sµ  € à—l’l 3Ñ'Ô'‰ˆˆtØŒ
�Š˜ÑÔÐØŒ
×ÒÑÔÐÝœ:™<œ<Ðð	AØ”:×&Ò&Ñ(Ô(ˆDØ�­Ñ0Ò0Ð0¸Ð0ØØ×"Ò" 4§<¢<µ¸Ñ#?Ô#?Ñ@Ô@Ð@ð		Aõ
 œ*™,œ,ˆð	@Ø”:×&Ò&Ñ(Ô(ˆDØ•wŠˆ dˆØØ×!Ò! $§,¢,­w¸Ñ">Ô">Ñ?Ô?Ð?ð		@ð �4”:—?’?Ñ$Ô$Ñ$ˆØ�AŠvˆvˆvˆvØŒz�Š˜qÑ!Ô!ˆØ�|Š|�G UÑ+Ô+ˆÝÐ+×4Ò4Ñ6Ô6¸Ñ=Ñ>Ô>ˆØ�Š˜×0Ò0Ñ2Ô2Ñ3Ô3Ð3Ø�$”,ÐÐØ�NŠN˜4œ<¨Ô,Ñ-Ô-Ð-Øˆ
r$   c                 ó¨  — |                       |¦  «        \  }}| j                             |¦  «         | j                             ¦   «          t	          j        ¦   «         }	 | j                             ¦   «         }|dt          z   k    s|sn/|                     |                     t          d¦  «        ¦  «         ŒY	 | j                             ¦   «         }|t          k    s|snŒ(| 	                    ¦   «         }|| j         
                    ¦   «         z
  }|dk    sJ ‚| j                             |¦  «        }|                     t          d¦  «        }||z   S )r™  Tr  rŽ   r   )rï   rZ  r¡   r®   rœ   r�   r£   r¤   r¢   r­   rp  r‘   )	r   r1   r|  r}  r  r·   Úheadersr  rµ   s	            r"   rN   zBabyl.get_bytes  s7  € à—l’l 3Ñ'Ô'‰ˆˆtØŒ
�Š˜ÑÔÐØŒ
×ÒÑÔÐÝœ:™<œ<Ðð	AØ”:×&Ò&Ñ(Ô(ˆDØ�­Ñ0Ò0Ð0¸Ð0ØØ×"Ò" 4§<¢<µ¸Ñ#?Ô#?Ñ@Ô@Ð@ð		Að
	Ø”:×&Ò&Ñ(Ô(ˆDØ•wŠˆ dˆØð	ð #×+Ò+Ñ-Ô-ˆØ�4”:—?’?Ñ$Ô$Ñ$ˆØ�AŠvˆvˆvˆvØŒz�Š˜qÑ!Ô!ˆØ�|Š|�G UÑ+Ô+ˆØ˜‰~Ðr$   c                 ó‚   — t          j        |                      |¦  «                             dt          ¦  «        ¦  «        S )rS   rŽ   )rœ   r�   rN   r¢   r£   r0   s     r"   rF   zBabyl.get_file(  s.   € åŒz˜$Ÿ.š.¨Ñ-Ô-×5Ò5°e½WÑEÔEÑFÔFÐFr$   c                 óú   — |                       ¦   «          t          ¦   «         }| j                             ¦   «         D ]}|                     |¦  «         Œ|                     | j        ¦  «         t          |¦  «        S )z4Return a list of user-defined labels in the mailbox.)rï   rî  r  rd   r{   Údifference_updateÚ_special_labelsrY   )r   ÚlabelsÚ
label_lists      r"   r  zBabyl.get_labels,  sm   € à�Š‰ŒˆÝ‘”ˆØœ,×-Ò-Ñ/Ô/ð 	&ð 	&ˆJØ�MŠM˜*Ñ%Ô%Ð%Ð%Ø× Ò  Ô!5Ñ6Ô6Ð6Ý�F‰|Œ|Ðr$   c                 ó–  — g g }}| j                              d¦  «         d}g }	 |}| j                              ¦   «         }| j                              ¦   «         }|dt          z   k    r³t          |¦  «        t          |¦  «        k     r*|                     |t          t          ¦  «        z
  ¦  «         |                     |¦  «         d„ | j                              ¦   «         dd…                              d¦  «        D ¦   «         }|                     |¦  «         nŒ|dk    s|dt          z   k    rKt          |¦  «        t          |¦  «        k     r*|                     |t          t          ¦  «        z
  ¦  «         n-|s+|                     |t          t          ¦  «        z
  ¦  «         n�Œƒt          t          t          ||¦  «        ¦  «        ¦  «        | _        t          t          |¦  «        ¦  «        | _        t          | j        ¦  «        | _        | j                              dd	¦  «         | j                              ¦   «         | _        dS )
r¯  r   Ts   c                 ó^   — g | ]*}|                      ¦   «         ¯|                      ¦   «         ‘Œ+S rÁ   )Ústrip©rÔ  Úlabels     r"   rí  z'Babyl._generate_toc.<locals>.<listcomp>C  s<   € ð :ð :ð :¨Eà+0¯;ª;©=¬=ð:˜%Ÿ+š+™-œ-ð :ð :ð :r$   r  Nó   ,ó   rI  )rZ  r¡   r®   rp  r£   r  r  rÜ   r°  r±  r²  rÍ   r  r[  r_  )r   r³  r´  r½  Úlabel_listsr¶  r·   r!  s           r"   rŠ  zBabyl._generate_toc5  sü  € à˜B�ˆØŒ
�Š˜ÑÔÐØˆØˆð	ØˆHØ”:×&Ò&Ñ(Ô(ˆDØ”z—’Ñ(Ô(ˆHØ�{¥WÑ,Ò,Ð,Ý�u‘:”:¥ F¡¤Ò+Ð+Ø—L’L ­Cµ©L¬LÑ!8Ñ9Ô9Ð9Ø—’˜hÑ'Ô'Ð'ð:ð :Ø+/¬:×+>Ò+>Ñ+@Ô+@ÀÀÀÔ+D×+JÒ+JÈ4Ñ+PÔ+Pð:ñ :ô :�ð ×"Ò" 6Ñ*Ô*Ð*Ð*Ø˜’� D¨GµgÑ,=Ò$=Ð$=Ý�u‘:”:¥ F¡¤Ò+Ð+Ø—L’L ­Cµ©L¬LÑ!8Ñ9Ô9Ð9øØð Ø—’˜X­­G©¬Ñ4Ñ5Ô5Ð5Øñ#	õ$ �¥3 v¨uÑ#5Ô#5Ñ6Ô6Ñ7Ô7ˆŒ	Ý�I kÑ2Ô2Ñ3Ô3ˆŒÝ˜TœY™œˆŒØŒ
�Š˜˜1ÑÔÐØ œJŸOšOÑ-Ô-ˆÔÐÐr$   c                 óî   — dt           z   }|dt           z   z  }|                      ¦   «         }d„ |D ¦   «         }|dd                     |¦  «        z   t           z   z  }|dz  }|                     |¦  «         dS )r�  s   BABYL OPTIONS:s
   Version: 5c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r4   )r‰   r&  s     r"   rÕ  z*Babyl._pre_mailbox_hook.<locals>.<genexpr>X  s*   è è € Ð5Ð5 U�%—,’,‘.”.Ð5Ð5Ð5Ð5Ð5Ð5r$   s   Labels:r(  r)  N)r£   r  rÉ   r¤   )r   r  Úbabylr!  s       r"   rr  zBabyl._pre_mailbox_hookS  sz   € à!¥GÑ+ˆØ�¥Ñ(Ñ(ˆØ—’Ñ"Ô"ˆØ5Ð5¨fÐ5Ñ5Ô5ˆØ�˜dŸiši¨Ñ/Ô/Ñ/µ'Ñ9Ñ9ˆØ�ÑˆØ	�Š�‰Œˆˆˆr$   c                 ó@   — |                      dt          z   ¦  «         dS )r„  ó   Nr­  r‚  s     r"   rt  zBabyl._pre_message_hook]  s   € à	�Š��'Ñ!Ñ"Ô"Ð"Ð"Ð"r$   c                 ó@   — |                      t          dz   ¦  «         dS )r‡  r)  Nr­  r‚  s     r"   rv  zBabyl._post_message_hooka  s   € à	�Š•˜'Ñ!Ñ"Ô"Ð"Ð"Ð"r$   c                 óœ  — | j                              ¦   «         }t          |t          ¦  «        �rg }g }|                     ¦   «         D ]6}|| j        v r|                     |¦  «         Œ!|                     |¦  «         Œ7| j                              d¦  «         |D ]1}| j                              d|                     ¦   «         z   ¦  «         Œ2| j                              d¦  «         |D ]4}| j                              d|                     ¦   «         z   dz   ¦  «         Œ5| j                              t          ¦  «         n"| j                              dt          z   ¦  «         t          |t          j        j        ¦  «        �rKt          j        ¦   «         }t          j                             |dd¦  «        }|                     |¦  «         |                     d¦  «         	 |                     ¦   «         }| j                              |                     d
t          ¦  «        ¦  «         |d
k    s|snŒQ| j                              dt          z   ¦  «         t          |t          ¦  «        r®t          j        ¦   «         }	t          j                             |	dd¦  «        }
|
                     |                     ¦   «         ¦  «         	 |	                     ¦   «         }| j                              |                     d
t          ¦  «        ¦  «         |d
k    s|snŒQng|                     d¦  «         	 |                     ¦   «         }| j                              |                     d
t          ¦  «        ¦  «         |d
k    s|snŒQ	 |                     d¦  «        }|sn4| j                              |                     d
t          ¦  «        ¦  «         ŒL�næt          |t.          t0          t          j        f¦  «        �rÈt          |t          j        ¦  «        r/t5          j        dt8          d¦  «         |                     ¦   «         }t          |t0          ¦  «        r|                      |¦  «        }|                     d¦  «        dz   }|dz
  dk    rÕ| j                              |d|…                              d
t          ¦  «        ¦  «         | j                              dt          z   ¦  «         | j                              |d|…                              d
t          ¦  «        ¦  «         | j                              ||d…                              d
t          ¦  «        ¦  «         �nU| j                              dt          z   t          z   ¦  «         | j                              |                     d
t          ¦  «        ¦  «         �nötA          |d¦  «        �rÆtA          |d¦  «        r"t5          j        dt8          d¦  «         |j!        }|                     ¦   «         }d	}	 |                     ¦   «         }| "                    d¦  «        r|dd…         d
z   }n"| "                    d¦  «        r|dd…         d
z   }| j                              |                     d
t          ¦  «        ¦  «         |d
k    s|s=|r:d}| j                              dt          z   ¦  «         |                     |¦  «         nnŒÒ	 |                     ¦   «         }|sn’| "                    d¦  «        r|dd…         t          z   }nO| "                    d¦  «        r|dd…         t          z   }n'| "                    d
¦  «        r|dd…         t          z   }| j                              |¦  «         Œ©ntG          dtI          |¦  «        z  ¦  «        ‚| j                              ¦   «         }||fS )z0Write message contents and return (start, stop).ó   1s   , s   ,,ó    r(  s   1,,Fr   TrŽ   r  rm  r�   r�   s   

rI  r—   Nr®   r’   r“   r”   r•   r–   rš   )%rZ  rp  r›   r   r  r   r  r¤   r‰   r£   rL   r+   r
   rœ   r�   rž   rŸ   r    r¡   r®   r¢   Úget_visibler‘   r¨   r§   r©   rª   r«   r¬   r­   rŒ   r   rw   r’   r¦   r°   r±   )r   r+   r|  Úspecial_labelsr!  r'  Úorig_bufferÚorig_generatorr·   Ú
vis_bufferÚvis_generatorr’   Ú
body_startÚoriginal_posÚ
first_passr}  s                   r"   rŒ  zBabyl._install_messagee  sK  € à”
—’Ñ!Ô!ˆÝ�g�|Ñ,Ô,ñ 	/ØˆNØˆFØ ×+Ò+Ñ-Ô-ð )ð )�Ø˜DÔ0Ð0Ð0Ø"×)Ò)¨%Ñ0Ô0Ð0Ð0à—M’M %Ñ(Ô(Ð(Ð(ØŒJ×Ò˜TÑ"Ô"Ð"Ø'ð 9ð 9�Ø”
× Ò  ¨¯ª©¬Ñ!7Ñ8Ô8Ð8Ð8ØŒJ×Ò˜UÑ#Ô#Ð#Øð ?ð ?�Ø”
× Ò  ¨¯ª©¬Ñ!6¸Ñ!=Ñ>Ô>Ð>Ð>ØŒJ×Ò�WÑ%Ô%Ð%Ð%àŒJ×Ò˜V¥gÑ-Ñ.Ô.Ð.Ý�g�uœ}Ô4Ñ5Ô5ñ S	HÝœ*™,œ,ˆKÝ"œ_×;Ò;¸KÈÐPQÑRÔRˆNØ×"Ò" 7Ñ+Ô+Ð+Ø×Ò˜QÑÔÐðØ"×+Ò+Ñ-Ô-�Ø”
× Ò  §¢¨eµWÑ!=Ô!=Ñ>Ô>Ð>Ø˜5’=�=¨�=Øð	ð
 ŒJ×Ò˜_­wÑ6Ñ7Ô7Ð7Ý˜'¥<Ñ0Ô0ð ÝœZ™\œ\�
Ý %¤× >Ò >¸zÈ5ÐRSÑ TÔ T�Ø×%Ò% g×&9Ò&9Ñ&;Ô&;Ñ<Ô<Ð<ðØ%×.Ò.Ñ0Ô0�DØ”J×$Ò$ T§\¢\°%½Ñ%AÔ%AÑBÔBÐBØ˜u’}�}¨D�}Øð	ð à× Ò  Ñ#Ô#Ð#ðØ&×/Ò/Ñ1Ô1�DØ”J×$Ò$ T§\¢\°%½Ñ%AÔ%AÑBÔBÐBØ˜u’}�}¨D�}Øð	ð
AØ$×)Ò)¨$Ñ/Ô/�Øð ØØ”
× Ò  §¢°µwÑ!?Ô!?Ñ@Ô@Ð@ð	Añ å˜¥%­­b¬kÐ!:Ñ;Ô;ñ 3	HÝ˜'¥2¤;Ñ/Ô/ð -Ý”ð *Ý+=¸qñBô Bð Bà!×*Ò*Ñ,Ô,�Ý˜'¥3Ñ'Ô'ð 9Ø×/Ò/°Ñ8Ô8�Ø Ÿš gÑ.Ô.°Ñ2ˆJØ˜A‰~ Ò#Ð#Ø”
× Ò  ¨¨*¨Ô!5×!=Ò!=¸eÅWÑ!MÔ!MÑNÔNÐNØ”
× Ò  µ7Ñ!:Ñ;Ô;Ð;Ø”
× Ò  ¨¨*¨Ô!5×!=Ò!=¸eÅWÑ!MÔ!MÑNÔNÐNØ”
× Ò  ¨¨¨Ô!5×!=Ò!=¸eÅWÑ!MÔ!MÑNÔNÐNÑNà”
× Ò  µ7Ñ!:½WÑ!DÑEÔEÐEØ”
× Ò  §¢°½Ñ!@Ô!@ÑAÔAÐAÑAÝ�W˜jÑ)Ô)ñ #	HÝ�w Ñ)Ô)ð )Ý”ð 5Ý6HÈ!ñMô Mð Mà!œ.�Ø"Ÿ<š<™>œ>ˆLØˆJðØ×'Ò'Ñ)Ô)�à—=’= Ñ)Ô)ð -Ø   œ9 uÑ,�D�DØ—]’] 5Ñ)Ô)ð -Ø   œ9 uÑ,�DØ”
× Ò  §¢¨eµWÑ!=Ô!=Ñ>Ô>Ð>Ø˜5’=�=¨�=Ø!ð Ø%*˜
Øœ
×(Ò(¨½7Ñ)BÑCÔCÐCØŸš \Ñ2Ô2Ð2Ð2àðð'Ø×'Ò'Ñ)Ô)�Øð Øà—=’= Ñ)Ô)ð /Ø   œ9¥wÑ.�D�DØ—]’] 5Ñ)Ô)ð /Ø   œ9¥wÑ.�D�DØ—]’] 5Ñ)Ô)ð /Ø   œ9¥wÑ.�DØ”
× Ò  Ñ&Ô&Ð&ð'ð õ Ð6½¸g¹¼ÑFÑGÔGÐGØŒz�ŠÑ Ô ˆØ�tˆ}Ðr$   r¹   )r»   r¼   r½   r¾   Ú	frozensetr   r#   r,   r2   r=   rC   rN   rF   r  rŠ  rr  rt  rv  rŒ  rÁ   r$   r"   r   r   Ø  s  € € € € € Ø'Ð'à�ið !Bð !Bð !Bñ Cô C€Oðð ð ð ð
ð ð ð"ð "ð "ð5ð 5ð 5ðð ð ð8ð ð ð,Gð Gð Gðð ð ð.ð .ð .ð<ð ð ð#ð #ð #ð#ð #ð #ðið ið ið ið ir$   r   c                   ó&   — e Zd ZdZdd„Zd„ Zd„ ZdS )r
   z0Message with mailbox-format-specific properties.Nc                 óh  — t          |t          j        j        ¦  «        rU|                      t          j        |¦  «        ¦  «         t          |t          ¦  «        r|                     | ¦  «         dS dS t          |t          ¦  «        r)|                      t          j	        |¦  «        ¦  «         dS t          |t          ¦  «        r)|                      t          j        |¦  «        ¦  «         dS t          |t          j        ¦  «        r)|                      t          j        |¦  «        ¦  «         dS t          |d¦  «        r)|                      t          j        |¦  «        ¦  «         dS |€&t          j        j                             | ¦  «         dS t%          dt'          |¦  «        z  ¦  «        ‚)zInitialize a Message instance.r‘   Nrš   )r›   rL   r+   r
   Ú_become_messageÚcopyÚdeepcopyÚ_explain_tor¨   rM   r§   Úmessage_from_stringrœ   ÚTextIOWrapperÚmessage_from_filerw   Úmessage_from_binary_filer#   r°   r±   r*   s     r"   r#   zMessage.__init__Ô  s�  € å�g�uœ}Ô4Ñ5Ô5ð 	HØ× Ò ¥¤¨wÑ!7Ô!7Ñ8Ô8Ð8Ý˜'¥7Ñ+Ô+ð *Ø×#Ò# DÑ)Ô)Ð)Ð)Ð)ð*ð *å˜¥Ñ'Ô'ð 	HØ× Ò ¥Ô!9¸'Ñ!BÔ!BÑCÔCÐCÐCÐCÝ˜¥Ñ%Ô%ð 		HØ× Ò ¥Ô!:¸7Ñ!CÔ!CÑDÔDÐDÐDÐDÝ˜¥Ô!1Ñ2Ô2ð 	HØ× Ò ¥Ô!8¸Ñ!AÔ!AÑBÔBÐBÐBÐBÝ�W˜fÑ%Ô%ð 	HØ× Ò ¥Ô!?ÀÑ!HÔ!HÑIÔIÐIÐIÐIØˆ_ÝŒMÔ!×*Ò*¨4Ñ0Ô0Ð0Ð0Ð0åÐ6½¸g¹¼ÑFÑGÔGÐGr$   c                 ón   — t          |dg ¦  «        }|j        D ]}||vr|j        |         | j        |<   ŒdS )z0Assume the non-format-specific state of message.Ú_type_specific_attributesN)ÚgetattrÚ__dict__)r   r+   Útype_specificrÖ   s       r"   r@  zMessage._become_messageç  sP   € å Ð)DÀbÑIÔIˆØÔ$ð 	=ð 	=ˆDØ˜=Ð(Ð(Ø&-Ô&6°tÔ&<�”˜dÑ#øð	=ð 	=r$   c                 óN   — t          |t          ¦  «        rdS t          d¦  «        ‚)z:Copy format-specific state to message insofar as possible.Nz Cannot convert to specified type)r›   r
   r°   r*   s     r"   rC  zMessage._explain_toî  s)   € å�g�wÑ'Ô'ð 	@ØˆFåÐ>Ñ?Ô?Ð?r$   r4   )r»   r¼   r½   r¾   r#   r@  rC  rÁ   r$   r"   r
   r
   Ñ  sU   € € € € € Ø:Ð:ðHð Hð Hð Hð&=ð =ð =ð@ð @ð @ð @ð @r$   r
   c                   ód   — e Zd ZdZg d¢Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )r   z)Message with Maildir-specific properties.)Ú_subdirÚ_infoÚ_dateNc                 óˆ   — d| _         d| _        t          j        ¦   «         | _        t                               | |¦  «         dS )z%Initialize a MaildirMessage instance.rÆ   rÓ   N)rO  rP  r8  rQ  r
   r#   r*   s     r"   r#   zMaildirMessage.__init__û  s9   € àˆŒØˆŒ
Ý”Y‘[”[ˆŒ
Ý×Ò˜˜wÑ'Ô'Ð'Ð'Ð'r$   c                 ó   — | j         S )zReturn 'new' or 'cur'.)rO  rV   s    r"   rØ   zMaildirMessage.get_subdir  s
   € àŒ|Ðr$   c                 óP   — |dk    s|dk    r	|| _         dS t          d|z  ¦  «        ‚)zSet subdir to 'new' or 'cur'.rÆ   rÇ   z!subdir must be 'new' or 'cur': %sN)rO  r‹   )r   rè   s     r"   rü   zMaildirMessage.set_subdir  s2   € à�UŠ?ˆ?˜f¨šo˜oØ!ˆDŒLˆLˆLåÐ@À6ÑIÑJÔJÐJr$   c                 óX   — | j                              d¦  «        r| j         dd…         S dS )ú*Return as a string the flags that are set.ú2,rI  NrÓ   )rP  r¯   rV   s    r"   Ú	get_flagszMaildirMessage.get_flags  s/   € àŒ:× Ò  Ñ&Ô&ð 	Ø”:˜a˜b˜b”>Ð!à�2r$   c                 óZ   — dd                      t          |¦  «        ¦  «        z   | _        dS )ú)Set the given flags and unset all others.rW  rÓ   N)rÉ   rs  rP  )r   Úflagss     r"   Ú	set_flagszMaildirMessage.set_flags  s$   € à˜BŸGšG¥F¨5¡M¤MÑ2Ô2Ñ2ˆŒ
ˆ
ˆ
r$   c                 ó´   — |                       d                     t          |                      ¦   «         ¦  «        t          |¦  «        z  ¦  «        ¦  «         dS ©z.Set the given flag(s) without changing others.rÓ   N©r\  rÉ   rî  rX  ©r   Úflags     r"   Úadd_flagzMaildirMessage.add_flag  óC   € à�Š�r—w’w�s 4§>¢>Ñ#3Ô#3Ñ4Ô4µs¸4±y´yÑ@ÑAÔAÑBÔBÐBÐBÐBr$   c                 óà   — |                       ¦   «         rY|                      d                     t          |                       ¦   «         ¦  «        t          |¦  «        z
  ¦  «        ¦  «         dS dS )ú7Unset the given string flag(s) without changing others.rÓ   N)rX  r\  rÉ   rî  r`  s     r"   Úremove_flagzMaildirMessage.remove_flag  sb   € à�>Š>ÑÔð 	GØ�NŠN˜2Ÿ7š7¥3 t§~¢~Ñ'7Ô'7Ñ#8Ô#8½3¸t¹9¼9Ñ#DÑEÔEÑFÔFÐFÐFÐFð	Gð 	Gr$   c                 ó   — | j         S )z<Return delivery date of message, in seconds since the epoch.)rQ  rV   s    r"   rß   zMaildirMessage.get_date!  ó
   € àŒzÐr$   c                 ór   — 	 t          |¦  «        | _        dS # t          $ r t          d|z  ¦  «        d‚w xY w)z9Set delivery date of message, in seconds since the epoch.zcan't convert to float: %sN)ÚfloatrQ  r‹   r°   )r   Údates     r"   rþ   zMaildirMessage.set_date%  sN   € ð	KÝ˜t™œˆDŒJˆJˆJøÝð 	Kð 	Kð 	KÝÐ8¸4Ñ?Ñ@Ô@ÀdÐJð	Køøøs   ‚ ˜6c                 ó   — | j         S )z%Get the message's "info" as a string.)rP  rV   s    r"   rÚ   zMaildirMessage.get_info,  rh  r$   c                 ó|   — t          |t          ¦  «        r	|| _        dS t          dt	          |¦  «        z  ¦  «        ‚)z Set the message's "info" string.zinfo must be a string: %sN)r›   r§   rP  r°   r±   )r   Úinfos     r"   rý   zMaildirMessage.set_info0  s:   € å�d�CÑ Ô ð 	FØˆDŒJˆJˆJåÐ7½$¸t¹*¼*ÑDÑEÔEÐEr$   c                 óÒ  — t          |t          ¦  «        rw|                     |                      ¦   «         ¦  «         |                     |                      ¦   «         ¦  «         |                     |                      ¦   «         ¦  «         dS t          |t          ¦  «        rît          |                      ¦   «         ¦  «        }d|v r| 
                    d¦  «         |                      ¦   «         dk    r| 
                    d¦  «         d|v r| 
                    d¦  «         d|v r| 
                    d¦  «         d|v r| 
                    d¦  «         |                     d	t          j        |                      ¦   «         ¦  «        ¦  «         dS t          |t          ¦  «        rpt          |                      ¦   «         ¦  «        }d|vr|                     d
¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         dS dS t          |t           ¦  «        r‰t          |                      ¦   «         ¦  «        }d|vr|                     d
¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         dS dS t          |t$          ¦  «        rdS t'          dt)          |¦  «        z  ¦  «        ‚)z;Copy Maildir-specific state to message insofar as possible.ÚSÚRrÇ   ÚOÚTÚDÚFÚAúMAILER-DAEMONr	  ÚrepliedÚflaggedr
  r  r=  r  ú$Cannot convert to specified type: %sN)r›   r   r\  rX  rü   rØ   rþ   rß   r¡  rî  rb  r”  r8  r¥  r   rÌ  r   Ú	add_labelr
   r°   r±   )r   r+   r[  s      r"   rC  zMaildirMessage._explain_to7  sÜ  € å�g�~Ñ.Ô.ð '	+Ø×Ò˜dŸnšnÑ.Ô.Ñ/Ô/Ð/Ø×Ò˜tŸšÑ0Ô0Ñ1Ô1Ð1Ø×Ò˜TŸ]š]™_œ_Ñ-Ô-Ð-Ð-Ð-Ý˜Õ!1Ñ2Ô2ð #	+Ý˜ŸšÑ(Ô(Ñ)Ô)ˆEØ�eˆ|ˆ|Ø× Ò  Ñ%Ô%Ð%Ø�ŠÑ Ô  EÒ)Ð)Ø× Ò  Ñ%Ô%Ð%Ø�eˆ|ˆ|Ø× Ò  Ñ%Ô%Ð%Ø�eˆ|ˆ|Ø× Ò  Ñ%Ô%Ð%Ø�eˆ|ˆ|Ø× Ò  Ñ%Ô%Ð%Ø×Ò˜_­d¬k¸$¿-º-¹/¼/Ñ.JÔ.JÑKÔKÐKÐKÐKÝ˜¥Ñ+Ô+ð 	+Ý˜ŸšÑ(Ô(Ñ)Ô)ˆEØ˜%ÐÐØ×$Ò$ XÑ.Ô.Ð.Ø�eˆ|ˆ|Ø×$Ò$ YÑ/Ô/Ð/Ø�eˆ|ˆ|Ø×$Ò$ YÑ/Ô/Ð/Ð/Ð/ð ˆ|å˜¥Ñ.Ô.ð 	+Ý˜ŸšÑ(Ô(Ñ)Ô)ˆEØ˜%ÐÐØ×!Ò! (Ñ+Ô+Ð+Ø�eˆ|ˆ|Ø×!Ò! )Ñ,Ô,Ð,Ø�eˆ|ˆ|Ø×!Ò! *Ñ-Ô-Ð-Ø�eˆ|ˆ|Ø×!Ò! +Ñ.Ô.Ð.Ð.Ð.ð ˆ|å˜¥Ñ)Ô)ð 	+ØˆDåÐBÝ  ™MœMñ*ñ +ô +ð +r$   r4   )r»   r¼   r½   r¾   rI  r#   rØ   rü   rX  r\  rb  rf  rß   rþ   rÚ   rý   rC  rÁ   r$   r"   r   r   ö  sî   € € € € € Ø3Ð3à =Ð =Ð =Ðð(ð (ð (ð (ðð ð ðKð Kð Kðð ð ð3ð 3ð 3ðCð Cð CðGð Gð Gð
ð ð ðKð Kð Kðð ð ðFð Fð Fð)+ð )+ð )+ð )+ð )+r$   r   c                   óL   — e Zd ZdZdgZdd„Zd„ Zdd„Zd„ Zd„ Z	d	„ Z
d
„ Zd„ ZdS )r¡  z/Message with mbox- or MMDF-specific properties.Ú_fromNc                 ó6  — |                       dd¦  «         t          |t          j        j        ¦  «        rH|                     ¦   «         }|�2|                     d¦  «        r|                       |dd…         ¦  «         t                               | |¦  «         dS )z'Initialize an mboxMMDFMessage instance.rw  TNzFrom r™   )r”  r›   rL   r+   r
   r£  r¯   r#   )r   r+   rš  s      r"   r#   z_mboxMMDFMessage.__init__h  s�   € à�Š�o tÑ,Ô,Ð,Ý�g�uœ}Ô4Ñ5Ô5ð 	,Ø×+Ò+Ñ-Ô-ˆHØÐ#¨×(;Ò(;¸GÑ(DÔ(DÐ#Ø—’˜h q r rœlÑ+Ô+Ð+Ý×Ò˜˜wÑ'Ô'Ð'Ð'Ð'r$   c                 ó   — | j         S )z Return contents of "From " line.)r}  rV   s    r"   r¢  z_mboxMMDFMessage.get_fromq  rh  r$   c                 óz   — |�1|du rt          j        ¦   «         }|dt          j        |¦  «        z   z  }|| _        dS )z>Set "From " line, formatting and appending time_ if specified.NTrõ  )r8  r¥  r¤  r}  )r   r›  Útime_s      r"   r”  z_mboxMMDFMessage.set_fromu  s@   € àÐØ˜ˆ}ˆ}Ýœ™œ�Ø�S�4œ<¨Ñ.Ô.Ñ.Ñ.ˆEØˆŒ
ˆ
ˆ
r$   c                 ó\   — |                       dd¦  «        |                       dd¦  «        z   S )rV  ÚStatusrÓ   úX-Status)rA   rV   s    r"   rX  z_mboxMMDFMessage.get_flags}  s)   € à�xŠx˜ "Ñ%Ô%¨¯ª°¸RÑ(@Ô(@Ñ@Ð@r$   c                 óü  — t          |¦  «        }d\  }}dD ] }||v r||z  }|                     |¦  «         Œ!dD ] }||v r||z  }|                     |¦  «         Œ!|d                     t          |¦  «        ¦  «        z  }	 |                      d|¦  «         n&# t
          $ r |                      d|¦  «         Y nw xY w	 |                      d|¦  «         dS # t
          $ r |                      d|¦  «         Y dS w xY w)rZ  )rÓ   rÓ   )rq  rr  )rt  ru  rv  rÓ   rƒ  r„  N)rî  r2   rÉ   rs  Úreplace_headerr8   Ú
add_header)r   r[  Ústatus_flagsÚxstatus_flagsra  s        r"   r\  z_mboxMMDFMessage.set_flags�  sI  € å�E‘
”
ˆØ&,Ñ#ˆ�mØð 	#ð 	#ˆDØ�uˆ}ˆ}Ø Ñ$�Ø—’˜TÑ"Ô"Ð"øØ#ð 	#ð 	#ˆDØ�uˆ}ˆ}Ø Ñ%�Ø—’˜TÑ"Ô"Ð"øØ˜Ÿš¥¨¡¤Ñ/Ô/Ñ/ˆð	4Ø×Ò ¨,Ñ7Ô7Ð7Ð7øÝð 	4ð 	4ð 	4Ø�OŠO˜H lÑ3Ô3Ð3Ð3Ð3ð	4øøøð	7Ø×Ò 
¨MÑ:Ô:Ð:Ð:Ð:øÝð 	7ð 	7ð 	7Ø�OŠO˜J¨Ñ6Ô6Ð6Ð6Ð6Ð6ð	7øøøs$   ÂB Â B;Â:B;Â?C Ã C;Ã:C;c                 ó´   — |                       d                     t          |                      ¦   «         ¦  «        t          |¦  «        z  ¦  «        ¦  «         dS r^  r_  r`  s     r"   rb  z_mboxMMDFMessage.add_flag—  rc  r$   c                 óÈ   — d| v sd| v rY|                       d                     t          |                      ¦   «         ¦  «        t          |¦  «        z
  ¦  «        ¦  «         dS dS )re  rƒ  r„  rÓ   Nr_  r`  s     r"   rf  z_mboxMMDFMessage.remove_flag›  s`   € à�tÐÐ˜z¨TÐ1Ð1Ø�NŠN˜2Ÿ7š7¥3 t§~¢~Ñ'7Ô'7Ñ#8Ô#8½3¸t¹9¼9Ñ#DÑEÔEÑFÔFÐFÐFÐFð  2Ð1r$   c                 óü  — t          |t          ¦  «        �r:t          |                      ¦   «         ¦  «        }d|v r|                     d¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         |d	= |d
= d                     |                      ¦   «                              ¦   «         dd…         ¦  «        }	 | 	                    t          j        t          j        |d¦  «        ¦  «        ¦  «         dS # t          t          f$ r Y dS w xY wt          |t           ¦  «        rP|                     |                      ¦   «         ¦  «         |                     |                      ¦   «         ¦  «         dS t          |t&          ¦  «        rtt          |                      ¦   «         ¦  «        }d|vr|                     d¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         |d	= |d
= dS t          |t*          ¦  «        rtt          |                      ¦   «         ¦  «        }d|vr|                     d¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         |d	= |d
= dS t          |t.          ¦  «        rdS t1          dt3          |¦  «        z  ¦  «        ‚)zACopy mbox- or MMDF-specific state to message insofar as possible.rr  rÇ   ru  rv  rq  rp  rt  rs  Ústatuszx-statusrõ  éûÿÿÿNz%a %b %d %H:%M:%S %Yr	  rx  ry  r
  r  rz  )r›   r   rî  rX  rü   rb  rÉ   r¢  rÜ   rþ   ÚcalendarÚtimegmr8  Ústrptimer‹   ÚOverflowErrorr¡  r\  r”  r   rÌ  r   r{  r
   r°   r±   )r   r+   r[  Ú
maybe_dates       r"   rC  z_mboxMMDFMessage._explain_to   s/  € å�g�~Ñ.Ô.ñ /	+Ý˜ŸšÑ(Ô(Ñ)Ô)ˆEØ�eˆ|ˆ|Ø×"Ò" 5Ñ)Ô)Ð)Ø�eˆ|ˆ|Ø× Ò  Ñ%Ô%Ð%Ø�eˆ|ˆ|Ø× Ò  Ñ%Ô%Ð%Ø�eˆ|ˆ|Ø× Ò  Ñ%Ô%Ð%Ø�eˆ|ˆ|Ø× Ò  Ñ%Ô%Ð%Ø˜Ð!Ø˜
Ð#ØŸš $§-¢-¡/¤/×"7Ò"7Ñ"9Ô"9¸"¸#¸#Ô">Ñ?Ô?ˆJðØ× Ò ¥¤µ´¸zØ6Lñ2Nô 2Nñ "Oô "Oñ Pô Pð Pð Pð Pøå¥Ð.ð ð ð Ø��ðøøøå˜Õ!1Ñ2Ô2ð 	+Ø×Ò˜dŸnšnÑ.Ô.Ñ/Ô/Ð/Ø×Ò˜TŸ]š]™_œ_Ñ-Ô-Ð-Ð-Ð-Ý˜¥Ñ+Ô+ð 	+Ý˜ŸšÑ(Ô(Ñ)Ô)ˆEØ˜%ÐÐØ×$Ò$ XÑ.Ô.Ð.Ø�eˆ|ˆ|Ø×$Ò$ YÑ/Ô/Ð/Ø�eˆ|ˆ|Ø×$Ò$ YÑ/Ô/Ð/Ø˜Ð!Ø˜
Ð#Ð#Ð#Ý˜¥Ñ.Ô.ð 	+Ý˜ŸšÑ(Ô(Ñ)Ô)ˆEØ˜%ÐÐØ×!Ò! (Ñ+Ô+Ð+Ø�eˆ|ˆ|Ø×!Ò! )Ñ,Ô,Ð,Ø�eˆ|ˆ|Ø×!Ò! *Ñ-Ô-Ð-Ø˜Ð!Ø˜
Ð#Ð#Ð#Ý˜¥Ñ)Ô)ð 	+ØˆDåÐBÝ  ™MœMñ*ñ +ô +ð +s   Ã=:D9 Ä9EÅEr4   )r»   r¼   r½   r¾   rI  r#   r¢  r”  rX  r\  rb  rf  rC  rÁ   r$   r"   r¡  r¡  c  s­   € € € € € Ø9Ð9à!( 	Ðð(ð (ð (ð (ðð ð ðð ð ð ðAð Að Að7ð 7ð 7ð,Cð Cð CðGð Gð Gð
1+ð 1+ð 1+ð 1+ð 1+r$   r¡  c                   ó   — e Zd ZdZdS )r   z&Message with mbox-specific properties.N©r»   r¼   r½   r¾   rÁ   r$   r"   r   r   Ô  ó   € € € € € Ø0Ð0Ð0Ð0r$   r   c                   ó>   — e Zd ZdZdgZd
d„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
dS )r   z$Message with MH-specific properties.Ú
_sequencesNc                 óJ   — g | _         t                               | |¦  «         dS )z!Initialize an MHMessage instance.N)r˜  r
   r#   r*   s     r"   r#   zMHMessage.__init__Ý  s%   € àˆŒÝ×Ò˜˜wÑ'Ô'Ð'Ð'Ð'r$   c                 ó    — | j         dd…         S )z4Return a list of sequences that include the message.N)r˜  rV   s    r"   rË  zMHMessage.get_sequencesâ  s   € àŒ˜q˜q˜qÔ!Ð!r$   c                 ó.   — t          |¦  «        | _        dS )z3Set the list of sequences that include the message.N)rY   r˜  )r   r÷  s     r"   rú  zMHMessage.set_sequencesæ  s   € å˜y™/œ/ˆŒˆˆr$   c                 ó¸   — t          |t          ¦  «        r'|| j        vr| j                             |¦  «         dS dS t	          dt          |¦  «        z  ¦  «        ‚)z8Add sequence to list of sequences including the message.zsequence type must be str: %sN)r›   r§   r˜  r  r°   r±   ©r   r  s     r"   rÌ  zMHMessage.add_sequenceê  sb   € å�h¥Ñ$Ô$ð 	NØ˜tœÐ.Ð.Ø”×&Ò& xÑ0Ô0Ð0Ð0Ð0ð /Ð.õ Ð;½dÀ8¹n¼nÑLÑMÔMÐMr$   c                 ó^   — 	 | j                              |¦  «         dS # t          $ r Y dS w xY w)zARemove sequence from the list of sequences including the message.N)r˜  r2   r‹   r�  s     r"   Úremove_sequencezMHMessage.remove_sequenceò  sE   € ð	ØŒO×"Ò" 8Ñ,Ô,Ð,Ð,Ð,øÝð 	ð 	ð 	ØˆDˆDð	øøøó   ‚ ž
,«,c                 ób  — t          |t          ¦  «        r›t          |                      ¦   «         ¦  «        }d|v r|                     d¦  «         n*|                     d¦  «         |                     d¦  «         d|v r|                     d¦  «         d|v r|                     d¦  «         dS dS t          |t          ¦  «        r†t          |                      ¦   «         ¦  «        }d|vr|                     d¦  «         n|                     d	¦  «         d|v r|                     d¦  «         d|v r|                     d
¦  «         dS dS t          |t          ¦  «        r.|                      ¦   «         D ]}|                     |¦  «         ŒdS t          |t          ¦  «        rWt          |                      ¦   «         ¦  «        }d|v r| 
                    d¦  «         d|v r| 
                    d¦  «         dS dS t          |t          ¦  «        rdS t          dt          |¦  «        z  ¦  «        ‚)z6Copy MH-specific state to message insofar as possible.r	  rÇ   rp  ry  ru  rx  rq  ÚROrr  rv  r  rz  N)r›   r   rî  rË  rü   rb  r¡  r   rÌ  r   r{  r
   r°   r±   )r   r+   r÷  r  s       r"   rC  zMHMessage._explain_toù  sp  € å�g�~Ñ.Ô.ð "	+Ý˜D×.Ò.Ñ0Ô0Ñ1Ô1ˆIØ˜9Ð$Ð$Ø×"Ò" 5Ñ)Ô)Ð)Ð)à×"Ò" 5Ñ)Ô)Ð)Ø× Ò  Ñ%Ô%Ð%Ø˜IÐ%Ð%Ø× Ò  Ñ%Ô%Ð%Ø˜IÐ%Ð%Ø× Ò  Ñ%Ô%Ð%Ð%Ð%ð &Ð%å˜Õ!1Ñ2Ô2ð 	+Ý˜D×.Ò.Ñ0Ô0Ñ1Ô1ˆIØ˜yÐ(Ð(Ø× Ò  Ñ&Ô&Ð&Ð&à× Ò  Ñ%Ô%Ð%Ø˜IÐ%Ð%Ø× Ò  Ñ%Ô%Ð%Ø˜IÐ%Ð%Ø× Ò  Ñ%Ô%Ð%Ð%Ð%ð &Ð%å˜¥Ñ+Ô+ð 	+Ø ×.Ò.Ñ0Ô0ð /ð /�Ø×$Ò$ XÑ.Ô.Ð.Ð.ð/ð /å˜¥Ñ.Ô.ð 
	+Ý˜D×.Ò.Ñ0Ô0Ñ1Ô1ˆIØ˜9Ð$Ð$Ø×!Ò! (Ñ+Ô+Ð+Ø˜IÐ%Ð%Ø×!Ò! *Ñ-Ô-Ð-Ð-Ð-ð &Ð%å˜¥Ñ)Ô)ð 	+ØˆDåÐBÝ  ™MœMñ*ñ +ô +ð +r$   r4   )r»   r¼   r½   r¾   rI  r#   rË  rú  rÌ  rŸ  rC  rÁ   r$   r"   r   r   Ø  s„   € € € € € Ø.Ð.à!- Ðð(ð (ð (ð (ð
"ð "ð "ð*ð *ð *ðNð Nð Nðð ð ð$+ð $+ð $+ð $+ð $+r$   r   c                   óR   — e Zd ZdZddgZdd„Zd„ Zd„ Zd„ Zd	„ Z	d
„ Z
d„ Zd„ Zd„ ZdS )r   z'Message with Babyl-specific properties.r  Ú_visibleNc                 óp   — g | _         t          ¦   «         | _        t                               | |¦  «         dS )z#Initialize a BabylMessage instance.N)r  r
   r¤  r#   r*   s     r"   r#   zBabylMessage.__init__%  s0   € àˆŒÝ™	œ	ˆŒÝ×Ò˜˜wÑ'Ô'Ð'Ð'Ð'r$   c                 ó    — | j         dd…         S )z'Return a list of labels on the message.N)r  rV   s    r"   r  zBabylMessage.get_labels+  s   € àŒ|˜A˜A˜AŒÐr$   c                 ó.   — t          |¦  «        | _        dS )z&Set the list of labels on the message.N)rY   r  )r   r!  s     r"   r  zBabylMessage.set_labels/  s   € å˜F‘|”|ˆŒˆˆr$   c                 ó¸   — t          |t          ¦  «        r'|| j        vr| j                             |¦  «         dS dS t	          dt          |¦  «        z  ¦  «        ‚)z+Add label to list of labels on the message.zlabel must be a string: %sN)r›   r§   r  r  r°   r±   ©r   r'  s     r"   r{  zBabylMessage.add_label3  sb   € å�e�SÑ!Ô!ð 	HØ˜DœLÐ(Ð(Ø”×#Ò# EÑ*Ô*Ð*Ð*Ð*ð )Ð(õ Ð8½4À¹;¼;ÑFÑGÔGÐGr$   c                 ó^   — 	 | j                              |¦  «         dS # t          $ r Y dS w xY w)z4Remove label from the list of labels on the message.N)r  r2   r‹   r©  s     r"   Úremove_labelzBabylMessage.remove_label;  sE   € ð	ØŒL×Ò Ñ&Ô&Ð&Ð&Ð&øÝð 	ð 	ð 	ØˆDˆDð	øøør   c                 ó*   — t          | j        ¦  «        S )z3Return a Message representation of visible headers.©r
   r¤  rV   s    r"   r4  zBabylMessage.get_visibleB  s   € å�t”}Ñ%Ô%Ð%r$   c                 ó.   — t          |¦  «        | _        dS )z2Set the Message representation of visible headers.Nr­  )r   Úvisibles     r"   r  zBabylMessage.set_visibleF  s   € å Ñ(Ô(ˆŒˆˆr$   c                 óÞ   — | j                              ¦   «         D ]0}|| v r"| j                              || |         ¦  «         Œ(| j         |= Œ1dD ]}|| v r|| j         vr| |         | j         |<   Œ dS )z9Update and/or sensibly generate a set of visible headers.)ÚDateÚFromzReply-ToÚToÚCCÚSubjectN)r¤  rZ   r†  )r   Úheaders     r"   Úupdate_visiblezBabylMessage.update_visibleJ  s“   € à”m×(Ò(Ñ*Ô*ð 	*ð 	*ˆFØ˜ˆ~ˆ~Ø”×,Ò,¨V°T¸&´\ÑBÔBÐBÐBà”M &Ð)Ð)ØIð 	5ð 	5ˆFØ˜ˆ~ˆ~ &°´Ð"=Ð"=Ø(,¨V¬�”˜fÑ%øð	5ð 	5r$   c                 óê  — t          |t          ¦  «        r¸t          |                      ¦   «         ¦  «        }d|v r|                     d¦  «         n*|                     d¦  «         |                     d¦  «         d|v sd|v r|                     d¦  «         d|v r|                     d¦  «         d	|v r|                     d
¦  «         dS dS t          |t          ¦  «        r†t          |                      ¦   «         ¦  «        }d|vr|                     d¦  «         n|                     d¦  «         d	|v r|                     d¦  «         d|v r|                     d¦  «         dS dS t          |t          ¦  «        rWt          |                      ¦   «         ¦  «        }d|v r|                     d¦  «         d|v r|                     d¦  «         dS dS t          |t          ¦  «        rU| 
                    |                      ¦   «         ¦  «         |                      ¦   «         D ]}|                     |¦  «         ŒdS t          |t          ¦  «        rdS t          dt          |¦  «        z  ¦  «        ‚)z9Copy Babyl-specific state to message insofar as possible.r	  rÇ   rp  r  r  r=  r  rq  r
  rs  r¢  rr  rt  rv  rx  rz  N)r›   r   rî  r  rü   rb  r¡  r   rÌ  r   r  r4  r{  r
   r°   r±   )r   r+   r!  r'  s       r"   rC  zBabylMessage._explain_toU  s±  € å�g�~Ñ.Ô.ð %	+Ý˜ŸšÑ*Ô*Ñ+Ô+ˆFØ˜6Ð!Ð!Ø×"Ò" 5Ñ)Ô)Ð)Ð)à×"Ò" 5Ñ)Ô)Ð)Ø× Ò  Ñ%Ô%Ð%Ø˜fÐ$Ð$¨°FÐ(:Ð(:Ø× Ò  Ñ%Ô%Ð%Ø˜VÐ#Ð#Ø× Ò  Ñ%Ô%Ð%Ø˜FÐ"Ð"Ø× Ò  Ñ%Ô%Ð%Ð%Ð%ð #Ð"å˜Õ!1Ñ2Ô2ð 	+Ý˜ŸšÑ*Ô*Ñ+Ô+ˆFØ˜vÐ%Ð%Ø× Ò  Ñ&Ô&Ð&Ð&à× Ò  Ñ%Ô%Ð%Ø˜FÐ"Ð"Ø× Ò  Ñ%Ô%Ð%Ø˜VÐ#Ð#Ø× Ò  Ñ%Ô%Ð%Ð%Ð%ð $Ð#å˜¥Ñ+Ô+ð 	+Ý˜ŸšÑ*Ô*Ñ+Ô+ˆFØ˜6Ð!Ð!Ø×$Ò$ XÑ.Ô.Ð.Ø˜VÐ#Ð#Ø×$Ò$ YÑ/Ô/Ð/Ð/Ð/ð $Ð#å˜¥Ñ.Ô.ð 	+Ø×Ò × 0Ò 0Ñ 2Ô 2Ñ3Ô3Ð3ØŸšÑ*Ô*ð )ð )�Ø×!Ò! %Ñ(Ô(Ð(Ð(ð)ð )å˜¥Ñ)Ô)ð 	+ØˆDåÐBÝ  ™MœMñ*ñ +ô +ð +r$   r4   )r»   r¼   r½   r¾   rI  r#   r  r  r{  r«  r4  r  r·  rC  rÁ   r$   r"   r   r      s´   € € € € € Ø1Ð1à!*¨JÐ 7Ðð(ð (ð (ð (ðð ð ð$ð $ð $ðHð Hð Hðð ð ð&ð &ð &ð)ð )ð )ð	5ð 	5ð 	5ð'+ð '+ð '+ð '+ð '+r$   r   c                   ó   — e Zd ZdZdS )r   z&Message with MMDF-specific properties.Nr•  rÁ   r$   r"   r   r     r–  r$   r   c                   óª   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zd„ Z	d	„ Z
dd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z ee¦  «        ZdS )r  zA read-only wrapper of a file.Nc                 ó\   — || _         |€|                     ¦   «         | _        dS || _        dS )zInitialize a _ProxyFile.N)rZ  rp  Ú_pos)r   r  Úposs      r"   r#   z_ProxyFile.__init__†  s,   € àˆŒ
Øˆ;ØŸš™œˆDŒIˆIˆIàˆDŒIˆIˆIr$   c                 óB   — |                       || j        j        ¦  «        S ©zRead bytes.)Ú_readrZ  r‘   ©r   Úsizes     r"   r‘   z_ProxyFile.readŽ  s   € à�zŠz˜$ ¤
¤Ñ0Ô0Ð0r$   c                 óB   — |                       || j        j        ¦  «        S r¿  )rÀ  rZ  Úread1rÁ  s     r"   rÄ  z_ProxyFile.read1’  s   € à�zŠz˜$ ¤
Ô 0Ñ1Ô1Ð1r$   c                 óB   — |                       || j        j        ¦  «        S )zRead a line.)rÀ  rZ  r®   rÁ  s     r"   r®   z_ProxyFile.readline–  s   € à�zŠz˜$ ¤
Ô 3Ñ4Ô4Ð4r$   c                 óv   — g }| D ]3}|                      |¦  «         |�|t          |¦  «        z  }|dk    r nŒ4|S )zRead multiple lines.Nr   )r  r  )r   Úsizehintrr   r·   s       r"   Ú	readlinesz_ProxyFile.readlinesš  sR   € àˆØð 	ð 	ˆDØ�MŠM˜$ÑÔÐØÐ#Ø�C ™IœIÑ%�Ø˜q’=�=Ø�EøØˆr$   c              #   óB   K  — 	 |                       ¦   «         }|sdS |V — Œ)zIterate over lines.TN)r®   )r   r·   s     r"   rb   z_ProxyFile.__iter__¥  s3   è è € ð	Ø—=’=‘?”?ˆDØð Ø�ØˆJˆJˆJð		r$   c                 ó   — | j         S )zReturn the position.)r¼  rV   s    r"   rp  z_ProxyFile.tell­  s
   € àŒyÐr$   r   c                 óÂ   — |dk    r| j                              | j        ¦  «         | j                              ||¦  «         | j                              ¦   «         | _        dS )zChange position.r  N©rZ  r¡   r¼  rp  ©r   ÚoffsetÚwhences      r"   r¡   z_ProxyFile.seek±  sN   € à�QŠ;ˆ;ØŒJ�OŠO˜DœIÑ&Ô&Ð&ØŒ
�Š˜ Ñ'Ô'Ð'Ø”J—O’OÑ%Ô%ˆŒ	ˆ	ˆ	r$   c                 óš   — t          | d¦  «        r:	 t          | j        d¦  «        r| j                             ¦   «          | `dS # | `w xY wdS )zClose the file.rZ  r‡   N)rw   rZ  r‡   rV   s    r"   r‡   z_ProxyFile.close¸  sa   € å�4˜Ñ!Ô!ð 	ðÝ˜4œ: wÑ/Ô/ð 'Ø”J×$Ò$Ñ&Ô&Ð&à�J�J�Jø�D�J����ð	ð 	s   ’.A ÁAc                 óž   — |€d}| j                              | j        ¦  «          ||¦  «        }| j                              ¦   «         | _        |S )z"Read size bytes using read_method.Nr—   rÌ  )r   rÂ  Úread_methodrr   s       r"   rÀ  z_ProxyFile._readÁ  sI   € àˆ<ØˆDØŒ
�Š˜œ	Ñ"Ô"Ð"Ø�˜TÑ"Ô"ˆØ”J—O’OÑ%Ô%ˆŒ	Øˆr$   c                 ó   — | S )z$Context management protocol support.rÁ   rV   s    r"   Ú	__enter__z_ProxyFile.__enter__Ê  s   € àˆr$   c                 ó.   — |                       ¦   «          d S r4   )r‡   )r   Úexcs     r"   Ú__exit__z_ProxyFile.__exit__Î  s   € Ø�
Š
‰Œˆˆˆr$   c                 ó4   — | j                              ¦   «         S r4   )rZ  ÚreadablerV   s    r"   rÙ  z_ProxyFile.readableÑ  ó   € ØŒz×"Ò"Ñ$Ô$Ð$r$   c                 ó4   — | j                              ¦   «         S r4   )rZ  ÚwritablerV   s    r"   rÜ  z_ProxyFile.writableÔ  rÚ  r$   c                 ó4   — | j                              ¦   «         S r4   )rZ  ÚseekablerV   s    r"   rÞ  z_ProxyFile.seekable×  rÚ  r$   c                 ó4   — | j                              ¦   «         S r4   )rZ  r~   rV   s    r"   r~   z_ProxyFile.flushÚ  s   € ØŒz×ÒÑ!Ô!Ð!r$   c                 ól   — t          | d¦  «        sdS t          | j        d¦  «        sdS | j        j        S )NrZ  TrÆ  F)rw   rZ  rÆ  rV   s    r"   rÆ  z_ProxyFile.closedÝ  s=   € å�t˜WÑ%Ô%ð 	Ø�4Ý�t”z 8Ñ,Ô,ð 	Ø�5ØŒzÔ Ð r$   r4   ©r   )r»   r¼   r½   r¾   r#   r‘   rÄ  r®   rÈ  rb   rp  r¡   r‡   rÀ  rÔ  r×  rÙ  rÜ  rÞ  r~   ÚpropertyrÆ  r¿   r   rÀ   rÁ   r$   r"   r  r  ƒ  sQ  € € € € € Ø(Ð(ðð ð ð ð1ð 1ð 1ð 1ð2ð 2ð 2ð 2ð5ð 5ð 5ð 5ð	ð 	ð 	ð 	ðð ð ðð ð ð&ð &ð &ð &ðð ð ðð ð ðð ð ðð ð ð%ð %ð %ð%ð %ð %ð%ð %ð %ð"ð "ð "ð ð!ð !ñ „Xð!ð $˜ LÑ1Ô1ÐÐÐr$   r  c                   ó4   — e Zd ZdZd	d„Zd„ Zd
d„Zd„ Zd„ ZdS )rž  z&A read-only wrapper of part of a file.Nc                 óZ   — t                                | ||¦  «         || _        || _        dS )zInitialize a _PartialFile.N)r  r#   Ú_startÚ_stop)r   r  r|  r}  s       r"   r#   z_PartialFile.__init__ë  s,   € å×Ò˜D ! UÑ+Ô+Ð+ØˆŒØˆŒ
ˆ
ˆ
r$   c                 óF   — t                                | ¦  «        | j        z
  S )z*Return the position with respect to start.)r  rp  rå  rV   s    r"   rp  z_PartialFile.tellñ  s   € å�Š˜tÑ$Ô$ t¤{Ñ2Ð2r$   r   c                 ó�   — |dk    r| j         | _        d}n|dk    r| j        | _        d}t                               | ||¦  «         dS )z8Change position, possibly with respect to start or stop.r   r  rI  N)rå  r¼  ræ  r  r¡   rÍ  s      r"   r¡   z_PartialFile.seekõ  sN   € à�QŠ;ˆ;ØœˆDŒIØˆFˆFØ�qŠ[ˆ[Øœ
ˆDŒIØˆFÝ�Š˜˜f fÑ-Ô-Ð-Ð-Ð-r$   c                 óˆ   — | j         | j        z
  }|dk    rdS |�|dk     s||k    r|}t                               | ||¦  «        S )z;Read size bytes using read_method, honoring start and stop.r   r$   )ræ  r¼  r  rÀ  )r   rÂ  rÒ  Ú	remainings       r"   rÀ  z_PartialFile._readÿ  sR   € à”J ¤Ñ*ˆ	Ø˜Š>ˆ>Ø�3Øˆ<˜4 !š8˜8 t¨iÒ'7Ð'7ØˆDÝ×Ò  d¨KÑ8Ô8Ð8r$   c                 ó.   — t          | d¦  «        r| `d S d S )NrZ  )rw   rZ  rV   s    r"   r‡   z_PartialFile.close  s)   € õ �4˜Ñ!Ô!ð 	Ø�
�
�
ð	ð 	r$   )NNrá  )	r»   r¼   r½   r¾   r#   rp  r¡   rÀ  r‡   rÁ   r$   r"   rž  rž  è  so   € € € € € Ø0Ð0ðð ð ð ð3ð 3ð 3ð.ð .ð .ð .ð9ð 9ð 9ðð ð ð ð r$   rž  Tc                 óü  — d}	 t           r‚	 t          j        | t           j        t           j        z  ¦  «         nT# t          $ rG}|j        t
          j        t
          j        t
          j        fv rt          d| j
        z  ¦  «        ‚‚ d}~ww xY w|�r"	 t          | j
        dz   ¦  «        }|                     ¦   «          n8# t          $ r+}|j        t
          j        t
          j        fv rY d}~dS ‚ d}~ww xY w	 	 t          j        |j
        | j
        dz   ¦  «         d}t          j        |j
        ¦  «         n;# t           t"          f$ r' t          j        |j
        | j
        dz   ¦  «         d}Y nw xY wdS dS # t&          $ r1 t          j        |j
        ¦  «         t          d| j
        z  ¦  «        ‚w xY wdS #  t           rt          j        | t           j        ¦  «         |rt          j        | j
        dz   ¦  «         ‚ xY w)z(Lock file f using lockf and dot locking.Fzlockf: lock unavailable: %sNú.lockTzdot lock unavailable: %s)ÚfcntlÚlockfÚLOCK_EXÚLOCK_NBrä   rå   ÚEAGAINrX  rY  r   rÖ   rq  r‡   r   rà   rü  rá   râ   rã   rF  r2   ÚLOCK_UN)r  rn  Údotlock_donerì   Úpre_locks        r"   rh  rh    sD  € à€Lð%Ýð 	ðÝ”˜A�uœ}­u¬}Ñ<Ñ=Ô=Ð=Ð=øÝð ð ð Ø”7�uœ|­U¬\½5¼;ÐGÐGÐGÝ,Ð-JØ-.¬Vñ.4ñ 5ô 5ð 5ð øøøøðøøøð ñ 	1ðÝ,¨Q¬V°gÑ-=Ñ>Ô>�Ø—’Ñ Ô Ð Ð øÝð ð ð Ø”7�uœ|­U¬[Ð9Ð9Ð9Ø�F�F�F�F�Fàøøøøð	øøøð
1ð-Ý”G˜HœM¨1¬6°GÑ+;Ñ<Ô<Ð<Ø#'�Lõ
 ”I˜hœmÑ,Ô,Ð,Ð,øõ	 '­Ð8ð (ð (ð (Ý”I˜hœm¨Q¬V°gÑ-=Ñ>Ô>Ð>Ø#'�L�L�Lð(øøøð -Ð,ð !�Løõ #ð 1ð 1ð 1Ý”	˜(œ-Ñ(Ô(Ð(Ý(Ð)CØ)*¬ñ*0ñ 1ô 1ð 1ð1øøøð%	1ð 	1øð,Ýð 	*ÝŒK˜�5œ=Ñ)Ô)Ð)Øð 	(ÝŒI�a”f˜wÑ&Ñ'Ô'Ð'Øøøøs�   „F4 Œ,9 ¸F4 ¹
B
ÁABÂB
Â
F4 Â+B= Â<F4 Â=
C2ÃC-Ã&F4 Ã,C-Ã-C2Ã2F4 Ã7$D5 ÄE4 Ä55E-Å*E4 Å,E-Å-E4 Å4;F/Æ/F4 Æ4AG;c                 óÜ   — t           rt          j        | t           j        ¦  «         t          j                             | j        dz   ¦  «        rt          j        | j        dz   ¦  «         dS dS )z*Unlock file f using lockf and dot locking.rí  N)rî  rï  ró  r   r   rË   rÖ   r2   ©r  s    r"   rk  rk  9  sb   € åð &ÝŒ�A•u”}Ñ%Ô%Ð%Ý	„w‡~‚~�a”f˜wÑ&Ñ'Ô'ð $Ý
Œ	�!”&˜7Ñ"Ñ#Ô#Ð#Ð#Ð#ð$ð $r$   c                 óò   — t          j        | t           j        t           j        z  t           j        z  d¦  «        }	 t          | d¦  «        t          j        |¦  «         S # t          j        |¦  «         w xY w)zCCreate a file if it doesn't exist and open for reading and writing.r)  rV  )r   rû   r*  rÁ  ÚO_RDWRr‡   )r   Úfds     r"   rE  rE  @  sX   € å	Œ�•r”z¥B¤IÑ-µ´	Ñ9¸5Ñ	AÔ	A€BðÝ�D˜%Ñ Ô å
Œ�‰Œˆˆø�Œ�‰Œˆˆøøøs   ¼A  Á A6c           
      ó¶   — t          | ›dt          t          j        ¦   «         ¦  «        ›dt          j        ¦   «         ›dt          j        ¦   «         ›�¦  «        S )zBCreate a temp file based on path and open for reading and writing.r  )rE  rA  r8  r?  r@  r   rB  )r   s    r"   rq  rq  H  sR   € å¨d¨d¨dµC½¼	¹¼Ñ4DÔ4DÐ4DÐ4DÝ.4Ô.@Ñ.BÔ.BÐ.BÐ.BÝ.0¬i©k¬k¨kð;ñ <ô <ð <r$   c                 ó¨   — |                       ¦   «          t          t          d¦  «        r(t          j        |                      ¦   «         ¦  «         dS dS )z0Ensure changes to file f are physically on disk.ÚfsyncN)r~   rw   r   rý  Úfilenor÷  s    r"   ro  ro  N  sI   € à‡G‚G�I„I€IÝ�r�7ÑÔð Ý
Œ�—’‘”ÑÔÐÐÐðð r$   c                 óL   — t          | ¦  «         |                      ¦   «          dS )z:Close file f, ensuring all changes are physically on disk.N)ro  r‡   r÷  s    r"   r×   r×   T  s   € å��N„N€NØ‡G‚G�I„I€I€I€Ir$   c                   ó   — e Zd ZdZdS )r   z"Raised for module-specific errors.Nr•  rÁ   r$   r"   r   r   Z  s   € € € € € Ø,Ð,Ð,Ð,r$   r   c                   ó   — e Zd ZdZdS )r   z:The specified mailbox does not exist and won't be created.Nr•  rÁ   r$   r"   r   r   ]  s   € € € € € ØDÐDÐDÐDr$   r   c                   ó   — e Zd ZdZdS )r   z>The specified mailbox is not empty and deletion was requested.Nr•  rÁ   r$   r"   r   r   `  s   € € € € € ØHÐHÐHÐHr$   r   c                   ó   — e Zd ZdZdS )r   z)Another process caused an action to fail.Nr•  rÁ   r$   r"   r   r   c  ó   € € € € € Ø3Ð3Ð3Ð3r$   r   c                   ó   — e Zd ZdZdS )r   z)A file appears to have an invalid format.Nr•  rÁ   r$   r"   r   r   f  r  r$   r   )T)2r¾   r   r8  r�  r?  rå   rA  rª   rL   Úemail.messageÚemail.generatorrœ   rD   Útypesr   rî  ÚImportErrorÚ__all__r£   r‰   r   r   rT  r‘  r   r	   r   r   r+   r
   r   r¡  r   r   r   r   r  rž  rh  rk  rE  rq  ro  r×   Ú	Exceptionr   r   r   r   r   rÁ   r$   r"   ú<module>r     su  ðØ JÐ Jð 
€	€	€	Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð ðØ€L€L€L€LøØð ð ð Ø€E€E€EðøøøðAð Að A€ð
 Œ*×
Ò
˜GÑ
$Ô
$€ðf2ð f2ð f2ð f2ð f2ñ f2ô f2ð f2ðRsð sð sð sð sˆgñ sô sð sðl	ð ð ð ð ˜ñ ô ð ðF?ð ?ð ?ð ?ð ?Ð"ñ ?ô ?ð ?ðD1.ð 1.ð 1.ð 1.ð 1.ˆ9ñ 1.ô 1.ð 1.ðh*.ð *.ð *.ð *.ð *.ˆ9ñ *.ô *.ð *.ðZn*ð n*ð n*ð n*ð n*ˆñ n*ô n*ð n*ðb	vð vð vð vð vÐñ vô vð vðr"@ð "@ð "@ð "@ð "@ˆeŒmÔ#ñ "@ô "@ð "@ðJj+ð j+ð j+ð j+ð j+�Wñ j+ô j+ð j+ðZn+ð n+ð n+ð n+ð n+�wñ n+ô n+ð n+ðb1ð 1ð 1ð 1ð 1Ð"ñ 1ô 1ð 1ðE+ð E+ð E+ð E+ð E+�ñ E+ô E+ð E+ðP\+ð \+ð \+ð \+ð \+�7ñ \+ô \+ð \+ð~1ð 1ð 1ð 1ð 1Ð"ñ 1ô 1ð 1ðb2ð b2ð b2ð b2ð b2ñ b2ô b2ð b2ðJ$ð $ð $ð $ð $�:ñ $ô $ð $ðN(ð (ð (ð (ðT$ð $ð $ðð ð ð<ð <ð <ðð ð ðð ð ð-ð -ð -ð -ð -ˆIñ -ô -ð -ðEð Eð Eð Eð E˜ñ Eô Eð EðIð Ið Ið Ið I�Eñ Iô Ið Ið4ð 4ð 4ð 4ð 4˜ñ 4ô 4ð 4ð4ð 4ð 4ð 4ð 4�%ñ 4ô 4ð 4ð 4ð 4s   º? ¿A	ÁA	