
    ,hh>                       S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	rS SK
r
S SKrS SKJr   S SKr/ SQr\ R"                  R%                  S5      r " S S5      r " S S\5      r " S	 S
\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\R6                  R8                  5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S \5      r! " S! S"\5      r" " S# S$5      r# " S% S&\#5      r$S7S' jr%S( r&S) r'S* r(S+ r)S, r* " S- S.\+5      r, " S/ S0\,5      r- " S1 S2\,5      r. " S3 S4\,5      r/ " S5 S6\,5      r0g! \ a    Sr GNCf = f)8    N)GenericAlias)MailboxMaildirmboxMHBabylMMDFMessageMaildirMessagemboxMessage	MHMessageBabylMessageMMDFMessageErrorNoSuchMailboxErrorNotEmptyErrorExternalClashErrorFormatErrorasciic                       \ rS rSrS$S jrS rS rS rS rS r	S%S	 jr
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS%S jrS rS%S jrS rS rS rS r S  r!S!r"S&S" jr#\$" \%5      r&S#r'g)'r   "   Nc                     [         R                  R                  [         R                  R                  U5      5      U l        X l        g N)ospathabspath
expanduser_path_factoryselfr   factorycreates       0/opt/python-3.13.8/usr/lib/python3.13/mailbox.py__init__Mailbox.__init__%   s*    WW__RWW%7%7%=>
    c                     [        S5      eNz&Method must be implemented by subclassNotImplementedErrorr!   messages     r$   addMailbox.add*       !"JKKr'   c                     [        S5      er)   r*   r!   keys     r$   removeMailbox.remove.   r0   r'   c                 &    U R                  U5        g r   )r4   r2   s     r$   __delitem__Mailbox.__delitem__2   s    Cr'   c                 H     U R                  U5        g ! [         a     g f = fr   )r4   KeyErrorr2   s     r$   discardMailbox.discard5   s%    	KK 		s    
!!c                     [        S5      er)   r*   r!   r3   r-   s      r$   __setitem__Mailbox.__setitem__<   r0   r'   c                 J     U R                  U5      $ ! [         a    Us $ f = fr   )__getitem__r:   )r!   r3   defaults      r$   getMailbox.get@   s,    	##C(( 	N	s    ""c                     U R                   (       d  U R                  U5      $ [        R                  " U R	                  U5      5       nU R                  U5      sS S S 5        $ ! , (       d  f       g = fr   )r   get_message
contextlibclosingget_file)r!   r3   files      r$   rB   Mailbox.__getitem__G   sK    }}##C((##DMM#$674}}T* 877s   A##
A1c                     [        S5      er)   r*   r2   s     r$   rG   Mailbox.get_messageO   r0   r'   c                 h    [         R                  " U R                  U5      5      R                  5       $ r   emailmessage_from_bytes	get_bytes	as_stringr2   s     r$   
get_stringMailbox.get_stringS   s'    
 ''s(;<FFHHr'   c                     [        S5      er)   r*   r2   s     r$   rS   Mailbox.get_bytesZ   r0   r'   c                     [        S5      er)   r*   r2   s     r$   rJ   Mailbox.get_file^   r0   r'   c                     [        S5      er)   r*   r!   s    r$   iterkeysMailbox.iterkeysb   r0   r'   c                 4    [        U R                  5       5      $ r   )listr]   r\   s    r$   keysMailbox.keysf   s    DMMO$$r'   c              #   n   #    U R                  5        H  n X   nUv   M     g ! [         a     M  f = f7fr   r]   r:   r!   r3   values      r$   
