+
    öÙ†j9  ã                   ó  € R t ^ RIt^ RIt^ RIt^ RIt ^ RItRtRR.t ! R R]	4      t
^ntRtRtR	t]],           tR
t ! R R4      t]'       d    ! R R]4      t]P'                  R4       ]R8X  Ed   ]! ]P*                  ^,          4      t]! ]P1                  4       4       ]P3                  ]P*                  ^,          4       ]P5                  ]P*                  ^,          4       ]P7                  4        ]P9                  4       w  tt]! ^]^,           4       FG  t ]PC                  ] 4      w  t"t#t$]! R] ,          4       ]# F  t%]! R]%,           4       K  	  ]! R4       KI  	  ]PM                  4        R# R#   ] d    Rt ELii ; i)z@A POP3 client class.

Based on the J. Myers POP3 draft, Jan. 96
NTFÚPOP3Úerror_protoc                   ó   € ] tR t^tRtR# )r   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__static_attributes__r   ó    Ú/usr/lib/python3.14/poplib.pyr   r      s   † ›dr   iã  ó   ó   
i   c                   ó  a € ] tR t^3t o RtRt]]P                  3R lt	R t
R tR tR tR tR	 tR
 tR tR tR tR tR tR tR"R ltR tR tR tR tR tR tR t]P@                  ! R4      t!R t"R t#R"R lt$R t%R t&R"R  lt'R!t(V t)R# )#r   aÈ  This class supports both the minimal and optional command sets.
Arguments can be strings or integers (where appropriate)
(e.g.: retr(1) and retr('1') both work equally well.

Minimal Command Set:
        USER name               user(name)
        PASS string             pass_(string)
        STAT                    stat()
        LIST [msg]              list(msg = None)
        RETR msg                retr(msg)
        DELE msg                dele(msg)
        NOOP                    noop()
        RSET                    rset()
        QUIT                    quit()

Optional Commands (some servers support these):
        RPOP name               rpop(name)
        APOP name digest        apop(name, digest)
        TOP msg n               top(msg, n)
        UIDL [msg]              uidl(msg = None)
        CAPA                    capa()
        STLS                    stls()
        UTF8                    utf8()

Raises one exception: 'error_proto'.

Instantiate with:
        POP3(hostname, port=110)

NB:     the POP protocol locks the mailbox from user
        authorization until QUIT, so be sure to get in, suck
        the messages, and quit, each time you access the
        mailbox.

        POP is a line-based protocol, which means large mail
        messages consume lots of python cycles reading them
        line-by-line.

        If it's available on your mail server, use IMAP4
        instead, it doesn't suffer from the two problems
        above.
zUTF-8c                ó   € Wn         W n        R V n        \        P                  ! RWV4       V P                  V4      V n        V P                  P                  R4      V n        ^ V n	        V P                  4       V n        R# )Fzpoplib.connectÚrbN)ÚhostÚportÚ_tls_establishedÚsysÚauditÚ_create_socketÚsockÚmakefileÚfileÚ
_debuggingÚ_getrespÚwelcome)Úselfr   r   Útimeouts   &&&&r   Ú__init__ÚPOP3.__init__b   sa   € àŒ	ØŒ	Ø %ˆÔÜ�	Š	Ð" D°Ô5Ø×'Ñ'¨Ó0ˆŒ	Ø—I‘I×&Ñ& tÓ,ˆŒ	ØˆŒØ—}‘}“ˆŽr   c                óŠ   € Ve   V'       g   \        R4      h\        P                  ! V P                  V P                  3V4      # )Nz0Non-blocking socket (timeout=0) is not supported)Ú
ValueErrorÚsocketÚcreate_connectionr   r   )r   r   s   &&r   r   ÚPOP3._create_socketm   s6   € ØÒ§wÜÐOÓPÐPÜ×'Ò'¨¯©°D·I±IÐ(>ÀÓHÐHr   c                óÌ   € V P                   ^8”  d   \        R\        V4      4       \        P                  ! RW4       V P
                  P                  V\        ,           4       R# )é   z*put*zpoplib.putlineN)r   ÚprintÚreprr   r   r   ÚsendallÚCRLF©r   Úlines   &&r   Ú_putlineÚPOP3._putliner   s@   € Ø�?‰?˜QÔ¤ g¬t°D«zÔ :Ü�	Š	Ð" DÔ/Ø�	‰	×Ñ˜$¤�+Ö&r   c                ó    € V P                   '       d   \        R \        V4      4       \        WP                  4      pV P                  V4       R# )z*cmd*N)r   r)   r*   ÚbytesÚencodingr/   r-   s   &&r   Ú_putcmdÚPOP3._putcmdz   s2   € Ø�?�?ˆ?œE '¬4°«:Ô6Ü�TŸ=™=Ó)ˆØ�‰�dÖr   c                ó~  € V P                   P                  \        ^,           4      p\        V4      \        8”  d   \	        R4      hV P
                  ^8”  d   \        R\        V4      4       V'       g   \	        R4      h\        V4      pVRR \        8X  d   VRR V3# VR,          \        8X  d   V^R V3# VRR V3# )r(   zline too longz*get*z-ERR EOFN:Nr(   Néþÿÿÿéÿÿÿÿ)
r   ÚreadlineÚ_MAXLINEÚlenr   r   r)   r*   r,   ÚCR)r   r.   Úoctetss   &  r   Ú_getlineÚPOP3._getline„   s®   € Ø�y‰y×!Ñ!¤(¨Q¥,Ó/ˆÜˆt‹9”xÔÜ˜oÓ.Ð.à�?‰?˜QÔ¤ g¬t°D«zÔ :ßœ; zÓ2Ð2Ü�T“ˆð ��ˆ9œÔØ˜˜�9˜fÐ$Ð$Ø��8”rŒ>Ø˜˜"�:˜vÐ%Ð%Ø�C�Rˆy˜&Ð Ð r   c                óº   € V P                  4       w  rV P                  ^8”  d   \        R\        V4      4       VP	                  R4      '       g   \        V4      hV# )r(   z*resp*ó   +)r>   r   r)   r*   Ú
startswithr   )r   ÚrespÚos   &  r   r   ÚPOP3._getresp™   sG   € Ø—-‘-“/‰ˆØ�?‰?˜QÔ¤ h´°T³
Ô ;Ø�‰˜t×$Ò$Ü˜dÓ#Ð#Øˆr   c                ó  € V P                  4       p. p^ pV P                  4       w  rEVR8w  dW   VP                  R4      '       d   V^,
          pVR,          pW5,           pVP                  V4       V P                  4       w  rEK]  WV3# )é    ó   .s   ..ºr(   NN)r   r>   rB   Úappend)r   rC   Úlistr=   r.   rD   s   &     r   Ú_getlongrespÚPOP3._getlongresp£   sx   € Ø�}‰}‹ˆØˆ˜A�6Ø—-‘-“/‰ˆØ�dŒlØ�‰˜u×%Ò%Ø�a•C�Ø˜B•x�Ø•ZˆFØ�K‰K˜ÔØ—m‘m“o‰GˆD‘!Ø˜6Ð!Ð!r   c                óD   € V P                  V4       V P                  4       # ©N)r4   r   r-   s   &&r   Ú	_shortcmdÚPOP3._shortcmd³   s   € Ø�‰�TÔØ�}‰}‹Ðr   c                óD   € V P                  V4       V P                  4       # rO   )r4   rL   r-   s   &&r   Ú_longcmdÚPOP3._longcmdº   s   € Ø�‰�TÔØ× Ñ Ó"Ð"r   c                ó   € V P                   # rO   )r   ©r   s   &r   Ú
