
    ,hhD                        S 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
JrJr  SSKJr   SSKrSr/ SQrSrSrS	rS
rSrSrSr0 SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S_S!S_S"S_S#S_0 S$S_S%S_S&S_S'S_S(S_S)S_S*S_S+S_S,S_S-S_S.S_S/S_S0S_S1S_S2S_S3S_S4S_ESSSSSSSSS5.Er\R6                  " S65      r\R6                  " S75      r\R6                  " S85      r\R6                  " S9\R>                  5      r \R6                  " S:5      r!\R6                  " S;5      r"\R6                  " S<5      r#\R6                  " S=\R>                  5      r$S9r%S=r& " S> S?5      r'\(       a   " S@ SA\'5      r(\RS                  SA5         " SB SC\'5      r* " SD SE5      r+SFRY                  SG5      r-\." \-SHS 5       V Vs0 s H  u  pUR_                  5       U SH-   _M     snn r0SI r1SJ r2SK r3SL r4\5SM:X  Ga  SSK6r6SSK7r7 \6Rl                  " \Rp                  SHS SN5      u  r9r:Sr=\9 H,  u  r>r<\>SP:X  a
  \?" \<5      rM  \>SQ:X  d  M  \<r=\:(       a  M)  \=4r:M.     \:(       d  SRr:\:S   r@\7R                  " 5       rB\7Rn                  " SS\B< ST\@=(       d    SU< SV35      rCSW\BSXSY.-  rDSZ\B\C44S[S\S]S^S_SS\D44S`SaSbScSdSeSfSgSh4rESiSjSkSlS^SSS\D44SgSm4rFSn rG \=(       a	  \*" \=5      rHO\'" \@5      rH\HR                  So:X  a  \ESHS rE\HR                  Sp\HR                  -  5        \HR                  Sq\HR                  < 35        \E H  u  rMr:\G" \M\:5        M     \G" SrSs5       HL  rN\R                  " St\N5      rP\P(       a  \PR                  SH5      rRO\NRY                  5       Su   rR\G" Sv\R45        MN     \F HG  u  rMr:\G" \M\:5      rS\M\:4Sk:w  a  M  \SSu   RY                  5       rT\T(       d  M5  \G" SwSSx\TSu   -  Sy45        MI     \U" Sz5        gg! \ a    Sr GNf = fs  snn f ! \6Rv                   a  r<SOu  r9r: Sr<C<GNSr<C<ff = f!   \U" S{5        \(       d  \U" S|\Rp                  S   -  5        e = f)}z2.58    N)datetimetimezone	timedelta)DEFAULT_BUFFER_SIZETF)IMAP4IMAP4_streamInternaldate2tupleInt2AP
ParseFlagsTime2Internaldate   
   i  )	IMAP4REV1r   i@B i   APPEND)AUTHSELECTEDAUTHENTICATE)NONAUTH
CAPABILITY)r   r   r   LOGOUTCHECK)r   CLOSECOPYCREATEDELETE	DELETEACLENABLE)r   EXAMINEEXPUNGEFETCHGETACLGETANNOTATIONGETQUOTAGETQUOTAROOTMYRIGHTSLISTLOGINr   LSUBMOVE	NAMESPACENOOPPARTIAL	PROXYAUTHRENAMESEARCHSELECTSETACLSETANNOTATIONSETQUOTASORT)STARTTLSSTATUSSTORE	SUBSCRIBETHREADUIDUNSUBSCRIBEUNSELECTs   \+( (?P<data>.*))?s   .*FLAGS \((?P<flags>[^\)]*)\)s   .*INTERNALDATE "(?P<day>[ 0123][0-9])-(?P<mon>[A-Z][a-z][a-z])-(?P<year>[0-9][0-9][0-9][0-9]) (?P<hour>[0-9][0-9]):(?P<min>[0-9][0-9]):(?P<sec>[0-9][0-9]) (?P<zonen>[-+])(?P<zoneh>[0-9][0-9])(?P<zonem>[0-9][0-9])"s   .*{(?P<size>\d+)}$s
   \r\n|\r|\ns%   \[(?P<type>[A-Z-]+)( (?P<data>.*))?\]s$   \* (?P<type>[A-Z-]+)( (?P<data>.*))?s3   \* (?P<data>\d+) (?P<type>[A-Z-]+)( (?P<data2>.*))?c                   .   \ rS rSr " S S\5      r " S S\5      r " S S\5      rS\S	4S
 jr	S r