itervaluesMailbox.itervaluesj   s;     ==?C	 K #  s   5$	5
2525c                 "    U R                  5       $ r   )rg   r\   s    r$   __iter__Mailbox.__iter__s   s      r'   c                 4    [        U R                  5       5      $ r   )r`   rg   r\   s    r$   valuesMailbox.valuesv   s    DOO%&&r'   c              #   p   #    U R                  5        H  n X   nX4v   M     g ! [         a     M  f = f7fr   rd   re   s      r$   	iteritemsMailbox.iteritemsz   s>     ==?C	 , #  s   6%
6
3636c                 4    [        U R                  5       5      $ r   )r`   rp   r\   s    r$   itemsMailbox.items   s    DNN$%%r'   c                     [        S5      er)   r*   r2   s     r$   __contains__Mailbox.__contains__   r0   r'   c                     [        S5      er)   r*   r\   s    r$   __len__Mailbox.__len__   r0   r'   c                 T    U R                  5        H  nU R                  U5        M     g r   )ra   r;   r2   s     r$   clearMailbox.clear   s    99;CLL r'   c                 V     X   nU R                  U5        U$ ! [          a    Us $ f = fr   )r:   r;   )r!   r3   rC   results       r$   popMailbox.pop   s7    	YF 	S  	N	s    ((c                 j    U R                  5        H  nXR                  U5      4s  $    [        S5      e)NzNo messages in mailbox)r]   r   r:   r2   s     r$   popitemMailbox.popitem   s1    ==?C#'' # 344r'   c                     [        US5      (       a  UR                  5       nO$[        US5      (       a  UR                  5       nOUnSnU H
  u  pE XPU'   M     U(       a  [        S5      eg ! [         a    Sn M0  f = f)Nrp   rs   FTzNo message with key(s))hasattrrp   rs   r:   )r!   argsourcebad_keyr3   r-   s         r$   updateMailbox.update   s    3$$]]_FS'""YY[FF"LC#S	 #
 344   s   A,,A<;A<c                     [        S5      er)   r*   r\   s    r$   flushMailbox.flush   r0   r'   c                     [        S5      er)   r*   r\   s    r$   lockMailbox.lock   r0   r'   c                     [        S5      er)   r*   r\   s    r$   unlockMailbox.unlock   r0   r'   c                     [        S5      er)   r*   r\   s    r$   closeMailbox.close   r0   r'   c                 X     UR                  S5      $ ! [         a    [        S5      ef = f)Nr   z?String input must be ASCII-only; use bytes or a Message instead)encodeUnicodeError
ValueErrorr,   s     r$   _string_to_bytesMailbox._string_to_bytes   s7    	2>>'** 	2 1 2 2	2s    )Fc                    [        U[        R                  R                  5      (       a  [        R
                  " 5       n[        R                  R                  XCS5      nUR                  U5        UR                  S5        UR                  5       nUR                  S[        5      nUR                  U5        U R                  (       a1  UR                  [        5      (       d  UR                  [        5        g g g [        U[         ["        [        R$                  45      (       a  [        U[        R$                  5      (       a,  [&        R(                  " S[*        S5        UR-                  5       n[        U[         5      (       a  U R/                  U5      nU(       a  UR                  SS5      nUR                  S[        5      nUR                  U5        U R                  (       a1  UR                  [        5      (       d  UR                  [        5        g g g [1        US5      (       Ga,  [1        US5      (       a(  [&        R(                  " S	[*        S5        UR2                  nS n UR5                  5       nUR                  S
5      (       a	  US S S-   nOUR                  S5      (       a  US S S-   nU(       d  OPU(       a  UR7                  S5      (       a  SUSS  -   nUR                  S[        5      nUR                  U5        UnM  U R                  (       a9  U(       a1  UR                  [        5      (       d  UR                  [        5        g g g g [9        S[;        U5      -  5      e)Nr      
8Use of StringIO input is deprecated, use BytesIO instead   s   
From s   
>From readbufferDUse of text mode files is deprecated, use a binary mode file instead   
      From s   >From    Invalid message type: %s)
isinstancerQ   r-   r
   ioBytesIO	generatorBytesGeneratorflattenseekr   replacelinesepwrite_append_newlineendswithstrbytesStringIOwarningswarnDeprecationWarninggetvaluer   r   r   readline
startswith	TypeErrortype)	r!   r-   targetmangle_from_r   gendatalastlinelines	            r$   _dump_messageMailbox._dump_message   s    gu}}4455ZZ\F//00qICKK KKN;;=D<<w/DLL##DMM',B,BW% -C# #ubkk!:;;'2;;// *+=qB!**,'3''//8!//*kBooeW5GLL!##G,<,<W,E,EW% -F# Wf%%w)) 56H!M!..H'')==))9u,D]]5))9u,DDOOH$=$=$tABx/D||E73T"  ##9J9J79S9SW% :T# 6gFGGr'   )r   r   NTr   F)(__name__
__module____qualname____firstlineno__r%   r.   r4   r7   r;   r?   rD   rB   rG   rU   rS   rJ   r]   ra   rg   rj   rm   rp   rs   rv   ry   r|   r   r   r   r   r   r   r   r   r   r   classmethodr   __class_getitem____static_attributes__ r'   r$   r   r   "   s     
LLL+LILLL%!'&LL
55"LLLL2 O4Hl $L1r'   r   c                       \ rS rSrSrS'S jrS rS rS rS r	S	 r
S
 rS rS rS\4S jrS rS\4S jrS\4S jrS\4S jrS rS rS rS rS rS rS rS rS rS rS rS  rS!r S" r!S# r"S$ r#S% r$S&r%g)(r   i  :Nc                    [         R                  XX#5        [        R                  R	                  U R
                  S5      [        R                  R	                  U R
                  S5      [        R                  R	                  U R
                  S5      S.U l        [        R                  R                  U R
                  5      (       dv  U(       aZ  [        R                  " U R
                  S5        U R                  R                  5        H  n[        R                  " US5        M     O[        U R
                  5      e0 U l        SSS.U l        SU l        SU l        g )	Ntmpnewcur)r   r   r     r   )r   r   g?)r   r%   r   r   joinr   _pathsexistsmkdirrm   r   _toc_toc_mtimes
_last_read_skewfactor)r!   dirnamer"   r#   r   s        r$   r%   Maildir.__init__  s    877<<

E277<<

E277<<

E2
 ww~~djj))U+ KK..0DHHT5) 1 )44	#$Q/r'   c                     U R                  5       n U R                  X5        [        U5        [        U[        5      (       a?  UR                  5       nU R                  UR                  5       -   nX@R                  :X  a  SnOSnSn[        R                  R                  UR                  5      R                  U R                  5      S   n[        R                  R!                  U R"                  X5U-   5      n[        U[        5      (       aX  [        R$                  " UR                  [        R                  R'                  UR                  5      UR)                  5       45          [        R*                  " UR                  U5        [        R
                  " UR                  5        U$ ! [         a2    UR                  5         [        R
                  " UR                  5        e f = f! [,        [.        4 a%    [        R0                  " UR                  U5         U$ f = f! [2         aR  n[        R
                  " UR                  5        UR4                  [4        R6                  :X  a  [9        SU-  5      ee S nAff = f)N r   r   z$Name clash with existing message: %s)_create_tmpr   BaseExceptionr   r   r4   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.   Maildir.add$  s   ##%	w1
 	Hg~..'')FZZ'"2"2"44F#FFww.44TZZ@Cww||DJJv>g~..HHX]]gg&&x}}5w7G7G7IJL
	)t, 		(--( G  	NNIIhmm$	0 #O4 /		(--. /  	IIhmm$ww%,,&()O+/*0 1 1 	sB   F* '!G)  H! *<G&)1HH! HH! !
I=+AI88I=c                     [         R                  " [         R                  R                  U R                  U R                  U5      5      5        g r   )r   r4   r   r   r   _lookupr2   s     r$   r4   Maildir.removeN  s*    
		"'',,tzz4<<+<=>r'   c                 T     U R                  U5        g ! [        [        4 a     g f = fr   )r4   r:   FileNotFoundErrorr2   s     r$   r;   Maildir.discardR  s+    	KK+, 		s    ''c                    U R                  U5      nU R                  U5      nU R                  U5      n[        U[        5      (       a  UnOUn[        R
                  R                  U5      nU R                  U;   a,  U R                  UR                  U R                  5      S   -   nOSnU R                  U5        [        R
                  R                  U R                  U5      n	[        R
                  R                  U R                  XqU-   5      n
[        U[        5      (       aD  [        R                  " U	[        R
                  R                  U	5      UR                  5       45        [        R                  " X5        g Nr   r   )r  r.   r   r   r   r   r   r   r   r;   r   r   r   r   r   r   )r!   r3   r-   old_subpathtemp_keytemp_subpathdominant_subpathr   r   tmp_pathnew_paths              r$   r?   Maildir.__setitem__Z  s   ll3'88G$||H-g~..+  +!12::))ZZ"2"8"8"DR"HHFFS77<<

L977<<

F&LAg~..HHXgg&&x0'2B2B2DEG
 			(%r'   c                    U R                  U5      n[        [        R                  R	                  U R
                  U5      S5       nU R                  (       a  U R                  U5      nO[        U5      nS S S 5        [        R                  R                  U5      u  pVWR                  U5        U R                  U;   a-  UR                  UR                  U R                  5      S   5        UR                  [        R                  R                  [        R                  R	                  U R
                  U5      5      5        U$ ! , (       d  f       N= f)Nrbr   )r  openr   r   r   r   r   r   r   
set_subdirr   set_infoset_dategetmtime)r!   r3   subpathfmsgr   r   s          r$   rG   Maildir.get_messageu  s    ,,s#"'',,tzz73T:a}}mmA&$Q'	 ;
 ww}}W-v::LLDJJ/34RWW%%bggll4::w&GHI
 ;:s   /E
Ec                    [        [        R                  R                  U R                  U R                  U5      5      S5       nUR                  5       R                  [        S5      sS S S 5        $ ! , (       d  f       g = f)Nr  r   )	r  r   r   r   r   r  r   r   r   r!   r3   r  s      r$   rS   Maildir.get_bytes  sM    "'',,tzz4<<+<=tD668##GU3 EDDs   $A22
B c                     [        [        R                  R                  U R                  U R                  U5      5      S5      n[        U5      $ )Nr  )r  r   r   r   r   r  
_ProxyFiler  s      r$   rJ   Maildir.get_file  s4    djj$,,s*;<dC!}r'   c                     U R                  U5      nU R                  U;   a  UR                  U R                  5      S   $ gr	  )r  r   r   )r!   r3   r  s      r$   r   Maildir.get_info  s7    ,,s#:: ==,R00r'   infoc                    [        U[        5      (       d  [        S[        U5       35      eU R	                  U5      nUR                  U R                  5      S   nU(       a  X@R                  U-   -  nXC:X  a  g [        R                  R                  U R                  U5      n[        R                  R                  U R                  U5      n[        R                  " XV5        X@R                  U'   g )Nzinfo must be a string: r   )r   r   r   r   r  r   r   r   r   r   r   r   r   )r!   r3   r$  r
  new_subpathold_pathr  s          r$   r  Maildir.set_info  s    $$$5d4j\BCCll3'!''

3A6::,,K%77<<

K877<<

K8
		(%$		#r'   c                 \    U R                  U5      nUR                  S5      (       a  USS  $ gN2,   r   )r   r   )r!   r3   r$  s      r$   	get_flagsMaildir.get_flags  s-    }}S!??4  8Or'   flagsc                     [        U[        5      (       d  [        S[        U5       35      eU R	                  USSR                  [        [        U5      5      5      -   5        g )Nzflags must be a string: r+  r   )r   r   r   r   r  r   sortedset)r!   r3   r/  s      r$   	set_flagsMaildir.set_flags  sK    %%%6tE{mDEEc4"''&U*<"==>r'   flagc           
          [        U[        5      (       d  [        S[        U5       35      eU R	                  USR                  [        U R                  U5      5      [        U5      -  5      5        g Nzflag must be a string: r   )r   r   r   r   r3  r   r2  r-  r!   r3   r5  s      r$   add_flagMaildir.add_flag  sT    $$$5d4j\BCCsBGGCs(;$<s4y$HIJr'   c           
         [        U[        5      (       d  [        S[        U5       35      eU R	                  U5      (       aF  U R                  USR                  [        U R	                  U5      5      [        U5      -
  5      5        g g r7  )r   r   r   r   r-  r3  r   r2  r8  s      r$   remove_flagMaildir.remove_flag  sh    $$$5d4j\BCC>>#NN3DNN3,?(@3t9(L MN r'   c              #      #    U R                  5         U R                   H  n U R                  U5        Uv   M     g ! [         a     M+  f = f7fr   )_refreshr   r  r:   r2   s     r$   r]   Maildir.iterkeys  sG     99CS! I   s%    A=	A
AA
AAc                 >    U R                  5         XR                  ;   $ r   )r?  r   r2   s     r$   rv   Maildir.__contains__  s    iir'   c                 L    U R                  5         [        U R                  5      $ r   )r?  lenr   r\   s    r$   ry   Maildir.__len__  s    499~r'   c                     g r   r   r\   s    r$   r   Maildir.flush  s     	r'   c                     g r   r   r\   s    r$   r   Maildir.lock      r'   c                     g r   r   r\   s    r$   r   Maildir.unlock  rJ  r'   c                     g r   r   r\   s    r$   r   Maildir.close  rJ  r'   c                 T   / n[         R                  " U R                  5       H  n[        U5      S:  d  M  US   S:X  d  M  [         R                  R                  [         R                  R                  U R                  U5      5      (       d  Mm  UR                  USS  5        M     U$ )N   r   .)r   listdirr   rD  r   isdirr   appendr!   r   entrys      r$   list_foldersMaildir.list_folders  sr    ZZ

+E5zA~%(c/ww}}RWW\\$**e<==eABi( , r'   c                     [        [        R                  R                  U R                  SU-   5      U R
                  SS9$ )NrQ  Fr"   r#   )r   r   r   r   r   r   r!   folders     r$   
get_folderMaildir.get_folder  s2    rww||DJJf=#}}#% 	%r'   c                    [         R                  R                  U R                  SU-   5      n[	        X R
                  S9n[         R                  R                  US5      n[         R                  R                  U5      (       dK  [         R                  " [         R                  " U[         R                  [         R                  -  S5      5        U$ )NrQ  r"   maildirfolder  )r   r   r   r   r   r   r   r   r  O_CREATO_WRONLY)r!   r\  r   r   maildirfolder_paths        r$   
add_folderMaildir.add_folder  s    ww||DJJf5}}5WW\\$@ww~~011HHRWW/bkk1I r'   c                    [         R                  R                  U R                  SU-   5      n[         R                  " [         R                  R                  US5      5      [         R                  " [         R                  R                  US5      5      -    H)  n[        U5      S:  d  US   S:w  d  M  [        SU-  5      e   [         R                  " U5       Ho  nUS:w  d  M  US:w  d  M  US:w  d  M  [         R                  R                  [         R                  R                  X#5      5      (       d  M^  [        SU< S	U< 35      e   [         R                  " US
S9 H~  u  pEnU H6  n[         R                  " [         R                  R                  XC5      5        M8     U H6  n[         R                  " [         R                  R                  XC5      5        M8     M     [         R                  " U5        g )NrQ  r   r   rP  r   zFolder contains message(s): %sr   zFolder contains subdirectory 'z': F)topdown)r   r   r   r   rR  rD  r   rS  walkr4   rmdir)r!   r\  r   rV  rootdirsfiless          r$   remove_folderMaildir.remove_folder  sT   ww||DJJf5ZZT5 9:ZZT5 9:;E5zA~qS#$Dv$MNN; ZZ%E~%5.Ue^ww}}RWW\\$677#%+U%4 5 5 &
 "$u!=D		"'',,t34 d23  ">
 	r'   c                    [         R                   " 5       n[        R                  " [        R                  R	                  U R
                  S5      5       Hl  n[        R                  R	                  U R
                  SU5      nU[        R                  R                  U5      -
  S:  d  MV  [        R                  " U5        Mn     g )Nr   i@ )timer   rR  r   r   r   r   r4   )r!   nowrV  r   s       r$   cleanMaildir.clean  su    iikZZTZZ ?@E77<<

E59DRWW%%d++f4		$ Ar'   rP  c           	      ~   [         R                   " 5       n[        R                  " 5       nSU;   a  UR                  SS5      nSU;   a  UR                  SS5      n[	        U5      < S[	        US-  S-  5      < S[
        R                  " 5       < S	[        R                  < S
U< 3	n[
        R                  R                  U R                  SU5      n [
        R                  " U5        [!        SU-  5      e! [         a9    [        =R                  S-  sl         [        U5      s $ ! [         a      NLf = ff = f)N/z\057r   z\072z.MrP  g    .APQrQ  r   z&Name clash prevented file creation: %s)rr  socketgethostnamer   intr   getpidr   _countr   r   r   statr  _create_carefullyFileExistsErrorr   )r!   rs  hostnamer   r   s        r$   r   Maildir._create_tmp  s    iik%%'(?''W5H(?''W5H$'Hc#'C-.@"))+$+NNH>ww||DJJt4	GGDM !!I!%"& ' 	' ! 	NNaN(.." 		s0   C9 9#D<
D*'D<*
D84D<7D88D<c                 N   [         R                   " 5       U R                  -
  SU R                  -   :  ak  SnU R                   HQ  n[        R
                  R                  U R                  U   5      nX0R                  U   :  a  SnX0R                  U'   MS     U(       d  g 0 U l        U R                   H  nU R                  U   n[        R                  " U5       H  nUR                  S5      (       a  M  [        R
                  R                  XE5      n[        R
                  R                  U5      (       a  M`  UR                  U R                  5      S   n[        R
                  R                  X%5      U R                  U'   M     M     [         R                   " 5       U l        g )Nr,  FTrQ  r   )rr  r   r   r   r   r   r  r   r   rR  r   r   rS  r   r   )r!   refreshr   mtimer   rV  pr   s           r$   r?  Maildir._refresh4  s8    99;(1t/?/?+??G**((V)<=++F33"G+0  (	 +
 	&&F;;v&DD)##C((GGLL-77==##{{4::.q1"$'',,v"=		$ * ' ))+r'   c                 p    [         R                  R                  [         R                  R                  U R                  U R
                  U   5      5      (       a  U R
                  U   $  U R                  5          U R
                  U   $ ! [         a     N,f = f! [         a    [        SU-  5      S ef = fNNo message with key: %s)r   r   r   r   r   r   r:   r?  r2   s     r$   r  Maildir._lookupZ  s    	ww~~bggll4::tyy~FGGyy~% H 		F99S>!	  		
  	F4s:;E	Fs   A'B <B 
BBB5c                     [        U S5      (       d  U R                  5       U l          U [        U R                  5         $ ! [         a     g [
         a     M2  f = f)N_onetime_keys)r   r]   r  nextStopIterationr:   r\   s    r$   r  Maildir.nexth  sX    t_--!%DD!3!3455   s   A 
A	AA)r   r  r   r   r   r   r   )&r   r   r   r   r   r%   r.   r4   r;   r?   rG   rS   rJ   r   r   r  r-  r3  r9  r<  r]   rv   ry   r   r   r   r   rW  r]  rf  ro  rt  r~  r   r?  r  r  r   r   r'   r$   r   r     s     E((T?&64

%# %?C ?K# KOS O 

%&  F'0$&LF
r'   r   c                   |    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rSS jrS rSrg)_singlefileMailboxiu  Nc                     [         R                  XX#5         [        U R                  S5      nX@l
        S U l        SU l        SU l        SU l        SU l        S U l        g ! [         a  nUR
                  [
        R                  :X  a7  U(       a  [        U R                  S5      n S nAN{[        U R                  5      eUR
                  [
        R                  [
        R                  4;   a  [        U R                  S5      n S nANe S nAff = f)Nrb+zwb+r  r   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%   _singlefileMailbox.__init__x  s    W5	TZZ'A 
	" !  		ww%,,&TZZ/A,TZZ88U\\5;;77T*		s$   A 
D);D)ADDDc                     U R                  5         U R                  U5      U R                  U R                  '   U =R                  S-  sl        SU l        U R                  S-
  $ )NrP  T)r  _append_messager   r  r  r,   s     r$   r.   _singlefileMailbox.add  sO    $($8$8$A		$..!! "~~!!r'   c                 N    U R                  U5        U R                  U	 SU l        g r   )r  r   r  r2   s     r$   r4   _singlefileMailbox.remove  s     SIIcNr'   c                 p    U R                  U5        U R                  U5      U R                  U'   SU l        g r   )r  r  r   r  r>   s      r$   r?   _singlefileMailbox.__setitem__  s-    S--g6		#r'   c              #   t   #    U R                  5         U R                  R                  5        S h  vN   g  N7fr   )r  r   ra   r\   s    r$   r]   _singlefileMailbox.iterkeys  s"     99>>###s   .868c                 >    U R                  5         XR                  ;   $ r   )r  r   r2   s     r$   rv   _singlefileMailbox.__contains__  s    iir'   c                 L    U R                  5         [        U R                  5      $ r   )r  rD  r   r\   s    r$   ry   _singlefileMailbox.__len__  s    499~r'   c                 `    U R                   (       d  [        U R                  5        SU l         g g r   )r  
_lock_filer  r\   s    r$   r   _singlefileMailbox.lock  s!    ||tzz"DL r'   c                 `    U R                   (       a  [        U R                  5        SU l         g g NF)r  _unlock_filer  r\   s    r$   r   _singlefileMailbox.unlock  s!    <<$ DL r'   c           	      F   U R                   (       d.  U R                  (       a  [        U R                  5        SU l        g U R                  R	                  SS5        U R                  R                  5       nXR                  :w  a  [        SU R                  U4-  5      e[        U R                  5      n 0 nU R                  U5        [        U R                  R                  5       5       H  nU R                  U   u  pVU R                  R	                  U5        U R                  U5        UR                  5       n U R                  R                  [!        SX`R                  R                  5       -
  5      5      nU(       d  OUR#                  U5        MZ  XrR                  5       4X4'   U R%                  U5        M     UR                  5       U l        [/        U5        U R                  R'                  5         [(        R0                  " U R                  5      n	[(        R2                  " UR,                  U	R4                  5         [(        R6                  " UR,                  U	R8                  U	R:                  5         [(        R@                  " UR,                  U R                  5        [E        U R                  S5      U l        X0l        SU l         SU l        U RF                  (       a  [I        U R                  SS9  g g !   UR'                  5         [(        R*                  " UR,                  5        e = f! [<        [>        4 a     Nf = f! [B         aN    [(        R*                  " U R                  5        [(        R@                  " UR,                  U R                  5         Nf = f)NFr   r,  z4Size of mailbox file changed (expected %i, found %i)   r  )dotlock)%r  r  _sync_flushr  r   tellr  r   _create_temporaryr   _pre_mailbox_hookr1  r   ra   _pre_message_hookr   minr   _post_message_hookr   r   r4   r   r   r  chmodst_modechownst_uidst_gidr   r   r   r  r  r  r  )
r!   cur_lennew_filenew_tocr3   startstop	new_startr   r$  s
             r$   r   _singlefileMailbox.flush  s   }}!! DJJ'%*" 	

1**//#'''$ &?&*&7&7%A&B C C %TZZ0	G""8,diinn./"iin

&&&x0$MMO	!ZZ__S15

8I1I.K LF!NN6*  !*==?;''1 0 !)D
 	H

wwtzz"
-	HHX]]DKK=	1IIhmmTZZ0 $**e,
	"<<tzz51 /	NNIIhmm$ ( 		  	1IIdjj!IIhmmTZZ0	1s2   5DK< 6L2 ;+M <3L/2MMAN N c                     g r   r   r!   r  s     r$   r  $_singlefileMailbox._pre_mailbox_hook  rJ  r'   c                     g r   r   r  s     r$   r  $_singlefileMailbox._pre_message_hook  rJ  r'   c                     g r   r   r  s     r$   r  %_singlefileMailbox._post_message_hook  rJ  r'   c                     U R                  5          U R                  (       a  U R                  5         U R                  R	                  5         g ! U R                  R	                  5         f = f!  U R                  (       a  U R                  5         U R                  R	                  5         f ! U R                  R	                  5         f = f= fr   )r   r  r   r  r   r\   s    r$   r   _singlefileMailbox.close  s|    	#JJL#<<KKM

  "

  "	#<<KKM

  "

  "s.   A. !A A+.C0!B,C,CCc                     U R                   c  U R                  5         Ub   U R                   U   $ g ! [         a    [        SU-  5      S ef = fr  )r   _generate_tocr:   r2   s     r$   r  _singlefileMailbox._lookup  s\    99 ?Jyy~%   J83>?TIJs	   2 Ac                 R   U R                   R                  SS5        U R                   R                  5       n[        U R                  5      S:X  a,  U R
                  (       d  U R                  U R                   5         U R                  U R                   5        U R                  U5      nU R                  U R                   5        U R                   R                  5         U R                   R                  5       U l        U$ ! [         a    U R                   R                  U5        e f = f)Nr   r,  )r  r   r  rD  r   r  r  r  _install_messager  r   truncater   r  )r!   r-   beforeoffsetss       r$   r  "_singlefileMailbox._append_message%  s    

1"tyy>Qt}}
 ""4::.	""4::.++G4G##DJJ/ 	

 JJOO-  	JJ'	s   =AC? ?'D&)r  r  r  r  r  r  r   r   r   )r   r   r   r   r%   r.   r4   r?   r]   rv   ry   r   r   r   r  r  r  r   r  r  r   r   r'   r$   r  r  u  sU    !."$
 

 !B2H	#Jr'   r  c                   B    \ rS rSrSrS rS