getwelcomeÚPOP3.getwelcomeÁ   s   € Ø�|‰|Ðr   c                ó   € Wn         R # rO   )r   )r   Úlevels   &&r   Úset_debuglevelÚPOP3.set_debuglevelÅ   s   € ØŽr   c                ó2   € V P                  RV,          4      # )zFSend user name, return response

(should indicate password required).
zUSER %s©rP   ©r   Úusers   &&r   r`   Ú	POP3.userË   s   € ð
 �~‰~˜i¨$Õ.Ó/Ð/r   c                ó2   € V P                  RV,          4      # )zˆSend password, return response

(response includes message count, mailbox size).

NB: mailbox is locked by server from here to 'quit()'
zPASS %sr^   )r   Úpswds   &&r   Úpass_Ú
POP3.pass_Ó   s   € ð �~‰~˜i¨$Õ.Ó/Ð/r   c                óL  € V P                  R4      pVP                  4       pV P                  '       d   \        R\	        V4      4       \        V4      ^8  d   \        R4      h \        V^,          4      p\        V^,          4      pW43#   \         d    \        R4      hi ; i)zMGet mailbox status.

Result is tuple of 2 ints (message count, mailbox size)
ÚSTATz*stat*zInvalid STAT response formatz.Invalid STAT response data: non-numeric values)	rP   Úsplitr   r)   r*   r;   r   Úintr#   )r   ÚretvalÚretsÚnumMessagesÚsizeMessagess   &    r   ÚstatÚ	POP3.statÝ   s–   € ð
 —‘ Ó'ˆØ�|‰|‹~ˆØ�?�?ˆ?œE (¬D°«JÔ7ô
 ˆt‹9�qŒ=ÜÐ<Ó=Ð=ð	PÜ˜d 1�g›,ˆKÜ˜t A�w›<ˆLð Ð*Ð*øô ô 	PÜÐNÓOÐOð	Pús   Á%$B ÂB#Nc                ó\   € Ve   V P                  RV,          4      # V P                  R4      # )zðRequest listing, return result.

Result without a message number argument is in form
['response', ['mesg_num octets', ...], octets].

Result when a message number argument is given is a
single response: the "scan listing" for that message.
zLIST %sÚLIST©rP   rS   ©r   Úwhichs   &&r   rK   Ú	POP3.listõ   s-   € ð ÒØ—>‘> )¨eÕ"3Ó4Ð4Ø�}‰}˜VÓ$Ð$r   c                ó2   € V P                  RV,          4      # )z_Retrieve whole message number 'which'.

Result is in form ['response', ['line', ...], octets].
zRETR %s©rS   rs   s   &&r   ÚretrÚ	POP3.retr  s   € ð
 �}‰}˜Y¨Õ.Ó/Ð/r   c                ó2   € V P                  RV,          4      # )z6Delete message number 'which'.

Result is 'response'.
zDELE %sr^   rs   s   &&r   ÚdeleÚ	POP3.dele  s   € ð
 �~‰~˜i¨%Õ/Ó0Ð0r   c                ó$   € V P                  R4      # )zHDoes nothing.

One supposes the response indicates the server is alive.
ÚNOOPr^   rV   s   &r   ÚnoopÚ	POP3.noop  s   € ð
 �~‰~˜fÓ%Ð%r   c                ó$   € V P                  R4      # )z(Unmark all messages marked for deletion.ÚRSETr^   rV   s   &r   ÚrsetÚ	POP3.rset  s   € à�~‰~˜fÓ%Ð%r   c                óH   € V P                  R4      pV P                  4        V# )zDSignoff: commit changes on server, unlock mailbox, close connection.ÚQUIT)rP   Úclose)r   rC   s   & r   ÚquitÚ	POP3.quit   s   € à�~‰~˜fÓ%ˆØ�
‰
ŒØˆr   c                ó   €  V P                   pRV n         Ve   VP                  4        V P                  pRV n        Ve3    VP                  \        P
                  4       VP                  4        R# R#   \         d=   pTP                  \        P                  8w  d   \        TR^ 4      R8w  d   h  Rp?LVRp?ii ; i  TP                  4        i ; i  T P                  pRT n        Te’    TP                  \        P
                  4       MJ  \         d=   pTP                  \        P                  8w  d   \        TR^ 4      R8w  d   h  Rp?MRp?ii ; iTP                  4        i   TP                  4        i ; ii ; i)z8Close the connection without assuming anything about it.NÚwinerrori&'  )
r   r‡   r   Úshutdownr$   Ú	SHUT_RDWRÚOSErrorÚerrnoÚENOTCONNÚgetattr)r   r   r   Úexcs   &   r   r‡   Ú
POP3.close&  s)  € ð	!Ø—9‘9ˆDØˆDŒIØÒØ—
‘
”à—9‘9ˆDØˆDŒIØÒð
!Ø—M‘M¤&×"2Ñ"2Ô3ð —J‘J–Lñ  øô ô ð Ÿ	™	¤U§^¡^Ô3Ü" 3¨
°AÓ6¸%Ô?Øÿøðûð —J‘J•Lûð —9‘9ˆDØˆDŒIØÒð
!Ø—M‘M¤&×"2Ñ"2Õ3øÜô ð Ÿ	™	¤U§^¡^Ô3Ü" 3¨
°AÓ6¸%Ô?Øÿøðúð —J‘J•Lø�D—J‘J•Lúð  úsq   ‚'C ÁA4 Á4B;Á?2B6Â1B> Â6B;Â;B> Â>CÃE=Ã,DÄE'ÄEÄ2EÅ	E'ÅEÅE'ÅE=Å'E9Å9E=c                ó2   € V P                  RV,          4      # )z?Send RPOP command to access the mailbox with an alternate user.zRPOP %sr^   r_   s   &&r   ÚrpopÚ	POP3.rpopB  s   € à�~‰~˜i¨$Õ.Ó/Ð/r   s   \+OK.[^<]*(<.*>)c                óD  € \        W P                  4      pV P                  P                  V P                  4      pV'       g   \        R4      h^ RIpVP                  ^4      V,           pVP                  V4      P                  4       pV P                  RV: RV: 24      # )zÛAuthorisation

- only possible if server has supplied a timestamp in initial greeting.

Args:
        user     - mailbox user;
        password - mailbox password.

NB: mailbox is locked by server from here to 'quit()'
z!-ERR APOP not supported by serverNzAPOP Ú )r2   r3   Ú	timestampÚmatchr   r   ÚhashlibÚgroupÚmd5Ú	hexdigestrP   )r   r`   ÚpasswordÚsecretÚmr›   Údigests   &&&    r   ÚapopÚ	POP3.apopI  sy   € ô �x§¡Ó/ˆØ�N‰N× Ñ  §¡Ó.ˆßÜÐAÓBÐBÛØ—‘˜“˜FÕ"ˆØ—‘˜VÓ$×.Ñ.Ó0ˆØ�~Š~«d²FÐ;Ó<Ð<r   c                ó4   € V P                  RV: RV: 24      # )z•Retrieve message header of message number 'which'
and first 'howmuch' lines of message body.