S rS rS rS rS rS rS\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#S% r$S& r%S' r&S( r'S) r(SSS* jr)S+ r*S, r+S- r,S. r-SSS/ jr.S0 r/S1 r0S2 r1S3 r2S4 r3S5 r4S6 r5STS7 jr6S8 r7S9 r8S: r9S; r:SUS< jr;S= r<S> r=S? r>S@ r?SA r@SB rASC rBSD rCSE rDSF rESG rFSH rGSI rHSJ rISVSK jrJSL rKSM rLSN rMSO rNSP rOSQ rPSRrUg	)Wr      c                       \ rS rSrSrg)IMAP4.error    N__name__
__module____qualname____firstlineno____static_attributes__rB       0/opt/python-3.13.8/usr/lib/python3.13/imaplib.pyerrorr@      s    DrI   rK   c                       \ rS rSrSrg)IMAP4.abort   rB   NrC   rB   rI   rJ   abortrM      s    rI   rO   c                       \ rS rSrSrg)IMAP4.readonly   rB   NrC   rB   rI   rJ   readonlyrQ      s    4rI   rS    Nc                 P   [         U l        SU l        S U l        0 U l        0 U l        SU l        SU l        SU l        SU l	        U R                  5         U R                  XU5         U R                  5         g ! [         a#     U R                  5         e ! [         a     e f = ff = f)Nr   rT   Fr   )Debugdebugstateliteraltagged_commandsuntagged_responsescontinuation_responseis_readonlytagnum_tls_established_mode_asciiopen_connect	ExceptionshutdownOSErrorselfhostporttimeouts       rJ   __init__IMAP4.__init__   s    

!"$%'"  % 			$g&	MMO 	   	s0   'A8 8
B%BB%
B!B% B!!B%c                     SU l         SU l        [        R                  " [        [        R
                  5      U l        [        R                  " [        [        R
                  5      U l        g )NFascii)	utf8_enabled	_encodingrecompile_LiteralASCIILiteral_Untagged_statusUntagged_statusrg   s    rJ   r`   IMAP4._mode_ascii   s?    ! zz(BHH5!zz*:BHHErI   c                     SU l         SU l        [        R                  " [        5      U l        [        R                  " [        5      U l        g )NTutf-8)ro   rp   rq   rr   rs   ru   rv   rw   rx   s    rJ   
_mode_utf8IMAP4._mode_utf8   s3      zz(+!zz*:;rI   c                    [        [        R                  " SS5      5      U l        [        R
                  " SU R                  -   S-   [        R                  5      U l         U R                  5       U l        SU R                   ;   a  SU l        O3SU R                   ;   a  SU l        OU R%                  U R                  5      eU R'                  5          [*         H  nXR(                  ;  a  M  Xl          g    U R%                  S	5      e)
Ni   i  s   (?P<tag>s"   \d+) (?P<type>[A-Z]+) (?P<data>.*)PREAUTHr   OKr   zserver not IMAP4 compliant)r
   randomrandinttagprerq   rr   rt   tagre_cmd_log_len_cmd_log_idx_cmd_logrW   _mesg__version___get_responsewelcomer[   rX   rK   _get_capabilitiescapabilitiesAllowedVersionsPROTOCOL_VERSION)rg   versions     rJ   rb   IMAP4._connect   s     V^^D%89ZZ++!&@!ABD((L
  ))+///DJT,,,"DJ**T\\**  'G///$+!	 ' jj566rI   c                 d    U[         ;   a  [        XR                  5       5      $ [        SU-  5      e)NzUnknown IMAP4 command: '%s')CommandsgetattrlowerAttributeError)rg   attrs     rJ   __getattr__IMAP4.__getattr__  s,    84..:TABBrI   c                     U $ NrB   rx   s    rJ   	__enter__IMAP4.__enter__  s    rI   c                 h    U R                   S:X  a  g  U R                  5         g ! [         a     g f = fNr   )rX   logoutre   )rg   argss     rJ   __exit__IMAP4.__exit__  s1    ::!	KKM 		s   $ 
11c                 :   Ub  U(       d  [        S5      eU R                  (       d  S OU R                  n[        R                  " SX R                  U R                  5        X R                  4nUb  [
        R                  " X15      $ [
        R                  " U5      $ )Nz0Non-blocking socket (timeout=0) is not supportedzimaplib.open)
ValueErrorrh   sysauditri   socketcreate_connection)rg   rj   rh   addresss       rJ   _create_socketIMAP4._create_socket&  su     wOPP99t$))		.$		499=#++G==''00rI   c                     Xl         X l        U R                  U5      U l        U R                  R	                  S5      U l        g )Nrb)rh   ri   r   sockmakefilefilerf   s       rJ   ra   
IMAP4.open3  s6     		''0	II&&t,	rI   c                    [        U[        5      nU R                  R                  U5      nX!:  aT  [	        U5      U:X  aE  [        X!U-
  5      nX0R                  R                  U5      -  nX$-  nX!:  a  [	        U5      U:X  a  ME  U$ r   )min_SAFE_BUF_SIZEr   readlen)rg   sizecursizedatadeltas        rJ   r   
IMAP4.read?  st    dN+yy~~g&nTg!50EIINN5))DG nTg!5 rI   c                     U R                   R                  [        S-   5      n[        U5      [        :  a  U R	                  S[        -  5      eU$ )N   zgot more than %d bytes)r   readline_MAXLINEr   rK   rg   lines     rJ   r   IMAP4.readlineJ  s@    yy!!(Q,/t9x**5@AArI   c                 h    [         R                  " SX5        U R                  R                  U5        g )Nzimaplib.send)r   r   r   sendallrg   r   s     rJ   send
IMAP4.sendR  s"    		.$-		$rI   c                    U R                   R                  5          U R                  R                  [        R
                  5        U R                  R                  5         g ! [         a:  nUR                  [        R                  :w  a  [        USS5      S:w  a  e  S nANZS nAff = f! U R                  R                  5         f = f)Nwinerrorr   i&'  )
r   closer   rd   r   	SHUT_RDWRre   errnoENOTCONNr   )rg   excs     rJ   rd   IMAP4.shutdownX  s    		
	IIv//0 IIOO  	 		U^^+3
A.%7	 IIOOs)   )A   
B$*0BB' B$$B' 'Cc                     U R                   $ r   )r   rx   s    rJ   r   IMAP4.socketh  s    
 yyrI   c                     SnU R                  SS /U5      u  p#US   (       a  X#4$ U R                  5       u  p#U R                  X#U5      $ )NRECENTr   )_untagged_responsenooprg   nametypdats       rJ   recentIMAP4.recentt  sO     **4$>r78O99;&&s66rI   c                 F    U R                  US /UR                  5       5      $ r   )r   upper)rg   codes     rJ   responseIMAP4.response  s!     &&tdVTZZ\BBrI   c                     SnU(       d  SnU(       a  US   US   4S:w  a  SU-  nOS nU(       a  [        U5      nOS n[        R                  [        U5      nX`l        U R                  XQX#5      $ )Nr   INBOXr   r   ()(%s))r   MapCRLFsubCRLFrY   _simple_command)rg   mailboxflags	date_timemessager   rY   s          rJ   appendIMAP4.append  sr     Gar#y0E))4II++dG,##D5DDrI   c                     UR                  5       n[        U5      R                  U l        U R	                  SU5      u  pEUS:w  a$  U R                  US   R                  SS5      5      eSU l        XE4$ )Nr   r   r   r{   replacer   )r   _AuthenticatorprocessrY   r   rK   decoderX   )rg   	mechanism
authobjectmechr   r   s         rJ   authenticateIMAP4.authenticate  sk       
 &j199''=$;**SW^^GY?@@
xrI   c                 P    SnU R                  U5      u  p#U R                  X#U5      $ )Nr   r   r   r   s       rJ   
capabilityIMAP4.capability  s.     ''-&&s66rI   c                 $    U R                  S5      $ )Nr   r   rx   s    rJ   checkIMAP4.check  s    
 ##G,,rI   c                 V     U R                  S5      u  pSU l        X4$ ! SU l        f = f)Nr   r   r   rX   rg   r   r   s      rJ   r   IMAP4.close  s2    	 ++G4HCDJx  DJ    	(c                 &    U R                  SX5      $ )Nr   r  )rg   message_setnew_mailboxs      rJ   copy
IMAP4.copy  s    
 ##FKEErI   c                 &    U R                  SU5      $ )Nr   r  rg   r   s     rJ   createIMAP4.create      
 ##Hg66rI   c                 &    U R                  SU5      $ )Nr   r  r  s     rJ   deleteIMAP4.delete  r  rI   c                 &    U R                  SX5      $ )Nr   r  )rg   r   whos      rJ   	deleteaclIMAP4.deleteacl  s    
 ##K>>rI   c                     SU R                   ;  a  [        R                  S5      eU R                  SU5      u  p#US:X  a$  SUR	                  5       ;   a  U R                  5         X#4$ )Nr   zServer does not support ENABLEr   zUTF8=ACCEPT)r   r   rK   r   r   r|   )rg   r   r   r   s       rJ   enableIMAP4.enable  s_    
 4,,,++>??((:>	$;=J,<,<,>>OOyrI   c                 P    SnU R                  U5      u  p#U R                  X#U5      $ )Nr   r   r   s       rJ   expungeIMAP4.expunge  s.     ''-&&s66rI   c                 R    SnU R                  X1U5      u  pEU R                  XEU5      $ )Nr    r   )rg   r  message_partsr   r   r   s         rJ   fetchIMAP4.fetch   s0     ''=I&&s66rI   c                 N    U R                  SU5      u  p#U R                  X#S5      $ )Nr!   ACLr   rg   r   r   r   s       rJ   getaclIMAP4.getacl/  s+    
 ''':&&s77rI   c                 P    U R                  SXU5      u  pEU R                  XES5      $ )Nr"   
ANNOTATIONr   )rg   r   entry	attributer   r   s         rJ   getannotationIMAP4.getannotation8  s-     ''S&&s>>rI   c                 N    U R                  SU5      u  p#U R                  X#S5      $ )Nr#   QUOTAr   )rg   rootr   r   s       rJ   getquotaIMAP4.getquota@  s+     ''
D9&&s99rI   c                     U R                  SU5      u  p#U R                  X#S5      u  p$U R                  X#S5      u  p%X%U/4$ )Nr$   r1  	QUOTAROOTr   )rg   r   r   r   quota	quotaroots         rJ   getquotarootIMAP4.getquotarootK  sN    
 ''@,,Sw?
00;G&&&rI   c                 R    SnU R                  X1U5      u  pEU R                  XEU5      $ )Nr&   r   rg   	directorypatternr   r   r   s         rJ   list
IMAP4.listV  0     ''A&&s66rI   c                     U R                  SXR                  U5      5      u  p4US:w  a  U R                  US   5      eSU l        X44$ )Nr'   r   r   r   )r   _quoterK   rX   )rg   userpasswordr   r   s        rJ   loginIMAP4.loginb  sI     ''{{87LM$;**SW%%
xrI   c                 V    XsU l         U l        U R                  SU R                  5      $ )NzCRAM-MD5)rD  rE  r   _CRAM_MD5_AUTH)rg   rD  rE  s      rJ   login_cram_md5IMAP4.login_cram_md5p  s+    
 $( 	4=  T-@-@AArI   c                 :   SS K n[        U R                  [        5      (       a  U R                  R	                  S5      nOU R                  n UR                  X1S5      nU R                   SUR                  5        3$ ! [         a    U R                  S5      ef = f)Nr   r{   md5z(CRAM-MD5 authentication is not supported )
hmac
isinstancerE  strencodeHMACr   rK   rD  	hexdigest)rg   	challengerO  rE  authcodes        rJ   rI  IMAP4._CRAM_MD5_AUTHy  s    dmmS))}}++G4H}}H	Iyye<H ))Ah002344  	I**GHH	Is   A> >Bc                 \    SU l         U R                  S5      u  pU R                  5         X4$ r   )rX   r   rd   r  s      rJ   r   IMAP4.logout  s-     
''1xrI   c                 R    SnU R                  X1U5      u  pEU R                  XEU5      $ )Nr(   r   r<  s         rJ   lsub
IMAP4.lsub  rA  rI   c                 N    U R                  SU5      u  p#U R                  X#S5      $ )Nr%   r   r'  s       rJ   myrightsIMAP4.myrights  s+    
 &&z7;&&s<<rI   c                 P    SnU R                  U5      u  p#U R                  X#U5      $ )Nr*   r   r   s       rJ   	namespaceIMAP4.namespace  s.    
 ''-&&s66rI   c                 &     U R                  S5      $ )Nr+   )rW   _dump_urr[   r   rx   s    rJ   r   
IMAP4.noop  s    
  ##F++rI   c                 T    SnU R                  XQX#U5      u  pgU R                  XgS5      $ )Nr,   r    r   )rg   message_nummessage_partstartlengthr   r   r   s           rJ   partialIMAP4.partial  s3     ''<PVW&&s99rI   c                 *    SnU R                  SU5      $ )Nr-   r  )rg   rD  r   s      rJ   	proxyauthIMAP4.proxyauth  s     ##K66rI   c                 &    U R                  SX5      $ )Nr.   r  )rg   
oldmailbox
newmailboxs      rJ   renameIMAP4.rename  s    
 ##HjEErI   c                     SnU(       a>  U R                   (       a  [        R                  S5      eU R                  " USU/UQ76 u  pEOU R                  " U/UQ76 u  pEU R	                  XEU5      $ )Nr/   z'Non-None charset not valid in UTF8 modeCHARSET)ro   r   rK   r   r   )rg   charsetcriteriar   r   r   s         rJ   searchIMAP4.search  sl       kk"KLL++D)WPxPHC++D<8<HC&&s66rI   c                    0 U l         X l        U(       a  SnOSnU R                  X15      u  pEUS:w  a
  SU l        XE4$ SU l        SU R                   ;   a  U(       d   U R                  SU-  5      eX@R                   R                  SS /5      4$ )	Nr   r0   r   r   r   	READ-ONLYz%s is not writableEXISTS)r[   r]   r   rX   rW   rd  rS   get)rg   r   rS   r   r   r   s         rJ   selectIMAP4.select  s     #%#DD''6$;DJ8O
$111  -- 4w >??++//4&AAArI   c                 (    U R                  SXU5      $ )Nr1   r  )rg   r   r  whats       rJ   setaclIMAP4.setacl  s    
 ##HgDAArI   c                 P    U R                   " S/UQ76 u  p#U R                  X#S5      $ )Nr2   r+  r   )rg   r   r   r   s       rJ   setannotationIMAP4.setannotation  s.     ''?$?&&s>>rI   c                 N    U R                  SX5      u  p4U R                  X4S5      $ )Nr3   r1  r   )rg   r2  limitsr   r   s        rJ   setquotaIMAP4.setquota!  s+    
 ''
DA&&s99rI   c                 |    SnUS   US   4S:w  a  SU-  nU R                   " XAU/UQ76 u  pVU R                  XVU5      $ )Nr4   r   r   r   r   r   )rg   sort_criteriarw  search_criteriar   r   r   s          rJ   sort
IMAP4.sort*  sX    
  !]2./9<"]2M''WWW&&s66rI   c                 ,   Sn[         (       d  U R                  S5      eU R                  (       a  U R                  S5      eX R                  ;  a  U R                  S5      eUc  [
        R                  " 5       nU R                  U5      u  p4US:X  aa  UR                  U R                  U R                  S9U l	        U R                  R                  S5      U l        SU l        U R                  5         OU R                  S	5      eU R                  X4U5      $ )
Nr5   zSSL support missingzTLS session already establishedzTLS not supported by serverr   server_hostnamer   TzCouldn't establish TLS session)HAVE_SSLrK   r_   rO   r   ssl_create_stdlib_contextr   wrap_socketr   rh   r   r   r   r   )rg   ssl_contextr   r   r   s        rJ   starttlsIMAP4.starttls8  s    x**233  **>??(((**:;;446K''-$;#//		@D		 0 KDI		**40DI$(D!""$**=>>&&s66rI   c                 R    SnU R                  X1U5      u  pEU R                  XEU5      $ )Nr6   r   )rg   r   namesr   r   r   s         rJ   statusIMAP4.statusO  s2    
  ''u=&&s66rI   c                 v    US   US   4S:w  a  SU-  nU R                  SXU5      u  pEU R                  XES5      $ )Nr   r   r   r   r7   r    r   )rg   r  commandr   r   r   s         rJ   storeIMAP4.store[  sK    
 !HU2Y9,UNE''uM&&s99rI   c                 &    U R                  SU5      $ )Nr8   r  r  s     rJ   	subscribeIMAP4.subscribef  s    
 ##K99rI   c                 V    SnU R                   " XAU/UQ76 u  pVU R                  XVU5      $ )Nr9   r   )rg   threading_algorithmrw  r  r   r   r   s          rJ   threadIMAP4.threadn  s5    
 ''7]_]&&s66rI   c                 n   UR                  5       nU[        ;  a  U R                  SU-  5      eU R                  [        U   ;  a=  U R                  SU< SU R                  < SSR	                  [        U   5      < 35      eSnU R
                  " X1/UQ76 u  pEUS;   a  UnOSnU R                  XEU5      $ )	NzUnknown IMAP4 UID command: %scommand  illegal in state , only allowed in states , r:   )r/   r4   r9   r    )r   r   rK   rX   joinr   r   )rg   r  r   r   r   r   s         rJ   uid	IMAP4.uidx  s     --/("**<wFGG::Xg..**%tzz"ii(9:< = = ''==22DD&&s66rI   c                 &    U R                  SU5      $ )Nr;   r  r  s     rJ   unsubscribeIMAP4.unsubscribe  s    
 ##M7;;rI   c                 V     U R                  S5      u  pSU l        X4$ ! SU l        f = f)Nr<   r   r  )rg   r   r   s      rJ   unselectIMAP4.unselect  s3    	 ,,Z8ICDJy  DJr	  c                     UR                  5       nU[        ;  a  U R                  4[        U'   U R                  " U/UQ76 $ r   )r   r   rX   r   rg   r   r   s      rJ   xatomIMAP4.xatom  s>     zz| x"jj]HTN##D0400rI   c                 d    Uc  SnU R                   n X;   a  X1   R                  U5        g U/X1'   g NrI   )r[   rW   r   r   r~  r   )rg   r   r   urs       rJ   _append_untaggedIMAP4._append_untagged  s8    ;C$$ 9GNN3eBGrI   c                     U R                   R                  S5      nU(       a.  U R                  US   R                  U R                  S5      5      eg )NBYEr   r   )r[   r~  rO   r   rp   )rg   byes     rJ   
_check_byeIMAP4._check_bye  sB    %%))%0**SW^^DNNIFGG rI   c                 t   U R                   [        U   ;  aD  S U l        U R                  SU< SU R                   < SSR	                  [        U   5      < 35      eS H!  nX0R
                  ;   d  M  U R
                  U	 M#     SU R
                  ;   a"  U R                  (       d  U R                  S5      eU R                  5       n[        XR                  5      nUS-   U-   nU H:  nUc  M  [        U[        5      (       a  [        X`R                  5      nUS-   U-   nM<     U R                  nUb  S U l        [        U5      [        U R                  5      L a  UnOcS nU R                  (       a+  U[        S	[!        U5      -  U R                  5      -   nUS
-   nO%U[        S[!        U5      -  U R                  5      -   n  U R)                  U[*        -   5        Uc  U$  U R1                  5       (       a-  U R2                  U   (       a  U$ U R1                  5       (       a  M-  W(       a  U" U R4                  5      n  U R)                  U5        U R)                  [*        5        U(       d   U$ M  ! [,         a  n	U R/                  SU	-  5      eS n	A	ff = f! [,         a  n	U R/                  SU	-  5      eS n	A	ff = f)Nr  r  r  r  r   NOBADr|  z#mailbox status changed to READ-ONLY    z UTF8 (~{%s}   )z {%s}zsocket error: %s)rX   r   rY   rK   r  r[   r]   rS   _new_tagbytesrp   rP  rQ  type_commandro   r   rW   r   _logr   r   re   rO   r   rZ   r\   )
rg   r   r   r   tagr   argrY   	literatorvals
             rJ   r  IMAP4._command  sl   ::Xd^+DL**"DJJ"ii79 : :
 'C---++C0 ' $111  -- EFFmmoT>>*TzD C{H#s##C0$;$D	  ,,DLG}T]] 33#	 	$$%W(Et~~"VVD%nG%#g,(>"OOD	7IIdTk" ?J $$&&'',J $$&& #D$>$>?;		'"		$ 
3   	7**/#566	72  ;jj!3c!9::;s0   I. <&J .
J8JJ
J7J22J7c                    US:H  nU(       d  U R                  5          U R                  X#S9u  pEU(       d  U R                  5         US:X  a  U R                  U< SU< SU< 35      eXE4$ ! U R                   a  nU R                  SU< SU< 35      eS nAfU R                   a  nU R                  SU< SU< 35      eS nAff = f)Nr   )
expect_byez	command:  => r  z command error: rN  )r  _get_tagged_responserO   rK   )rg   r   r  r   r   r   r  s          rJ   _command_completeIMAP4._command_complete$  s    ("OO	@11#1IIC
 OO%<**$TJKKy zz 	@**D#>??zz 	@**D#>??	@s#   A+ +C;BC'C  Cc                     U R                  5       u  pUS /:X  a  U R                  S5      e[        US   U R                  5      nUR	                  5       n[        UR                  5       5      U l        g )Nz"no CAPABILITY response from serverr   )r   rK   rQ  rp   r   tuplesplitr   r  s      rJ   r   IMAP4._get_capabilities6  s[    ??$4&=**ABB#b'4>>*iik!#))+.rI   c                    U R                  5       nU R                  U R                  U5      (       a  U R                  R	                  S5      nX R
                  ;  a  U R                  SU-  5      eU R                  R	                  S5      n[        X0R                  5      nU R                  R	                  S5      nX4/4U R
                  U'   GOS nU R                  [        U5      (       d<  U R                  U R                  U5      (       a  U R                  R	                  S5      nU R                  cP  U R                  [        U5      (       a!  U R                  R	                  S5      U l        g U R                  SU-  5      eU R                  R	                  S5      n[        X0R                  5      nU R                  R	                  S5      nUc  SnU(       a  US-   U-   nU R                  U R                  U5      (       a|  [        U R                  R	                  S	5      5      n U R#                  U5      nU R%                  X4U45        U R                  5       nU R                  U R                  U5      (       a  M|  U R%                  X45        US
;   au  U R                  [&        U5      (       aZ  U R                  R	                  S5      n[        X0R                  5      nU R%                  X0R                  R	                  S5      5         U$ )Nr  zunexpected tagged response: %rr  r   data2zunexpected response: %rrI   r  r   r  )	_get_line_matchr   mogrouprZ   rO   rQ  rp   Untagged_responserw   Continuationr\   ru   intrW   r   r   r  Response_code)rg   respr  r   r   dat2r   r   s           rJ   r   IMAP4._get_response?  sa    ~~ ;;tzz4((''--&C...jj!AD!HII''--'Cc>>*C''--'C),eD  %D ;;0$77;;t33T::77==1Dww ;;|T2215v1FD.jj!:T!ABB''--'Cc>>*C''--'C{#C3:,S ++dllC00 477==01 yy %%c;7 nn&! ++dllC00$ !!#+ %%$++mS*I*I''--'Cc>>*C!!#ww}}V'<= rI   c                     U R                   U   nUb  U R                   U	 U$ U(       a$  SnU R                  R                  US 5      nUb  XE4$ U R                  5          U R	                  5         Mo  ! U R
                   a  n e S nAff = f)Nr  )rZ   r[   popr  r   rO   rW   	print_log)rg   r  r  resultr   r  r  s          rJ   r  IMAP4._get_tagged_response  s    ))#.F!((---11#t<?:% OO""$/ 0 ::  	s   A1 1BBBc                     U R                  5       nU(       d  U R                  S5      eUR                  S5      (       d  U R                  SU-  5      eUS S n U$ )Nzsocket error: EOFr   z#socket error: unterminated line: %r)r   rO   endswithrW   r   r  r   s     rJ   r  IMAP4._get_line  s[    }}**011 }}W%%**BTIJJCRy
 rI   c                 L    UR                  U5      U l         U R                  S L$ r   )matchr  rW   r   r>  groups)rg   cress      rJ   r  IMAP4._match  s'    
 ))A, wwd""rI   c                     U R                   [        [        U R                  5      U R                  5      -   nU R                  S-   U l        S U R
                  U'   U$ )Nr   )r   r  rQ  r^   rp   rZ   )rg   r  s     rJ   r  IMAP4._new_tag  sH    kkE#dkk"2DNNCCkkAo$(S!
rI   c                 Z    UR                  SS5      nUR                  SS5      nSU-   S-   $ )N\z\\"z\")r   )rg   r  s     rJ   rC  IMAP4._quote  s0    kk$'kk#u%Sy3rI   c                 F    U R                  XR                  " U/UQ76 5      $ r   )r  r  r  s      rJ   r   IMAP4._simple_command  s!    %%dMM$,F,FGGrI   c                 z    US:X  a  X4$ X0R                   ;  a  US /4$ U R                   R                  U5      n X4$ )Nr  )r[   r  rW   r   )rg   r   r   r   r   s        rJ   r   IMAP4._untagged_response  sK    $;8O...;&&**40 yrI   )ru   r   rw   r   r   r   rp   r_   r   r\   rW   r   rh   r]   rY   r  rE  ri   r   rX   rZ   r^   r   r   r[   rD  ro   r   )z""*)r   Fr   )F)VrD   rE   rF   rG   rc   rK   rO   rS   
IMAP4_PORTrk   r`   r|   rb   r   r   r   r   ra   r   r   r   rd   r   r   r   r   r   r   r  r   r  r  r  r  r  r  r#  r(  r.  r3  r9  r?  rF  rJ  rI  r   r[  r^  ra  r   rk  rn  rs  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  rC  r   r   r   rd  r  r  rH   rB   rI   rJ   r   r      s   b !	 5Z 2F<'7TC1 T 	-  7"CE0:7-F77?
778?:'	7B5 
	7=7,	:
7F7$B@B?:77.	7::772< 1,HNb$/M`B&	#H
	 rI   r   c                   B    \ rS rSrS\4SSS.S jjrS rS\S4S jrSrg)		IMAP4_SSLi  rT   N)r  rj   c                l    Uc  [         R                  " 5       nX0l        [        R	                  XX$5        g r   )r  r  r  r   rk   )rg   rh   ri   r  rj   s        rJ   rk   IMAP4_SSL.__init__(  s*    "!88:*NN4t5rI   c                 t    [         R                  X5      nU R                  R                  UU R                  S9$ )Nr  )r   r   r  r  rh   )rg   rj   r   s      rJ   r   IMAP4_SSL._create_socket/  s;    ''6D##//@D		 0 K KrI   c                 0    [         R                  XX#5        g r   )r   ra   rf   s       rJ   ra   IMAP4_SSL.open4  s     JJt41rI   )r  )	rD   rE   rF   rG   IMAP4_SSL_PORTrk   r   ra   rH   rB   rI   rJ   r	  r	    s,    " !# 	6$($	6	K
 ^T 	2rI   r	  c                   <    \ rS rSrS rS
S jrS rS rS rS r	S	r
g)r   i?  c                 :    Xl         [        R                  U 5        g r   )r  r   rk   )rg   r  s     rJ   rk   IMAP4_stream.__init__K  s    trI   Nc           	      8   S U l         S U l        S U l        S U l        [        R
                  " U R                  [        [        R                  [        R                  SSS9U l	        U R                  R                  U l        U R                  R                  U l        g )NT)bufsizestdinstdoutshell	close_fds)rh   ri   r   r   
subprocessPopenr  r   PIPEr   r  	writefiler  readfilerf   s       rJ   ra   IMAP4_stream.openP  sq    
 				!'''//*//$( ++++rI   c                 8    U R                   R                  U5      $ r   )r  r   )rg   r   s     rJ   r   IMAP4_stream.read`  s    }}!!$''rI   c                 6    U R                   R                  5       $ r   )r  r   rx   s    rJ   r   IMAP4_stream.readlinee  s    }}%%''rI   c                 n    U R                   R                  U5        U R                   R                  5         g r   )r  writeflushr   s     rJ   r   IMAP4_stream.sendj  s$    T"rI   c                     U R                   R                  5         U R                  R                  5         U R                  R	                  5         g r   )r  r   r  r   waitrx   s    rJ   rd   IMAP4_stream.shutdownp  s2    rI   )r  r   rh   ri   r   r  r   r  )NNN)rD   rE   rF   rG   rk   ra   r   r   r   rd   rH   rB   rI   rJ   r   r   ?  s     
, (
(
rI   r   c                   ,    \ rS rSrS rS rS rS rSrg)r   ix  c                     Xl         g r   r   )rg   mechinsts     rJ   rk   _Authenticator.__init__~  s    	rI   c                 l    U R                  U R                  U5      5      nUc  gU R                  U5      $ )N   *)r   r   rR  )rg   r   rets      rJ   r   _Authenticator.process  s0    iiD)*;{{3rI   c                     Sn[        U[        5      (       a  UR                  S5      nU(       aK  [        U5      S:  a  US S nUSS  nOUnSn[        R
                  " U5      nU(       a  X$S S -   nU(       a  MK  U$ )NrI   r{   0   r   )rP  rQ  rR  r   binascii
b2a_base64)rg   inpouptes        rJ   rR  _Authenticator.encode  s     c3**W%C3x"}H"#h##A&AcrFl c 
rI   c                 >    U(       d  g[         R                  " U5      $ r  )r6  
a2b_base64)rg   r8  s     rJ   r   _Authenticator.decode  s    ""3''rI   r-  N)	rD   rE   rF   rG   rk   r   rR  r   rH   rB   rI   rJ   r   r   x  s     0(rI   r   z0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov DecrN  r   c           	         [         R                  U 5      nU(       d  g [        UR                  S5         nUR                  S5      n[	        UR                  S5      5      n[	        UR                  S5      5      n[	        UR                  S5      5      n[	        UR                  S5      5      n[	        UR                  S5      5      n[	        UR                  S5      5      n	[	        UR                  S	5      5      n
U	S
-  U
-   S
-  nUS:X  a  U* nXRXFXxSSS4	n[
        R                  " U5      U-
  n[        R                  " U5      $ )Nmonzonendayyearhourr   seczonehzonem<      -r   )	InternalDater  Mon2numr  r  calendartimegmtime	localtime)r  r  rA  rB  rC  rD  rE  r   rF  rG  rH  zonettutcs                 rJ   r	   r	     s    
		D	!B
"((5/
"CHHWE
bhhuo
Crxx Drxx D
bhhuo
C
bhhuo
C!"E!"E "Hub D}u
S"b"	5B
//"

$C>>#rI   c                     SnSn[        [        U 5      5      n U (       a!  [        U S5      u  pX#US-    U-   nU (       a  M!  U$ )NrI   s   ABCDEFGHIJKLMNOP   r   )r  absdivmod)numr  APmods       rJ   r
   r
     sK     C'r
c#h-C
#r?SUmc! # JrI   c                     [         R                  U 5      nU(       d  g[        UR                  S5      R	                  5       5      $ )NrB   r   )Flagsr  r  r  r  )r  r  s     rJ   r   r     s5     
T	B'"((*++rI   c                 x   [        U [        [        45      (       a4  [        R                  " U [
        R                  5      R                  5       nO[        U [        5      (       a.   U R                  n[!        US9n[        U S S S[        U5      06nO`[        U [        5      (       a  U R"                  c  [%        S5      eU nO0[        U [&        5      (       a  U S   U S   4S:X  a  U $ [%        S	5      eS
R)                  [*        UR,                     5      nUR/                  U5      $ ! [         a    [        R                  (       a_  U S   nUS:X  a-  [        R                  " [        R                  " U 5      5      S   n[        R
                  [        R                  4U   * n GN2[        R
                  * n GNFf = f)N   r   )seconds   tzinfozdate_time must be awarer   )r   r   zdate_time not of a known typez"%d-{}-%Y %H:%M:%S %z")rP  r  floatr   fromtimestampr   rS  
astimezoner  	tm_gmtoffr   rO  daylightrP  mktimealtzoner   ra  r   rQ  formatMonthsmonthstrftime)r   dtgmtoffdstr   fmts         rJ   r   r     sh    )c5\**##I$,LL22<*, 		Iu	%	%		(((F &)y!}=Xe_=	Ix	(	(#677	Is	#	#1im(D	(Q899
"
)
)&*:
;C;;s'  	(}}l"9..Y)?@CC==$,,7<<--	(s   &D& &A;F9$F98F9__main__zd:s:)rB   rB   z-dz-s)rT   zIMAP password for z on 	localhostz: zJFrom: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)s
)rD  lfrF  )r  )
/tmp/xxx 1)rs  )ru  z/tmp/yyy)r   
/tmp/yyz 2r   rw  )r?  )z/tmpzyy*)r  rv  )ry  )NSUBJECTtest)r#  )1z(FLAGS INTERNALDATE RFC822))r  )rz  FLAGSz
(\Deleted))ra  rB   )r  rB   )r   rB   )r   rB   )r  rB   )r   )UIDVALIDITY)r  )r/   ALL)r   )r}  )r   rB   c                     [         R                  U < SU< 35        [        [         U 5      " U6 u  p#[         R                  U < SU< SU< 35        US:X  a  US   eU$ )NrN  r  r  r   )Mr   r   )cmdr   r   r   s       rJ   runr  C  sL    	3%&1c?D)	c3/0$;c!f
rI   r   zPROTOCOL_VERSION = %szCAPABILITIES = r?  )z/tmp/zyy%z.*"([^"]+)"$r   r  r  z%sz:(FLAGS INTERNALDATE RFC822.SIZE RFC822.HEADER RFC822.TEXT)z
All tests OK.z
Tests failed.z8
If you would like to see debugging output,
try: %s -d5
)Vr   r6  r   r   rq   r   r  r   rO  rM  r   r   r   ior   r  r  ImportError__all__r   rV   r  r  r   r   r   r   rr   r  r\  rK  rt   ru   r   r  r  rw   rs   rv   r   r	  r   r   r   r  rj  	enumeraterR  rL  r	   r
   r   r   rD   getoptgetpassargvoptlistr   rK   r  stream_commandoptr  rh   getuserUSERPASSWD	test_mesg	test_seq1	test_seq2r  r  rX   r   r   r   r  mlr  r  r  pathr   r  print)nr  s   00rJ   <module>r     sP  .  K K K K K 2 2 "H8
 	
(  ,
,,
 	,
 	A	,

 	,
 	,
 	,
 	,,
 	,,
 	,,
 	
,
 	,,
 	,
 	,
 	,,
  	,!,
" 	,#,
$ 	,%,
& 	,',
( 	,),
* 	+,
, 	A-,
. 	,/,
0 	1,
2 	,3,
4 	A5,
6 	7,
8 		9,
: 	,;,
< 	=,
> 	,?,
@ 	,A,
B 	,C,
D 	,E,
F 	G,
H %,%,%%,%W,
` zz01


45zz   **+RXX
6
**^
$ 

DEJJGH **;RXXG "J H HV$ #2E #2J NN;55 5r*( *(X 
<	A	A#	F&/qr
&;
<&;da188:ac>&;
<F	,%R z chhqrlF; NC$;HED[ N4 1  7D??D__tTEX[EXYZF\gkrv_wwItVn*dD)45)3,I$ !dD),-I)^,AdA77f!!"I	'!*<*<<=	q~~78!HCTN " f./B/2.B"((1+4B$4'"	 0 "HCc4.CDz77b'--/CBPR S " 	 { W/  HJ, =` << j	   
hhqk 
 	s<   P  P#P# D-Q PP#Q3P>>Q*Q0