S jrS
S jrS
S jrS r	Sr
g	)	_mboxMMDFi<  Tc                    U R                  U5      u  p#U R                  R                  U5        U R                  R                  5       R	                  [
        S5      R                  S5      nU R                  R                  X0R                  R                  5       -
  5      nU R                  UR	                  [
        S5      5      nUR                  U5        UR                  USS  5        U$ )Nr'   r   r   r   )r  r  r   r   r   r   decoder   r  _message_factoryset_unixfromset_from)r!   r3   r  r  	from_linestringr  s          r$   rG   _mboxMMDF.get_messageA  s    ll3'

JJ'')11'3?FFwO	

(9!9:##FNN7E$BC#Yqr]#
r'   c                 f    [         R                  " U R                  X5      5      R                  US9$ )N)unixfromrP   )r!   r3   from_s      r$   rU   _mboxMMDF.get_stringL  s.    ''NN3&((1	5	(A	Br'   c                 6   U R                  U5      u  p4U R                  R                  U5        U(       d  U R                  R                  5         U R                  R	                  X@R                  R                  5       -
  5      nUR                  [        S5      $ Nr   )r  r  r   r   r   r  r   r   )r!   r3   r  r  r  r  s         r$   rS   _mboxMMDF.get_bytesQ  sf    ll3'

JJ!

(9!9:~~gu--r'   c                     U R                  U5      u  p4U R                  R                  U5        U(       d  U R                  R                  5         [	        U R                  U R                  R                  5       U5      $ r   )r  r  r   r   _PartialFiler  )r!   r3   r  r  r  s        r$   rJ   _mboxMMDF.get_fileZ  sS    ll3'

JJ!DJJ

(94@@r'   c                    S n[        U[        5      (       a  U R                  U5      n[        U[        5      (       a?  UR	                  S5      (       a)  UR                  S5      nUS:w  a  US U nXS-   S  nOUnSnO[        U[        5      (       a%  UR                  5       R                  S5      nSU-   nOM[        U[        R                  R                  5      (       a$  UR                  5       nUb  UR                  S5      nUc:  S[        R                  " [        R                  " 5       5      R                  5       -   nU R                   R#                  5       nU R                   R%                  U[&        -   5        U R)                  XR                   U R*                  5        U R                   R#                  5       nXV4$ )Nr   r   r   rP  r'   r   s   From MAILER-DAEMON )r   r   r   r   r   find_mboxMMDFMessageget_fromr   rQ   r-   r
   get_unixfromrr  asctimegmtimer  r  r   r   r   _mangle_from_)r!   r-   r  newlineauthorr  r  s          r$   r  _mboxMMDF._install_messageb  sg   	gs##++G4Ggu%%'*<*<X*F*Fll5)G"}#HW-	!A+,/#	!122%%'..w7F 6)I!6!677,,.I$%,,W5	.dkkm1L1S1S1UUI

!

W,-7JJ0B0BCzz }r'   r   Nr   )r   r   r   r   r  rG   rU   rS   rJ   r  r   r   r'   r$   r  r  <  s$     M	B
.Ar'   r  c                   2    \ rS rSrSrSrSS jrS rS rSr	g)	r   i  TNc                 F    [         U l        [        R                  XX#5        g r   )r   r  r  r%   r    s       r$   r%   mbox.__init__       +4w7r'   c                 .    UR                  [        5        g r   r   r   r  s     r$   r  mbox._post_message_hook  s    	r'   c                    / / p!SnU R                   R                  S5         U R                   R                  5       nU R                   R                  5       nUR	                  S5      (       af  [        U5      [        U5      :  a:  U(       a"  UR                  U[        [        5      -
  5        OUR                  U5        UR                  U5        SnOQU(       d;  U(       a"  UR                  U[        [        5      -
  5        OUR                  U5        OU[        :X  a  SnOSnGM  [        [        [        X5      5      5      U l        [        U R                  5      U l        U R                   R                  5       U l        g )NFr   Tr   )r  r   r  r   r   rD  rT  r   dict	enumeratezipr   r  r  )r!   startsstopslast_was_emptyline_posr   s         r$   r  mbox._generate_toc  s   B

zz(H::&&(Dx((u:F+%XG%<=
 X.h'!&!LLCL!89LL*!%!&/ 0 3v#567	TYY JJOO-r'   r  r  r  r   r   )
r   r   r   r   r  r   r%   r  r  r   r   r'   r$   r   r     s     M O8
.r'   r   c                   0    \ rS rSrSS jrS rS rS rSrg)	r	   i  Nc                 F    [         U l        [        R                  XX#5        g r   )r   r  r  r%   r    s       r$   r%   MMDF.__init__  r  r'   c                 4    UR                  S[        -   5        g N   r   r  s     r$   r  MMDF._pre_message_hook  s    	#g-.r'   c                 B    UR                  [        S-   [        -   5        g r  r   r  s     r$   r  MMDF._post_message_hook  s    	--78r'   c                    / / p!U R                   R                  S5        Sn UnU R                   R                  5       nU R                   R                  5       nUR	                  S[
        -   5      (       a  UR                  U5         UnU R                   R                  5       nU R                   R                  5       nUS[
        -   :X  a"  UR                  U[        [
        5      -
  5        O#U(       d  UR                  U5        O
M  U(       d  OM  [        [        [        X5      5      5      U l        [        U R                  5      U l        U R                   R                  SS5        U R                   R                  5       U l        g )Nr   r  r,  )r  r   r   r  r   r   rT  rD  r  r  r  r   r  r  )r!   r  r  next_posr	  r   s         r$   r  MMDF._generate_toc  s)   B

H::&&(Dzz(H2W<==h''H::..0D#zz0H2W<<XG%<=!X.  # $ 3v#567	TYY

1 JJOO-r'   r  r   )	r   r   r   r   r%   r  r  r  r   r   r'   r$   r	   r	     s    8
/9.r'   r	   c                       \ rS rSrSS jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS rS rSrg)r   i  Nc                    [         R                  XX#5        [        R                  R	                  U R
                  5      (       d  U(       a  [        R                  " U R
                  S5        [        R                  " [        R                  " [        R                  R                  U R
                  S5      [        R                  [        R                  -  [        R                  -  S5      5        O[        U R
                  5      eSU l        g )Nr   .mh_sequencesi  F)r   r%   r   r   r   r   r   r   r  r   rc  O_EXCLrd  r   r  r    s       r$   r%   MH.__init__  s    W5ww~~djj))U+djj/!J!#bii!7"++!EuN O )44r'   c                    U R                  5       n[        U5      S:X  a  SnO[        U5      S-   n[        R                  R                  U R                  [        U5      5      n[        U5      nSn U R                  (       a  [        U5          U R                  X5        [!        U["        5      (       a  U R%                  X5        U R                  (       a  [        U5        U(       d  [        U5        U$ ! [         aA    U R                  (       a  [        U5        [        U5        Sn[        R                  " U5        e f = f! U R                  (       a  [        U5        f f = f! U(       d  [        U5        f f = f)Nr   rP  FT)ra   rD  maxr   r   r   r   r   r  r  r  r   r   r  r   r4   r   r   _dump_sequences)r!   r-   ra   new_keyr  r  closeds          r$   r.   MH.add  s   yy{t9>G$i!mG77<<

CL9h'	||1$	&&w2 gy11((:<< OA! % ||$QN!FIIh' << O   A s7   2E' C7 !&E E' 7AEE E$$E' 'E<c                 N   [         R                  R                  U R                  [	        U5      5      n [        US5      nUR                  5         [         R                  " U5        g ! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee S nAff = fNr  r  )r   r   r   r   r   r  r   r4   r   r   r  r:   )r!   r3   r   r  r   s        r$   r4   	MH.remove  s{    ww||DJJC1		T5!A GGIIIdO  	ww%,,&83>??		s   A( (
B$2-BB$c                    [         R                  R                  U R                  [	        U5      5      n [        US5      n U R                  (       a  [        U5         [         R                  " [         R
                  " U[         R                  [         R                  -  5      5        U R                  X$5        [!        U["        5      (       a  U R%                  X!5        U R                  (       a  ['        U5        [)        U5        g ! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee S nAff = f! U R                  (       a  ['        U5        f f = f! [)        U5        f = fr$  )r   r   r   r   r   r  r   r   r  r:   r  r  r   rd  O_TRUNCr   r   r   r  r  r   )r!   r3   r-   r   r  r   s         r$   r?   MH.__setitem__  s    ww||DJJC1	T5!A	||1$r{{RZZ'?@A""7.gy11((6<< ON#  	ww%,,&83>??		 << O   Ns<   D E) BE  E) 
E-D??EE&&E) )E6c                 "    U R                   (       a>  [        [        R                  R	                  U R
                  [        U5      5      S5      nO>[        [        R                  R	                  U R
                  [        U5      5      S5      n U   U R                   (       a  [        U5         [        U5      nU R                   (       a  [        U5        S S S 5        U R                  5       R                  5        H  u  pVX;   d  M  WR!                  U5        M     W$ ! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee S nAff = f! U R                   (       a  [        U5        f f = f! , (       d  f       N= f)Nr  r  r  )r  r  r   r   r   r   r   r   r   r  r:   r  r   r  get_sequencesrs   add_sequence)r!   r3   r  r   r  r   key_lists          r$   rG   MH.get_message7  s   		||djj#c(;UCdjj#c(;TB ||1$l<< O  #00288:ND  & ; 
!  	ww%,,&83>??		 << O   QsB   AD =D F /E:F 
E)-EEE==F  
Fc                     U R                   (       a>  [        [        R                  R	                  U R
                  [        U5      5      S5      nO>[        [        R                  R	                  U R
                  [        U5      5      S5      n U   U R                   (       a  [        U5         UR                  5       R                  [        S5      U R                   (       a  [        U5        sS S S 5        $ ! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee S nAff = f! U R                   (       a  [        U5        f f = f! , (       d  f       g = f)Nr  r  r  r   )r  r  r   r   r   r   r   r   r   r  r:   r  r   r   r   r  r!   r3   r  r   s       r$   rS   MH.get_bytesP  s    		||djj#c(;UCdjj#c(;TB ||1$vvx''7<< O Q  	ww%,,&83>??		 << O   QsB   AC8 =C8 E/#D7E8
D4-D//D47EE
E'c                     [        [        R                  R                  U R                  [        U5      5      S5      n[        U5      $ ! [         a2  nUR                  [        R                  :X  a  [        SU-  5      ee S nAff = f)Nr  r  )r  r   r   r   r   r   r   r   r  r:   r   r/  s       r$   rJ   MH.get_filee  sl    	RWW\\$**c#h7>A !}  	ww%,,&83>??		s   =A
 

B-BBc                 t    [        [        S [        R                  " U R                  5       5       5      5      $ )Nc              3   f   #    U  H'  nUR                  5       (       d  M  [        U5      v   M)     g 7fr   )isdigitr|  ).0rV  s     r$   	<genexpr>MH.iterkeys.<locals>.<genexpr>r  s(      :3I%). &3u::3Is   11)iterr1  r   rR  r   r\   s    r$   r]   MH.iterkeysp  s/    F :2::djj3I : : ; 	;r'   c                     [         R                  R                  [         R                  R                  U R                  [        U5      5      5      $ r   )r   r   r   r   r   r   r2   s     r$   rv   MH.__contains__u  s,    ww~~bggll4::s3x@AAr'   c                 F    [        [        U R                  5       5      5      $ r   )rD  r`   r]   r\   s    r$   ry   
MH.__len__y  s    4())r'   c                    U(       a  SOSnU(       a  SS0O0 n[         R                  R                  U R                  S5      n  [	        USU-   40 UD6$ ! [
         a     Of = f [	        USU-   40 UD6$ ! [         a     Of = fMD  )Nr   bencodingASCIIr  zr+zx+)r   r   r   r   r  r  r  )r!   textmodekwargsr   s        r$   _open_mh_sequences_fileMH._open_mh_sequences_file}  s    rs*.*g&Bww||DJJ8D$+888$ D$+888"  s$   A 
A"!A"&A6 6
BBc                     U R                   (       d1  U R                  SS9U l        [        U R                  5        SU l         g g )NFrC  T)r  rF  r  r  r\   s    r$   r   MH.lock  s6    ||5555ADJtzz"DL r'   c                     U R                   (       a4  [        U R                  5        [        U R                  5        U ?SU l         g g r  )r  r  r  r   r\   s    r$   r   	MH.unlock  s2    <<$

#
 DL	 r'   c                     g r   r   r\   s    r$   r   MH.flush  rJ  r'   c                 H    U R                   (       a  U R                  5         g g r   )r  r   r\   s    r$   r   MH.close  s    <<KKM r'   c                    / n[         R                  " U R                  5       Hb  n[         R                  R	                  [         R                  R                  U R                  U5      5      (       d  MQ  UR                  U5        Md     U$ r   )r   rR  r   r   rS  r   rT  rU  s      r$   rW  MH.list_folders  sW    ZZ

+Eww}}RWW\\$**e<==e$ , r'   c                 |    [        [        R                  R                  U R                  U5      U R
                  SS9$ )NFrZ  r   r   r   r   r   r   r[  s     r$   r]  MH.get_folder  s-    "'',,tzz62--7 	7r'   c                 z    [        [        R                  R                  U R                  U5      U R
                  S9$ )Nr`  rT  r[  s     r$   rf  MH.add_folder  s+    "'',,tzz62--) 	)r'   c                 f   [         R                  R                  U R                  U5      n[         R                  " U5      nUS/:X  a5  [         R
                  " [         R                  R                  US5      5        OU/ :X  a  O[        SU R                  -  5      e[         R                  " U5        g )Nr  zFolder not empty: %s)r   r   r   r   rR  r4   r   rk  )r!   r\  r   entriess       r$   ro  MH.remove_folder  sx    ww||DJJ/**T"''IIbggll49:] 6 CDD
r'   c           
          0 n [        [        R                  R                  U R                  S5      SSS9nU   [        U R                  5       5      nU H  n UR                  S5      u  pV[        5       nUR                  5        Hk  nUR                  5       (       a  UR                  [        U5      5        M4  S UR                  S5       5       u  pUR                  [        XS-   5      5        Mm     [        U5       Vs/ s H  nX;   d  M
  UPM     snX'   [        X   5      S	:X  a  X	 M  M     S S S 5        U$ ! [
         a    Us $ f = fs  snf ! [          a    [#        S
UR%                  5       -  5      ef = f! , (       d  f       U$ = f)Nr  rrB  )rA  r   c              3   8   #    U  H  n[        U5      v   M     g 7fr   )r|  )r6  xs     r$   r7  #MH.get_sequences.<locals>.<genexpr>  s     *K?a3q66?s   -rP  r   z"Invalid sequence specification: %s)r  r   r   r   r   r  r2  ra   r   r5  r.   r|  r   ranger1  rD  r   r   rstrip)r!   resultsr  all_keysr   r   contentsra   specr  r  r3   s               r$   r*  MH.get_sequences  sa   	RWW\\$**o>gVA 499;'H5%)ZZ_ND5D ( 0<<>> HHSY/*K4::c?*KKE KKeAX(>? !1 5;4L %=LS,/O &)L %=GM7=)Q.#M /  & + ! 	N	%= " 5%&J&*kkm'4 5 55! Q& sM   3D= E>B)E	EEE-E>=EEE'E;;E>>
Fc                    U R                  SS9n [        R                  " [        R                  " UR                  [        R
                  [        R                  -  5      5        UR                  5        H  u  p4[        U5      S:X  a  M  UR                  US-   5        S nSn[        [        U5      5       H_  nUS-
  U:X  a  U(       d  SnUR                  S5        O6U(       a  SnUR                  U< SU< 35        OUR                  S	U-  5        UnMa     U(       a  UR                  [        U5      S
-   5        M  UR                  S
5        M     [        U5        g ! [        U5        f = f)NTrI  r   r   FrP  r`   z %s
)rF  r   r   r  r   rd  r'  rs   rD  r   r1  r2  r   r   )r!   	sequencesr  r   ra   prev
completingr3   s           r$   set_sequencesMH.set_sequences  s   ((d(3	HHRWWQVVR[[2::%=>?'oo/
t9>s
#"
!#d),CQw$))-JGGCL#%*
4 56,D - GGCI,-GGDM) 0, NKNs   EE! !E.c                     U R                  5       nSn/ nU R                  5        H  nUS-
  U:w  a  UR                  XBS-   45         [        R                  " [        R
                  R                  U R                  [        U5      5      [        R
                  R                  U R                  [        US-   5      5      5        [        R                  " [        R
                  R                  U R                  [        U5      5      5        US-  nM     US-   U l        [        U5      S:X  a  g UR                  5        H*  u  pVU H  u  pxXv;   d  M  XUR!                  U5      '   M!     M,     U R#                  U5        g ! [        [        4 a    [        R                  " [        R
                  R                  U R                  [        U5      5      [        R
                  R                  U R                  [        US-   5      5      5         GNf = f)Nr   rP  )r*  r]   rT  r   r   r   r   r   r   unlinkr   r   r   r  rD  rs   indexrn  )	r!   rk  rl  changesr3   r   r,  oldr   s	            r$   packMH.pack  s|   &&(	==?CQw$AX/BGGBGGLLSX>GGLLS]CE IIbggll4::s3x@AAID # w<1'oo/ND#?47X^^C01 $ 0 	9% '8 GIIbggll4::s3x@ ggll4::s4!8}EGGs   A<E==BHHc                 "   UR                  5       nU R                  5       nUR                  5        H5  u  pVXS;   a  UR                  U5        M  X&;   d  M$  XfR                  U5      	 M7     U H  nXt;  d  M
  U/XG'   M     U R	                  U5        g r   )r*  rs   rT  rr  rn  )r!   r-   r3   pending_sequencesall_sequencesr   r,  sequences           r$   r  MH._dump_sequences  s    #113**,+113ND($^^C01	 4
 *H,+.%' * 	=)r'   )r  r  r  r   )r   r   r   r   r%   r.   r4   r?   rG   rS   rJ   r]   rv   ry   rF  r   r   r   r   rW  r]  rf  ro  r*  rn  ru  r  r   r   r'   r$   r   r     sw    
 D02$*	;
B* !
7
)

8:&4*r'   r   c                   z    \ rS rSr\" 1 Sk5      rSS jrS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)r   i#  >   filededitedresentunseendeletedanswered	forwardedNc                 >    [         R                  XX#5        0 U l        g r   )r  r%   _labelsr    s       r$   r%   Babyl.__init__)  s    ##D@r'   c                     [         R                  X5      n[        U[        5      (       a  UR	                  5       U R
                  U'   U$ r   )r  r.   r   r   
get_labelsr  )r!   r-   r3   s      r$   r.   	Babyl.add.  s;     $$T3g|,, ' 2 2 4DLL
r'   c                 h    [         R                  X5        XR                  ;   a  U R                  U	 g g r   )r  r4   r  r2   s     r$   r4   Babyl.remove5  s+    !!$,,,S! r'   c                     [         R                  XU5        [        U[        5      (       a  UR	                  5       U R
                  U'   g g r   )r  r?   r   r   r  r  r>   s      r$   r?   Babyl.__setitem__;  s;    &&t':g|,, ' 2 2 4DLL -r'   c                    U R                  U5      u  p#U R                  R                  U5        U R                  R                  5         [        R
                  " 5       n U R                  R                  5       nUS[        -   :X  d  U(       d  O'UR                  UR                  [        S5      5        MV  [        R
                  " 5       n U R                  R                  5       nU[        :X  d  U(       d  O'UR                  UR                  [        S5      5        MS  X0R                  R                  5       -
  nU R                  R                  U5      nUR                  [        S5      n[        UR                  5       U-   5      n	U	R                  UR                  5       5        XR                  ;   a  U	R                  U R                  U   5        U	$ N   *** EOOH ***r   )r  r  r   r   r   r   r   r   r   r  r   r   r   set_visibler  
set_labels)
r!   r3   r  r  original_headersr   visible_headersnbodyr  s
             r$   rG   Babyl.get_messageA  sX   ll3'



::<::&&(D00""4<<#?@	 
 **,::&&(Dwd!!$,,w">?	  ::??$$zzq!||GU++446=>0023,,NN4<<,-
r'   c                    U R                  U5      u  p#U R                  R                  U5        U R                  R                  5         [        R
                  " 5       n U R                  R                  5       nUS[        -   :X  d  U(       d  O'UR                  UR                  [        S5      5        MV   U R                  R                  5       nU[        :X  d  U(       d  OM.  UR                  5       nX0R                  R                  5       -
  nU R                  R                  U5      nUR                  [        S5      nXh-   $ r  )r  r  r   r   r   r   r   r   r   r   r  r   )	r!   r3   r  r  r  r   headersr  r   s	            r$   rS   Babyl.get_bytes]  s    ll3'



::<::&&(D00""4<<#?@	 
 ::&&(Dwd  #++-::??$$zzq!||GU+~r'   c                 t    [         R                  " U R                  U5      R                  S[        5      5      $ r  )r   r   rS   r   r   r2   s     r$   rJ   Babyl.get_files  s'    zz$..-55eWEFFr'   c                     U R                  5         [        5       nU R                  R                  5        H  nUR	                  U5        M     UR                  U R                  5        [        U5      $ r   )r  r2  r  rm   r   difference_update_special_labelsr`   )r!   labels
label_lists      r$   r  Babyl.get_labelsw  sS    ,,--/JMM*% 0  !5!56F|r'   c                 f   / / p!U R                   R                  S5        Sn/ n UnU R                   R                  5       nU R                   R                  5       nUS[        -   :X  a  [        U5      [        U5      :  a!  UR                  U[        [        5      -
  5        UR                  U5        U R                   R                  5       SS  R                  S5       Vs/ s H*  nUR                  5       (       d  M  UR                  5       PM,     nnUR                  U5        OvUS:X  d  US[        -   :X  a:  [        U5      [        U5      :  a!  UR                  U[        [        5      -
  5        O)U(       d"  UR                  U[        [        5      -
  5        OGMy  [        [        [        X5      5      5      U l        [        [        U5      5      U l        [        U R                  5      U l        U R                   R                  SS5        U R                   R                  5       U l        g s  snf )Nr   s   rP     ,   r,  )r  r   r   r  r   rD  rT  r   stripr  r  r  r   r  r  r  )	r!   r  r  r  label_listsr	  r   labelr  s	            r$   r  Babyl._generate_toc  s   B

H::&&(Dzz(H{W,,u:F+LLCL!89h'+/::+>+>+@+D+J+J4+P:+P -2+0;;= (%++-+P  : ""6*DGg,=$=u:F+LLCL!89XG45# $ 3v#567	Ik23TYY

1 JJOO-:s   H.<H.c                     S[         -   nUS[         -   -  nU R                  5       nS U 5       nUSSR                  U5      -   [         -   -  nUS-  nUR                  U5        g )Ns   BABYL OPTIONS:s
   Version: 5c              3   @   #    U  H  oR                  5       v   M     g 7fr   )r   )r6  r  s     r$   r7  *Babyl._pre_mailbox_hook.<locals>.<genexpr>  s     5fU,,..fs   s   Labels:r  r  )r   r  r   r   )r!   r  babylr  s       r$   r  Babyl._pre_mailbox_hook  sc    !G+(("5f5dii//'99	r'   c                 4    UR                  S[        -   5        g )N   r   r  s     r$   r  Babyl._pre_message_hook  s    	'!"r'   c                 4    UR                  [        S-   5        g )Nr  r   r  s     r$   r  Babyl._post_message_hook  s    	'!"r'   c                    U R                   R                  5       n[        U[        5      (       Ga  / n/ nUR	                  5        H6  nXPR
                  ;   a  UR                  U5        M%  UR                  U5        M8     U R                   R                  S5        U H/  nU R                   R                  SUR                  5       -   5        M1     U R                   R                  S5        U H2  nU R                   R                  SUR                  5       -   S-   5        M4     U R                   R                  [        5        O"U R                   R                  S[        -   5        [        U[        R                  R                  5      (       Ga1  [        R                  " 5       n[        R                  R!                  USS5      nUR#                  U5        UR%                  S5         UR'                  5       nU R                   R                  UR)                  S
[        5      5        US
:X  d  U(       d  OMO  U R                   R                  S[        -   5        [        U[        5      (       a  [        R                  " 5       n	[        R                  R!                  U	SS5      n
U
R#                  UR+                  5       5         U	R'                  5       nU R                   R                  UR)                  S
[        5      5        US
:X  d  U(       d  OcMO  UR%                  S5         UR'                  5       nU R                   R                  UR)                  S
[        5      5        US
:X  d  U(       d  OMO   UR-                  S5      nU(       d  GOU R                   R                  UR)                  S
[        5      5        MK  [        U[.        [0        [        R2                  45      (       Ga  [        U[        R2                  5      (       a,  [4        R6                  " S[8        S5        UR;                  5       n[        U[0        5      (       a  U R=                  U5      nUR?                  S5      S-   nUS-
  S:w  a  U R                   R                  US U R)                  S
[        5      5        U R                   R                  S[        -   5        U R                   R                  US U R)                  S
[        5      5        U R                   R                  XS  R)                  S
[        5      5        GO6U R                   R                  S[        -   [        -   5        U R                   R                  UR)                  S
[        5      5        GO[A        US5      (       Ga  [A        US5      (       a(  [4        R6                  " S[8        S5        URB                  nUR                  5       nS	n UR'                  5       nURE                  S5      (       a	  US S S
-   nOURE                  S5      (       a  US S S
-   nU R                   R                  UR)                  S
[        5      5        US
:X  d  U(       d>  U(       a6  SnU R                   R                  S[        -   5        UR%                  U5        OOM   UR'                  5       nU(       d  OURE                  S5      (       a  US S [        -   nOEURE                  S5      (       a  US S [        -   nO"URE                  S
5      (       a  US S [        -   nU R                   R                  U5        M  [G        S[I        U5      -  5      eU R                   R                  5       nX/4$ )N   1s   , s   ,,    r  s   1,,Fr   Tr   r  r  r   r   s   

r,  r   r   r   r   r   r   r   r   )%r  r  r   r   r  r  rT  r   r   r   rQ   r-   r
   r   r   r   r   r   r   r   r   get_visibler   r   r   r   r   r   r   r   r   r  r   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  Babyl._install_message  s   

!g|,,NF ++-000"))%0MM%(	 .
 JJT"'

  !78 (JJU#

  !6!=>  JJW%JJVg-.gu}}4455**,K"__;;KPQRN""7+Q"++-

  eW!=>5=	 
 JJ_w67'<00ZZ\
 % > >z5RS T%%g&9&9&;<%..0DJJ$$T\\%%ABu}D	    #&//1DJJ$$T\\%%ABu}D	 
 $))$/

  w!?@	 
 %bkk!:;;'2;;// *+=qB!**,'3''//8 g.2JA~#

  *!5!=!=eW!MN

  7!:;

  *!5!=!=eW!MN

  !5!=!=eW!MN

  7!:W!DE

  !@AWj))w)) 56H!M!.."<<>LJ'')==))9u,D]]5))9u,D

  eW!=>5=!%*


((7)BC\2  '')==))9w.D]]5))9w.D]]5))9w.D

  &  6gFGGzz }r'   )r  r  r  r   r   )r   r   r   r   	frozensetr  r%   r.   r4   r?   rG   rS   rJ   r  r  r  r  r  r  r   r   r'   r$   r   r   #  sX       !B CO
"58,G.<##ir'   r   c                   *    \ rS rSrSS jrS rS rSrg)r
   i  Nc                 Z   [        U[        R                  R                  5      (       aM  U R	                  [
        R                  " U5      5        [        U[        5      (       a  UR                  U 5        g g [        U[        5      (       a&  U R	                  [        R                  " U5      5        g [        U[        5      (       a&  U R	                  [        R                  " U5      5        g [        U[        R                  5      (       a&  U R	                  [        R                  " U5      5        g [        US5      (       a&  U R	                  [        R                   " U5      5        g Uc*  [        R                  R                  R#                  U 5        g [%        S['        U5      -  5      e)Nr   r   )r   rQ   r-   r
   _become_messagecopydeepcopy_explain_tor   rR   r   message_from_stringr   TextIOWrappermessage_from_filer   message_from_binary_filer%   r   r   r,   s     r$   r%   Message.__init__  s    gu}}4455  w!78'7++##D) ,''  !9!9'!BC%%  !:!:7!CD!1!122  !8!8!ABWf%%  !?!?!HI_MM!!**406gFGGr'   c                     [        US/ 5      nUR                   H&  nX2;  d  M
  UR                  U   U R                  U'   M(     g )N_type_specific_attributes)getattr__dict__)r!   r-   type_specificr   s       r$   r  Message._become_message2  s@    )DbI$$D(&-&6&6t&<d# %r'   c                 D    [        U[        5      (       a  g [        S5      e)Nz Cannot convert to specified type)r   r
   r   r,   s     r$   r  Message._explain_to9  s    gw''>??r'   r   r   )r   r   r   r   r%   r  r  r   r   r'   r$   r
   r
     s    H&=@r'   r
   c                   h    \ rS rSr/ SQrSS jrS rS rS rS r	S	 r
S
 rS rS rS rS rS rSrg)r   iA  )_subdir_info_dateNc                 ~    SU l         SU l        [        R                  " 5       U l        [        R                  X5        g )Nr   r   )r  r  rr  r  r
   r%   r,   s     r$   r%   MaildirMessage.__init__F  s+    
YY[
'r'   c                     U R                   $ r   )r  r\   s    r$   r   MaildirMessage.get_subdirM  s    ||r'   c                 D    US:X  d  US:X  a  Xl         g [        SU-  5      e)Nr   r   z!subdir must be 'new' or 'cur': %s)r  r   )r!   r   s     r$   r  MaildirMessage.set_subdirQ  s%    U?fo!L@6IJJr'   c                 b    U R                   R                  S5      (       a  U R                   SS  $ gr*  )r  r   r\   s    r$   r-  MaildirMessage.get_flagsX  s*    ::  &&::ab>!r'   c                 H    SSR                  [        U5      5      -   U l        g )Nr+  r   )r   r1  r  )r!   r/  s     r$   r3  MaildirMessage.set_flags_  s    BGGF5M22
r'   c                     U R                  SR                  [        U R                  5       5      [        U5      -  5      5        g Nr   r3  r   r2  r-  r!   r5  s     r$   r9  MaildirMessage.add_flagc  ,    rwws4>>#34s4y@ABr'   c                     U R                  5       (       aD  U R                  SR                  [        U R                  5       5      [        U5      -
  5      5        g g r  )r-  r3  r   r2  r  s     r$   r<  MaildirMessage.remove_flagg  s>    >>NN2773t~~'7#83t9#DEF r'   c                     U R                   $ r   )r  r\   s    r$   r   MaildirMessage.get_datel      zzr'   c                 `     [        U5      U l        g ! [         a    [        SU-  5      S ef = f)Nzcan't convert to float: %s)floatr  r   r   )r!   dates     r$   r  MaildirMessage.set_datep  s7    	KtDJ 	K84?@dJ	Ks    -c                     U R                   $ r   )r  r\   s    r$   r   MaildirMessage.get_infow  r  r'   c                 h    [        U[        5      (       a  Xl        g [        S[	        U5      -  5      e)Nzinfo must be a string: %s)r   r   r  r   r   )r!   r$  s     r$   r  MaildirMessage.set_info{  s)    dC  J7$t*DEEr'   c                    [        U[        5      (       a^  UR                  U R                  5       5        UR	                  U R                  5       5        UR                  U R                  5       5        g [        U[        5      (       a  [        U R                  5       5      nSU;   a  UR                  S5        U R                  5       S:X  a  UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        UR                  S	[        R                  " U R                  5       5      5        g [        U[        5      (       a`  [        U R                  5       5      nSU;  a  UR                  S
5        SU;   a  UR                  S5        SU;   a  UR                  S5        g g [        U[         5      (       aw  [        U R                  5       5      nSU;  a  UR#                  S
5        SU;   a  UR#                  S5        SU;   a  UR#                  S5        SU;   a  UR#                  S5        g g [        U[$        5      (       a  g ['        S[)        U5      -  5      e)NSRr   OTDFAMAILER-DAEMONr  repliedflaggedr  r  rx  r  $Cannot convert to specified type: %s)r   r   r3  r-  r  r   r  r   r  r2  r9  r  rr  r  r   r+  r   	add_labelr
   r   r   )r!   r-   r/  s      r$   r  MaildirMessage._explain_to  s   g~..dnn./t01T]]_-!122()Ee|  % E)  %e|  %e|  %e|  %_dkk$--/.JK++()E%$$X.e|$$Y/e|$$Y/ ..()E%!!(+e|!!),e|!!*-e|!!+. ))B M* + +r'   )r  r  r  r   )r   r   r   r   r  r%   r   r  r-  r3  r9  r<  r   r  r   r  r  r   r   r'   r$   r   r   A  sK     !>(K3CG
KF)+r'   r   c                   R    \ rS rSrS/rSS jrS rSS jrS rS r	S	 r
S
 rS rSrg)r  i  _fromNc                    U R                  SS5        [        U[        R                  R                  5      (       a=  UR                  5       nUb*  UR                  S5      (       a  U R                  USS  5        [        R                  X5        g )Nr  TzFrom r   )r  r   rQ   r-   r
   r  r   r%   )r!   r-   r  s      r$   r%   _mboxMMDFMessage.__init__  sk    ot,gu}}4455++-H#(;(;G(D(Dhqrl+'r'   c                     U R                   $ r   r  r\   s    r$   r  _mboxMMDFMessage.get_from  r  r'   c                     Ub6  USL a  [         R                  " 5       nUS[         R                  " U5      -   -  nXl        g )NTri  )rr  r  r  r  )r!   r  time_s      r$   r  _mboxMMDFMessage.set_from  s7    }S4<<...E
r'   c                 L    U R                  SS5      U R                  SS5      -   $ )NStatusr   X-Status)rD   r\   s    r$   r-  _mboxMMDFMessage.get_flags  s#    xx"%R(@@@r'   c                    [        U5      nSu  p#S H  nXA;   d  M
  X$-  nUR                  U5        M!     S H  nXA;   d  M
  X4-  nUR                  U5        M!     USR                  [        U5      5      -  n U R	                  SU5         U R	                  SU5        g ! [
         a    U R                  SU5         N2f = f! [
         a    U R                  SU5         g f = f)N)r   r   )r  r  )r  r  r  r   r  r  )r2  r4   r   r1  replace_headerr:   
add_header)r!   r/  status_flagsxstatus_flagsr5  s        r$   r3  _mboxMMDFMessage.set_flags  s    E
&,#D}$T"  $D}%T" $ 	//	4,7	7
M:  	4OOHl3	4  	7OOJ6	7s$   8B C  B=<B= CCc                     U R                  SR                  [        U R                  5       5      [        U5      -  5      5        g r  r  r  s     r$   r9  _mboxMMDFMessage.add_flag  r  r'   c                     SU ;   d  SU ;   aD  U R                  SR                  [        U R                  5       5      [        U5      -
  5      5        g g )Nr  r  r   r  r  s     r$   r<  _mboxMMDFMessage.remove_flag  s@    tzT1NN2773t~~'7#83t9#DEF  2r'   c                 >   [        U[        5      (       a  [        U R                  5       5      nSU;   a  UR	                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        US		 US
	 SR                  U R                  5       R                  5       SS  5      n UR                  [        R                  " [        R                  " US5      5      5        g [        U[         5      (       a?  UR#                  U R                  5       5        UR%                  U R                  5       5        g [        U[&        5      (       ae  [        U R                  5       5      nSU;  a  UR)                  S5        SU;   a  UR)                  S5        SU;   a  UR)                  S5        US		 US
	 g [        U[*        5      (       ae  [        U R                  5       5      nSU;  a  UR-                  S5        SU;   a  UR-                  S5        SU;   a  UR-                  S5        US		 US
	 g [        U[.        5      (       a  g [1        S[3        U5      -  5      e! [        [        4 a     g f = f)Nr  r   r  r  r  r  r  r  statuszx-statusri  z%a %b %d %H:%M:%S %Yr  r  r   r  r  r  )r   r   r2  r-  r  r9  r   r  r   r  calendartimegmrr  strptimer   OverflowErrorr  r3  r  r   r+  r   r  r
   r   r   )r!   r-   r/  
maybe_dates       r$   r  _mboxMMDFMessage._explain_to  sH   g~..()Ee|""5)e|  %e|  %e|  %e|  %!
#$--/"7"7"9"#">?J  z6L2N "O P !122dnn./T]]_-++()E%$$X.e|$$Y/e|$$Y/!
#..()E%!!(+e|!!),e|!!*-!
#))B M* + +9 . s   :J	 	JJr	  r   )r   r   r   r   r  r%   r  r  r-  r3  r9  r<  r  r   r   r'   r$   r  r    s7     ")	(A7,CG
1+r'   r  c                       \ rS rSrSrg)r   i  r   Nr   r   r   r   r   r   r'   r$   r   r          r'   r   c                   B    \ rS rSrS/rSS jrS rS rS rS r	S	 r
S
rg)r   i#  
_sequencesNc                 <    / U l         [        R                  X5        g r   )r)  r
   r%   r,   s     r$   r%   MHMessage.__init__(  s    'r'   c                      U R                   S S  $ r   r)  r\   s    r$   r*  MHMessage.get_sequences-  s    q!!r'   c                 $    [        U5      U l        g r   )r`   r)  )r!   rk  s     r$   rn  MHMessage.set_sequences1  s    y/r'   c                     [        U[        5      (       a,  XR                  ;  a  U R                  R                  U5        g g [	        S[        U5      -  5      e)Nzsequence type must be str: %s)r   r   r)  rT  r   r   r!   rz  s     r$   r+  MHMessage.add_sequence5  sG    h$$.&&x0 / ;d8nLMMr'   c                 \     U R                   R                  U5        g ! [         a     g f = fr   )r)  r4   r   r2  s     r$   remove_sequenceMHMessage.remove_sequence=  s+    	OO""8, 		    
++c                    [        U[        5      (       a  [        U R                  5       5      nSU;   a  UR	                  S5        O"UR	                  S5        UR                  S5        SU;   a  UR                  S5        SU;   a  UR                  S5        g g [        U[        5      (       ar  [        U R                  5       5      nSU;  a  UR                  S5        OUR                  S	5        SU;   a  UR                  S5        SU;   a  UR                  S
5        g g [        U[        5      (       a)  U R                  5        H  nUR                  U5        M     g [        U[        5      (       aI  [        U R                  5       5      nSU;   a  UR                  S5        SU;   a  UR                  S5        g g [        U[        5      (       a  g [        S[        U5      -  5      e)Nr  r   r  r   r  r  r  ROr  r  r  r  )r   r   r2  r*  r  r9  r  r   r+  r   r  r
   r   r   )r!   r-   rk  rz  s       r$   r  MHMessage._explain_toD  s   g~..D..01I9$""5)""5)  %I%  %I%  % &!122D..01Iy(  &  %I%  %I%  % &++ ..0$$X. 1..D..01I9$!!(+I%!!*- &))B M* + +r'   r-  r   )r   r   r   r   r  r%   r*  rn  r+  r5  r  r   r   r'   r$   r   r   #  s+     ".(
"*N$+r'   r   c                   V    \ rS rSrSS/rSS jrS rS rS rS	 r	S
 r
S rS rS rSrg)r   ik  r  _visibleNc                 Z    / U l         [        5       U l        [        R                  X5        g r   )r  r
   r<  r%   r,   s     r$   r%   BabylMessage.__init__p  s     	'r'   c                      U R                   S S  $ r   )r  r\   s    r$   r  BabylMessage.get_labelsv  s    ||Ar'   c                 $    [        U5      U l        g r   )r`   r  )r!   r  s     r$   r  BabylMessage.set_labelsz  s    F|r'   c                     [        U[        5      (       a,  XR                  ;  a  U R                  R                  U5        g g [	        S[        U5      -  5      e)Nzlabel must be a string: %s)r   r   r  rT  r   r   r!   r  s     r$   r  BabylMessage.add_label~  sG    eS!!LL(##E* ) 84;FGGr'   c                 \     U R                   R                  U5        g ! [         a     g f = fr   )r  r4   r   rD  s     r$   remove_labelBabylMessage.remove_label  s+    	LL& 		r7  c                 ,    [        U R                  5      $ r   r
   r<  r\   s    r$   r  BabylMessage.get_visible  s    t}}%%r'   c                 $    [        U5      U l        g r   rJ  )r!   visibles     r$   r  BabylMessage.set_visible  s    (r'   c                    U R                   R                  5        H5  nX;   a   U R                   R                  XU   5        M(  U R                   U	 M7     S H,  nX;   d  M
  XR                   ;  d  M  X   U R                   U'   M.     g )N)DateFromzReply-ToToCCSubject)r<  ra   r  )r!   headers     r$   update_visibleBabylMessage.update_visible  sl    mm((*F~,,V&\BMM&)	 +
 JF~&"=(,f% Jr'   c                 J   [        U[        5      (       a  [        U R                  5       5      nSU;   a  UR	                  S5        O"UR	                  S5        UR                  S5        SU;   d  SU;   a  UR                  S5        SU;   a  UR                  S5        S	U;   a  UR                  S
5        g g [        U[        5      (       ar  [        U R                  5       5      nSU;  a  UR                  S5        OUR                  S5        S	U;   a  UR                  S5        SU;   a  UR                  S5        g g [        U[        5      (       aI  [        U R                  5       5      nSU;   a  UR                  S5        SU;   a  UR                  S5        g g [        U[        5      (       aH  UR                  U R                  5       5        U R                  5        H  nUR                  U5        M     g [        U[        5      (       a  g [        S[        U5      -  5      e)Nr  r   r  r  r  rx  r  r  r  r  r9  r  r  r  r  r  )r   r   r2  r  r  r9  r  r   r+  r   r  r  r  r
   r   r   )r!   r-   r  r  s       r$   r  BabylMessage._explain_to  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3*!!%( +))B M* + +r'   )r  r<  r   )r   r   r   r   r  r%   r  r  r  rG  r  r  rV  r  r   r   r'   r$   r   r   k  s=     "+J 7($H&)	5'+r'   r   c                       \ rS rSrSrg)r   i  r   Nr&  r   r'   r$   r   r     r'  r'   r   c                       \ rS rSrSS jrSS jrSS jrSS jrSS jrS r	S	 r
SS
 jrS rS rS rS rS rS rS rS r\S 5       r\" \5      rSrg)r   i  Nc                 N    Xl         Uc  UR                  5       U l        g X l        g r   )r  r  _pos)r!   r  poss      r$   r%   _ProxyFile.__init__  s    
;DIIr'   c                 L    U R                  XR                  R                  5      $ r   )_readr  r   r!   sizes     r$   r   _ProxyFile.read  s    zz$

00r'   c                 L    U R                  XR                  R                  5      $ r   )ra  r  read1rb  s     r$   rf  _ProxyFile.read1  s    zz$

 0 011r'   c                 L    U R                  XR                  R                  5      $ r   )ra  r  r   rb  s     r$   r   _ProxyFile.readline  s    zz$

 3 344r'   c                 v    / nU  H0  nUR                  U5        Uc  M  U[        U5      -  nUS::  d  M/    U$    U$ )Nr   )rT  rD  )r!   sizehintr   r   s       r$   	readlines_ProxyFile.readlines  sG    DMM$#CI%q=  r'   c              #   v   #    U R                  5       =n(       a  Uv   U R                  5       =n(       a  M  g g 7fr   )r   )r!   r   s     r$   rj   _ProxyFile.__iter__  s1     mmo%d%J mmo%d%%s   399c                     U R                   $ r   )r]  r\   s    r$   r  _ProxyFile.tell  s    yyr'   c                     US:X  a%  U R                   R                  U R                  5        U R                   R                  X5        U R                   R                  5       U l        g )NrP  r  r   r]  r  r!   offsetwhences      r$   r   _ProxyFile.seek  s?    Q;JJOODII&

'JJOO%	r'   c                     [        U S5      (       a9   [        U R                  S5      (       a  U R                  R                  5         U ?g g ! U ?f = f)Nr  r   )r   r  r   r\   s    r$   r   _ProxyFile.close   sH    4!!4::w//JJ$$&J "
 Js   5A Ac                     Uc  SnU R                   R                  U R                  5        U" U5      nU R                   R                  5       U l        U$ )Nr   rs  )r!   rc  read_methodr   s       r$   ra  _ProxyFile._read	  sA    <D

		"T"JJOO%	r'   c                     U $ r   r   r\   s    r$   	__enter___ProxyFile.__enter__  s    r'   c                 $    U R                  5         g r   )r   )r!   excs     r$   __exit___ProxyFile.__exit__  s    

r'   c                 6    U R                   R                  5       $ r   )r  readabler\   s    r$   r  _ProxyFile.readable      zz""$$r'   c                 6    U R                   R                  5       $ r   )r  writabler\   s    r$   r  _ProxyFile.writable  r  r'   c                 6    U R                   R                  5       $ r   )r  seekabler\   s    r$   r  _ProxyFile.seekable  r  r'   c                 6    U R                   R                  5       $ r   )r  r   r\   s    r$   r   _ProxyFile.flush"  s    zz!!r'   c                     [        U S5      (       d  g[        U R                  S5      (       d  gU R                  R                  $ )Nr  Tr!  F)r   r  r!  r\   s    r$   r!  _ProxyFile.closed%  s6    tW%%tzz8,,zz   r'   )r  r]  r   r   )r   r   r   r   r%   r   rf  r   rl  rj   r  r   r   ra  r~  r  r  r  r  r   propertyr!  r   r   r   r   r   r'   r$   r   r     ss    125	
&%%%" ! ! $L1r'   r   c                   :    \ rS rSrS	S jrS rS
S jrS rS rSr	g)r  i0  Nc                 H    [         R                  XU5        X l        X0l        g r   )r   r%   _start_stop)r!   r  r  r  s       r$   r%   _PartialFile.__init__3  s    DU+
r'   c                 F    [         R                  U 5      U R                  -
  $ r   )r   r  r  r\   s    r$   r  _PartialFile.tell9  s    t$t{{22r'   c                     US:X  a  U R                   U l        SnOUS:X  a  U R                  U l        Sn[        R	                  XU5        g )Nr   rP  r,  )r  r]  r  r   r   rt  s      r$   r   _PartialFile.seek=  s>    Q;DIFq[

DIFf-r'   c                     U R                   U R                  -
  nUS::  a  gUb  US:  d  X:  a  Un[        R                  XU5      $ )Nr   r'   )r  r]  r   ra  )r!   rc  r{  	remainings       r$   ra  _PartialFile._readG  sF    JJ*	><4!8t'7DK88r'   c                 ,    [        U S5      (       a  U ?g g )Nr  )r   r  r\   s    r$   r   _PartialFile.closeP  s     4!!
 "r'   )r]  r  r  )NNr  )
r   r   r   r   r%   r  r   ra  r   r   r   r'   r$   r  r  0  s    3.9r'   r  c                    Sn [         (       a7   [         R                  " U [         R                  [         R                  -  5        U(       a|   [        U R                  S-   5      nUR                  5           [        R                  " UR                  U R                  S-   5        Sn[        R                  " UR                  5        g g ! [         a[  nUR
                  [
        R                  [
        R                  [
        R                  4;   a  [        SU R                  -  5      ee S nAff = f! [         a9  nUR
                  [
        R                  [
        R                  4;   a   S nAg e S nAff = f! [         ["        4 a3    [        R$                  " UR                  U R                  S-   5        Sn g f = f! [&         a9    [        R(                  " UR                  5        [        SU R                  -  5      ef = f!   [         (       a%  [         R                  " U [         R*                  5        U(       a#  [        R(                  " U R                  S-   5        e = f)NFzlockf: lock unavailable: %s.lockTzdot lock unavailable: %s)fcntllockfLOCK_EXLOCK_NBr   r   EAGAINr  r  r   r   r  r   r   r   rq  r   r   r   r  r4   LOCK_UN)r  r  dotlock_doner   pre_locks        r$   r  r  W  s   L%5Au}}u}}<= ,QVVg-=> 1-GGHMM166G+;<#'L
 IIhmm,#   77u||U\\5;;GG,-J-.VV.4 5 5   77u||U[[99	 '8 (IIhmmQVVg-=>#'L(
 # 1		(--(()C)**0 1 115KK5==)IIaffw&'s   H 6C
 H (D2 80E8 ( F> 

D/AD**D//H 2
E5<.E0*H /E00E55H 8A F;8F> :F;;F> >AHH AI!c                    [         (       a%  [         R                  " U [         R                  5        [        R                  R                  U R                  S-   5      (       a$  [        R                  " U R                  S-   5        g g )Nr  )r  r  r  r   r   r   r   r4   r  s    r$   r  r    sO    uAu}}%	ww~~affw&''
		!&&7"# (r'   c                    [         R                  " U [         R                  [         R                  -  [         R                  -  S5      n [        U S5      [         R
                  " U5        $ ! [         R
                  " U5        f = f)Nrb  r  )r   r  rc  r  O_RDWRr   )r   fds     r$   r  r    sP    	rzzBII-		95	ABD% 
s   
A, ,Bc           
          [        U < S[        [        R                  " 5       5      < S[        R                  " 5       < S[
        R                  " 5       < 35      $ )NrQ  )r  r|  rr  rz  r{  r   r}  )r   s    r$   r  r    s8    dC		4D.4.@.@.B.0iik; < <r'   c                     U R                  5         [        [        S5      (       a%  [        R                  " U R	                  5       5        g g )Nfsync)r   r   r   r  filenor  s    r$   r  r    s/    GGIr7
 r'   c                 :    [        U 5        U R                  5         g r   )r  r   r  s    r$   r   r     s    NGGIr'   c                       \ rS rSrSrg)r   i  r   Nr&  r   r'   r$   r   r     r'  r'   r   c                       \ rS rSrSrg)r   i  r   Nr&  r   r'   r$   r   r     r'  r'   r   c                       \ rS rSrSrg)r   i  r   Nr&  r   r'   r$   r   r     r'  r'   r   c                       \ rS rSrSrg)r   i  r   Nr&  r   r'   r$   r   r     r'  r'   r   c                       \ rS rSrSrg)r   i  r   Nr&  r   r'   r$   r   r     r'  r'   r   )T)1r   rr  r  rz  r   r  r   rQ   email.messageemail.generatorr   rH   typesr   r  ImportError__all__r   r   r   r   r  r  r   r	   r   r   r-   r
   r   r  r   r   r   r   r   r  r  r  r  r  r  r   	Exceptionr   r   r   r   r   r   r'   r$   <module>r     s   
          	  A
 **

G
$f2 f2Rgg gTC CN@" @F1.9 1.h*.9 *.Z@* @*F
v vr"@emm## "@Jj+W j+Zn+w n+b1" 1E+ E+P\+7 \+~1" 1_2 _2D$: $N(T$<-I -E EIE I4 44% 4mD  Es   E4 4F ?F 