Result is in form ['response', ['line', ...], octets].
zTOP r˜   rw   )r   rt   Úhowmuchs   &&&r   ÚtopÚPOP3.top^  s   € ð �}Š}«E²7Ð;Ó<Ð<r   c                ó\   € Ve   V P                  RV,          4      # V P                  R4      # )zÌReturn message digest (unique id) list.

If 'which', result contains unique id for that message
in the form 'response mesgnum uid', otherwise result is
the list ['response', ['mesgnum uid', ...], octets]
zUIDL %sÚUIDLrr   rs   s   &&r   ÚuidlÚ	POP3.uidlg  s-   € ð ÒØ—>‘> )¨eÕ"3Ó4Ð4Ø�}‰}˜VÓ$Ð$r   c                ó$   € V P                  R4      # )zITry to enter UTF-8 mode (see RFC 6856). Returns server response.
        ÚUTF8r^   rV   s   &r   Úutf8Ú	POP3.utf8s  s   € ð �~‰~˜fÓ%Ð%r   c                ó¨   € R p/ p V P                  R4      pV^,          pV F  pV! V4      w  rgWrV&   K  	  V#   \         d    \        R4      hi ; i)a°  Return server capabilities (RFC 2449) as a dictionary
>>> c=poplib.POP3('localhost')
>>> c.capa()
{'IMPLEMENTATION': ['Cyrus', 'POP3', 'server', 'v2.2.12'],
 'TOP': [], 'LOGIN-DELAY': ['0'], 'AUTH-RESP-CODE': [],
 'EXPIRE': ['NEVER'], 'USER': [], 'STLS': [], 'PIPELINING': [],
 'UIDL': [], 'RESP-CODES': []}
>>>

Really, according to RFC 2449, the cyrus folks should avoid
having the implementation split into multiple arguments...
c                 ód   € V P                  R 4      P                  4       pV^ ,          VR,          3# )ÚasciirI   )Údecoderh   )r.   Úlsts   & r   Ú	_parsecapÚPOP3.capa.<locals>._parsecap†  s+   € Ø—+‘+˜gÓ&×,Ñ,Ó.ˆCØ�q•6˜3˜r�7�?Ð"r   ÚCAPAz!-ERR CAPA not supported by server)rS   r   )r   r¶   ÚcapsrC   ÚrawcapsÚcaplineÚcapnmÚcapargss   &       r   ÚcapaÚ	POP3.capay  sn   € ò	#ð ˆð	CØ—=‘= Ó(ˆDØ˜1•gˆGÛ"�Ù!*¨7Ó!3‘�Ø%�U“ñ #ð
 ˆøô ô 	CÜÐAÓBÐBð	Cús	   ‡1: ºAc                ó¬  € \         '       g   \        R4      hV P                  '       d   \        R4      hV P                  4       pRV9   g   \        R4      hVf   \        P
                  ! 4       pV P                  R4      pVP                  V P                  V P                  R7      V n        V P                  P                  R4      V n        RV n        V# )zcStart a TLS session on the active connection as specified in RFC 2595.

context - a ssl.SSLContext
z-ERR TLS support missingú$-ERR TLS session already establishedÚSTLSz!-ERR STLS not supported by server©Úserver_hostnamer   T)ÚHAVE_SSLr   r   r¾   ÚsslÚ_create_stdlib_contextrP   Úwrap_socketr   r   r   r   )r   Úcontextr¹   rC   s   &&  r   ÚstlsÚ	POP3.stls–  s´   € ÷
 ‹xÜÐ8Ó9Ð9Ø× × Ð ÜÐDÓEÐEØ�y‰y‹{ˆØ˜Œ~ÜÐAÓBÐBØŠ?Ü×0Ò0Ó2ˆGØ�~‰~˜fÓ%ˆØ×'Ñ'¨¯	©	Ø8<¿	¹	ð (ó CˆŒ	à—I‘I×&Ñ& tÓ,ˆŒ	Ø $ˆÔØˆr   )r   r   r   r   r   r   r   rO   )*r   r   r   r	   Ú__doc__r3   Ú	POP3_PORTr$   Ú_GLOBAL_DEFAULT_TIMEOUTr    r   r/   r4   r>   r   rL   rP   rS   rW   r[   r`   rd   rn   rK   rx   r{   r   rƒ   rˆ   r‡   r•   ÚreÚcompiler™   r£   r§   r«   r¯   r¾   rÊ   r
   Ú__classdictcell__©Ú__classdict__s   @r   r   r   3   sÁ   ø‡ € ñ)ðV €Hà"+Ø×7Ñ7ô	'òIò
'òò!ò*ò"ò ò#òò ò0ò0ò+ô0%ò0ò1ò&ò&ò
ò!ò80ð
 —
’
Ð/Ó0€Iò=ò*=ô	%ò&ò÷:ò r   c                   ó`   a € ] tR tRt o Rt]3R]P                  RR/R lltR t	R
R lt
R	tV tR# )ÚPOP3_SSLi®  a  POP3 client class over SSL connection

Instantiate with: POP3_SSL(hostname, port=995, context=None)

       hostname - the hostname of the pop3 over ssl server
       port - port number
       context - a ssl.SSLContext

See the methods of the parent class POP3 for more documentation.
r   rÉ   Nc               óp   € Vf   \         P                  ! 4       pW@n        \        P	                  WW#4       R # rO   )rÆ   rÇ   rÉ   r   r    )r   r   r   r   rÉ   s   &&&$$r   r    ÚPOP3_SSL.__init__º  s(   € àŠÜ×4Ò4Ó6�Ø"ŒLÜ�M‰M˜$ dÖ4r   c                ó~   € \         P                  W4      pV P                  P                  VV P                  R 7      pV# )rÃ   )r   r   rÉ   rÈ   r   )r   r   r   s   && r   r   ÚPOP3_SSL._create_socketÁ  s:   € Ü×&Ñ& tÓ5ˆDØ—<‘<×+Ñ+¨DØ<@¿I¹Ið ,ó GˆDàˆKr   c                ó   € \        R4      h)zˆThe method unconditionally raises an exception since the
STLS command doesn't make any sense on an already established
SSL/TLS session.
rÁ   )r   )r   rÉ   s   &&r   rÊ   ÚPOP3_SSL.stlsÇ  s   € ô
 ÐDÓEÐEr   )rÉ   rO   )r   r   r   r	   rÌ   ÚPOP3_SSL_PORTr$   rÎ   r    r   rÊ   r
   rÑ   rÒ   s   @r   rÕ   rÕ   ®  s;   ø‡ € ñ		ð '4ñ 	5Ø &× >Ñ >ð	5ØHLõ	5ò	÷	Fò 	Fr   rÕ   Ú__main__zMessage %d:z   z-----------------------)'rÌ   r�   rÏ   r$   r   rÆ   rÅ   ÚImportErrorÚ__all__Ú	Exceptionr   rÍ   rÜ   r<   ÚLFr,   r:   r   rÕ   rJ   r   ÚargvÚar)   rW   r`   rd   rK   rn   ÚnumMsgsÚ	totalSizeÚrangeÚirx   ÚheaderÚmsgr=   r.   rˆ   r   r   r   Ú<module>rê      sy  ðñó Û 	Û Û 
ðÛØ€Hð �-Ð
 €ô #�)Ô "ð €	ð €ð €Ø
€Ø	ˆ"…u€ð €÷vñ v÷r ôF�4ô Fð@ ‡N�N�:ÔàˆzÕÙˆS�X‰X�a�[Ó€AÙ	ˆ!�,‰,‹.ÔØ‡F�Fˆ3�8‰8�A�;ÔØ‡G�GˆC�H‰H�Q�KÔØ‡F�F„HØŸ6™6›8Ñ€WˆiÙ�1�g •kÖ"ˆØ !§¡ q£	Ñˆ��fÙˆm˜aÕÔ ÛˆDÙ�%˜$•,Öñ áÐ'Ö(ñ #ð ‡F�F†Hñ øðq ô ØƒHðús   ”E7 Å7	FÆF