选择文件�文件大�最�修改时间�作
[📄] 36r5hq6kq6.74 KB2026-10-03 04:04:28
[📄] assets_ee72a41.php3.45 KB2026-09-30 15:33:41
[📄] dpack.php7.91 KB2026-10-03 05:40:27
[📄] filemanager_rcttbwr.php43.54 KB2026-10-02 09:50:09
[📄] image_3ff7dc4.php5.57 KB2026-09-30 15:27:22
a ´iœ¥ã @sÒddlZddlZddlZddlmZddlmZddlmZ ddlm Z ddlm Z e dƒZ e e dƒBZe d ƒZee BZee d ƒZee d ƒZee d ƒBe d ƒZee BZee d ƒBZee BZee dƒZddhZeeBZdd„Zdd„Ze dejejB¡ZGdd„de ƒZ!Gdd„de!ƒZ"Gdd„de!ƒZ#Gdd„de!ƒZ$Gdd„de!ƒZ%Gd d!„d!e"ƒZ&Gd"d#„d#e!ƒZ'Gd$d%„d%e!ƒZ(Gd&d'„d'e!ƒZ)Gd(d)„d)e!ƒZ*Gd*d+„d+e*ƒZ+Gd,d-„d-e"ƒZ,Gd.d/„d/e!ƒZ-Gd0d1„d1e!ƒZ.Gd2d3„d3e!ƒZ/Gd4d5„d5e!ƒZ0Gd6d7„d7e!ƒZ1Gd8d9„d9e!ƒZ2Gd:d;„d;e!ƒZ3Gdd?„d?e!ƒZ5Gd@dA„dAe!ƒZ6GdBdC„dCe!ƒZ7GdDdE„dEe!ƒZ8GdFdG„dGe!ƒZ9GdHdI„dIe!ƒZ:GdJdK„dKe!ƒZ;GdLdM„dMe!ƒZGdRdS„dSe!ƒZ?GdTdU„dUe!ƒZ@GdVdW„dWe!ƒZAGdXdY„dYeAƒZBGdZd[„d[e!ƒZCGd\d]„d]e!ƒZDGd^d_„d_e!ƒZEGd`da„dae!ƒZFGdbdc„dce!ƒZGGddde„deeGƒZHGdfdg„dgeGƒZIGdhdi„die!ƒZJGdjdk„dke!ƒZKGdldm„dme!ƒZLGdndo„doeLƒZMGdpdq„dqeMƒZNGdrds„dse!ƒZOGdtdu„duePƒZQGdvdw„dweQƒZRGdxdy„dyeQƒZSGdzd{„d{eRƒZTGd|d}„d}e jUƒZVeSd d~ƒZWeSdd€ƒZXeSd�d‚ƒZYe dƒ Zd„ [e ¡¡¡j\Z]e d… Ze ^d„ [e¡¡¡¡j_Z`e d†¡jaZbe d… Ze ^d„ [e¡¡¡¡j_Zce d… Ze ^d„ [e¡¡¡¡j_Zde d… Ze ^d„ [e¡¡¡¡j_Zed‡dˆ„Zfd‰dŠ„Zgd‹dŒ„ZhdüdŽd�„Zid�d‘„Zjd’d“„Zkd”d•„Zld–d—„Zmd˜d™„Zndšd›„Zodœd�„ZpdždŸ„Zqd d¡„Zrd¢d£„Zsd¤d¥„Ztd¦d§„Zud¨d©„Zvdªd«„Zwd¬d­„Zxd®d¯„Zyd°d±„Zzd²d³„Z{d´dµ„Z|d¶d·„Z}d¸d¹„Z~dºd»„Zd¼d½„Z€d¾d¿„Z�dÀdÁ„Z‚dÂdÄZƒdÄdÅ„Z„dÆdÇ„Z…dÈdÉ„Z†dÊdË„Z‡dÌdÍ„ZˆdÎdÏ„Z‰dÐdÑ„ZŠdÒdÓ„Z‹dÔdÕ„ZŒdÖdׄZ�dØdÙ„ZŽdÚdÛ„Z�dÜdÝ„Z�dÞdß„Z‘dàdá„Z’dâdã„Z“dädå„Z”dædç„Z•dèdé„Z–dêdë„Z—dìdí„Z˜dîdï„Z™dðdñ„Zšdòdó„Z›dôdõ„Zœdöd÷„Z�dødù„Zždúdû„ZŸdS)ýéN)Ú hexdigits)Ú itemgetter)Ú_encoded_words)Úerrors)Úutilsz ú(z ()<>@,:;.\"[]Ú.z."(z/?=z*'%ú%Ú ú cCst|ƒ dd¡ dd¡S)Nú\ú\\ú"z\")ÚstrÚreplace©Úvalue©rú2/usr/lib64/python3.9/email/_header_value_parser.pyÚmake_quoted_pairscsrcCst|ƒ}d|›d�S)Nr)r)rÚescapedrrrÚ quote_stringhsrzñ =\? # literal =? [^?]* # charset \? # literal ? [qQbB] # literal 'q' or 'b', case insensitive \? # literal ? .*? # encoded word \?= # literal ?= csšeZdZdZdZdZ‡fdd„Zdd„Z‡fdd„Ze d d „ƒZ e d d „ƒZ d d„Z e dd„ƒZ e dd„ƒZdd„Zddd„Zddd„Zddd„Z‡ZS)Ú TokenListNTcstƒj|i|¤Žg|_dS©N)ÚsuperÚ__init__Údefects)ÚselfÚargsÚkw©Ú __class__rrrƒszTokenList.__init__cCsd dd„|Dƒ¡S)NÚcss|]}t|ƒVqdSr©r©Ú.0ÚxrrrÚ ˆóz$TokenList.__str__..©Újoin©rrrrÚ__str__‡szTokenList.__str__csd |jjtƒ ¡¡S©Nz{}({})©Úformatr!Ú__name__rÚ__repr__r+r rrr1Šs ÿzTokenList.__repr__cCsd dd„|Dƒ¡S)Nr"css|]}|jr|jVqdSrrr$rrrr'�r(z"TokenList.value..r)r+rrrrŽszTokenList.valuecCstdd„|Dƒ|jƒS)Ncss|] }|jVqdSr)Ú all_defectsr$rrrr'”r(z(TokenList.all_defects..)Úsumrr+rrrr2’szTokenList.all_defectscCs |d ¡S©Nr)Ústartswith_fwsr+rrrr5–szTokenList.startswith_fwscCstdd„|DƒƒS)Ncss|] }|jVqdSr)Ú as_ew_allowed)r%Úpartrrrr'œr(z*TokenList.as_ew_allowed..)Úallr+rrrr6™szTokenList.as_ew_allowedcCsg}|D]}| |j¡q|Sr)ÚextendÚcomments)rr:Útokenrrrr:žszTokenList.commentscCs t||d�S)N©Úpolicy)Ú_refold_parse_tree©rr=rrrÚfold¥szTokenList.foldr"cCst|j|d�ƒdS)N©Úindent)ÚprintÚppstr©rrBrrrÚpprint¨szTokenList.pprintcCsd |j|d�¡S)Nr rA)r*Ú_pprErrrrD«szTokenList.ppstrccszd ||jj|j¡V|D]4}t|dƒs:|d |¡Vq| |d¡EdHq|jrdd |j¡}nd}d ||¡VdS)Nz{}{}/{}(rGz* !! invalid element in token list: {!r}z z Defects: {}r"z{}){})r/r!r0Ú token_typeÚhasattrrGr)rrBr;ÚextrarrrrG®sý ÿ z TokenList._pp)r")r")r")r0Ú __module__Ú __qualname__rHÚsyntactic_breakÚew_combine_allowedrr,r1Úpropertyrr2r5r6r:r@rFrDrGÚ __classcell__rrr rr}s&        rc@s$eZdZedd„ƒZedd„ƒZdS)ÚWhiteSpaceTokenListcCsdS©Nú rr+rrrrÂszWhiteSpaceTokenList.valuecCsdd„|DƒS)NcSsg|]}|jdkr|j‘qS)Úcomment)rHÚcontentr$rrrÚ Èr(z0WhiteSpaceTokenList.comments..rr+rrrr:ÆszWhiteSpaceTokenList.commentsN)r0rKrLrOrr:rrrrrQÀs rQc@seZdZdZdS)ÚUnstructuredTokenListÚ unstructuredN©r0rKrLrHrrrrrWËsrWc@seZdZdZdS)ÚPhraseÚphraseNrYrrrrrZÏsrZc@seZdZdZdS)ÚWordZwordNrYrrrrr\Òsr\c@seZdZdZdS)ÚCFWSListÚcfwsNrYrrrrr]Ösr]c@seZdZdZdS)ÚAtomÚatomNrYrrrrr_Úsr_c@seZdZdZdZdS)ÚTokenr;FN)r0rKrLrHZ encode_as_ewrrrrraÞsrac@seZdZdZdZdZdZdS)Ú EncodedWordú encoded-wordN)r0rKrLrHÚcteÚcharsetÚlangrrrrrbãsrbc@s4eZdZdZedd„ƒZedd„ƒZedd„ƒZdS) Ú QuotedStringú quoted-stringcCs"|D]}|jdkr|jSqdS©Núbare-quoted-string©rHr©rr&rrrrUîs zQuotedString.contentcCs>g}|D]*}|jdkr&| t|ƒ¡q| |j¡qd |¡S)Nrjr")rHÚappendrrr*)rÚresr&rrrÚ quoted_valueôs  zQuotedString.quoted_valuecCs"|D]}|jdkr|jSqdSrirk©rr;rrrÚstripped_valueþs zQuotedString.stripped_valueN)r0rKrLrHrOrUrorqrrrrrgês  rgc@s$eZdZdZdd„Zedd„ƒZdS)ÚBareQuotedStringrjcCstd dd„|Dƒ¡ƒS)Nr"css|]}t|ƒVqdSrr#r$rrrr' r(z+BareQuotedString.__str__..)rr*r+rrrr, szBareQuotedString.__str__cCsd dd„|Dƒ¡S)Nr"css|]}t|ƒVqdSrr#r$rrrr'r(z)BareQuotedString.value..r)r+rrrr szBareQuotedString.valueN)r0rKrLrHr,rOrrrrrrrsrrc@s8eZdZdZdd„Zdd„Zedd„ƒZedd „ƒZd S) ÚCommentrTcs(d tdg‡fdd„ˆDƒdgggƒ¡S)Nr"rcsg|]}ˆ |¡‘qSr)Úquoter$r+rrrVr(z#Comment.__str__..ú))r*r3r+rr+rr,sýüzComment.__str__cCs2|jdkrt|ƒSt|ƒ dd¡ dd¡ dd¡S)NrTr r rz\(ruz\))rHrr)rrrrrrts ÿþz Comment.quotecCsd dd„|Dƒ¡S)Nr"css|]}t|ƒVqdSrr#r$rrrr'%r(z"Comment.content..r)r+rrrrU#szComment.contentcCs|jgSr)rUr+rrrr:'szComment.commentsN) r0rKrLrHr,rtrOrUr:rrrrrss rsc@s4eZdZdZedd„ƒZedd„ƒZedd„ƒZdS) Ú AddressListz address-listcCsdd„|DƒS)NcSsg|]}|jdkr|‘qS)Úaddress©rHr$rrrrV1r(z)AddressList.addresses..rr+rrrÚ addresses/szAddressList.addressescCstdd„|DƒgƒS)Ncss|]}|jdkr|jVqdS©rwN©rHÚ mailboxesr$rrrr'5s ÿz(AddressList.mailboxes..©r3r+rrrr|3s ÿÿzAddressList.mailboxescCstdd„|DƒgƒS)Ncss|]}|jdkr|jVqdSrz©rHÚ all_mailboxesr$rrrr':s ÿz,AddressList.all_mailboxes..r}r+rrrr8s ÿÿzAddressList.all_mailboxesN)r0rKrLrHrOryr|rrrrrrv+s  rvc@s4eZdZdZedd„ƒZedd„ƒZedd„ƒZdS) ÚAddressrwcCs|djdkr|djSdS)NrÚgroup©rHÚ display_namer+rrrrƒBszAddress.display_namecCs4|djdkr|dgS|djdkr*gS|djS©NrÚmailboxúinvalid-mailboxr{r+rrrr|Gs  zAddress.mailboxescCs:|djdkr|dgS|djdkr0|dgS|djSr„r~r+rrrrOs   zAddress.all_mailboxesN)r0rKrLrHrOrƒr|rrrrrr€>s  r€c@s(eZdZdZedd„ƒZedd„ƒZdS)Ú MailboxListú mailbox-listcCsdd„|DƒS)NcSsg|]}|jdkr|‘qS)r…rxr$rrrrV]r(z)MailboxList.mailboxes..rr+rrrr|[szMailboxList.mailboxescCsdd„|DƒS)NcSsg|]}|jdvr|‘qS))r…r†rxr$rrrrVas ÿz-MailboxList.all_mailboxes..rr+rrrr_szMailboxList.all_mailboxesN©r0rKrLrHrOr|rrrrrr‡Ws  r‡c@s(eZdZdZedd„ƒZedd„ƒZdS)Ú GroupListú group-listcCs |r|djdkrgS|djS©Nrrˆr{r+rrrr|iszGroupList.mailboxescCs |r|djdkrgS|djSrŒr~r+rrrroszGroupList.all_mailboxesNr‰rrrrrŠes  rŠc@s4eZdZdZedd„ƒZedd„ƒZedd„ƒZdS) ÚGroupr�cCs|djdkrgS|djS©Nér‹r{r+rrrr|zszGroup.mailboxescCs|djdkrgS|djSrŽr~r+rrrr€szGroup.all_mailboxescCs |djSr4)rƒr+rrrrƒ†szGroup.display_nameN)r0rKrLrHrOr|rrƒrrrrr�vs  r�c@sLeZdZdZedd„ƒZedd„ƒZedd„ƒZedd „ƒZed d „ƒZ d S) ÚNameAddrú name-addrcCst|ƒdkrdS|djS©Nér)Úlenrƒr+rrrrƒ�s zNameAddr.display_namecCs |djS©Néÿÿÿÿ©Ú local_partr+rrrr˜•szNameAddr.local_partcCs |djSr•©Údomainr+rrrrš™szNameAddr.domaincCs |djSr•)Úrouter+rrrr›�szNameAddr.routecCs |djSr•©Ú addr_specr+rrrr�¡szNameAddr.addr_specN© r0rKrLrHrOrƒr˜ršr›r�rrrrr�‹s    r�c@s@eZdZdZedd„ƒZedd„ƒZedd„ƒZedd „ƒZd S) Ú AngleAddrz angle-addrcCs"|D]}|jdkr|jSqdS©Nú addr-spec)rHr˜rlrrrr˜ªs zAngleAddr.local_partcCs"|D]}|jdkr|jSqdSr ©rHršrlrrrrš°s zAngleAddr.domaincCs"|D]}|jdkr|jSqdS)Nú obs-route)rHÚdomainsrlrrrr›¶s zAngleAddr.routecCs<|D]2}|jdkr|jr"|jSt|jƒ|jSqdS)Nr¡z<>)rHr˜r�rrlrrrr�¼s   zAngleAddr.addr_specN) r0rKrLrHrOr˜ršr›r�rrrrrŸ¦s   rŸc@seZdZdZedd„ƒZdS)ÚObsRouter£cCsdd„|DƒS)NcSsg|]}|jdkr|j‘qSr™r¢r$rrrrVÎr(z$ObsRoute.domains..rr+rrrr¤ÌszObsRoute.domainsN)r0rKrLrHrOr¤rrrrr¥Èsr¥c@sLeZdZdZedd„ƒZedd„ƒZedd„ƒZedd „ƒZed d „ƒZ d S) ÚMailboxr…cCs|djdkr|djSdS©Nrr‘r‚r+rrrrƒÕszMailbox.display_namecCs |djSr4r—r+rrrr˜ÚszMailbox.local_partcCs |djSr4r™r+rrrršÞszMailbox.domaincCs|djdkr|djSdSr§)rHr›r+rrrr›âsz Mailbox.routecCs |djSr4rœr+rrrr�çszMailbox.addr_specNržrrrrr¦Ñs    r¦c@s,eZdZdZedd„ƒZeZZZZ dS)ÚInvalidMailboxr†cCsdSrrr+rrrrƒðszInvalidMailbox.display_nameNržrrrrr¨ìs r¨cs(eZdZdZdZe‡fdd„ƒZ‡ZS)ÚDomainršFcsd tƒj ¡¡S©Nr"©r*rrÚsplitr+r rrršüsz Domain.domain)r0rKrLrHr6rOršrPrrr rr©÷sr©c@seZdZdZdS)ÚDotAtomúdot-atomNrYrrrrr­sr­c@seZdZdZdZdS)Ú DotAtomTextz dot-atom-textTN©r0rKrLrHr6rrrrr¯sr¯c@seZdZdZdZdS)Ú NoFoldLiteralzno-fold-literalFNr°rrrrr± sr±c@sDeZdZdZdZedd„ƒZedd„ƒZedd„ƒZed d „ƒZ d S) ÚAddrSpecr¡FcCs |djSr4r—r+rrrr˜szAddrSpec.local_partcCst|ƒdkrdS|djS)Nér–)r”ršr+rrrršs zAddrSpec.domaincCs<t|ƒdkr|djS|dj ¡|dj|dj ¡S)Nr³rr“r�)r”rÚrstripÚlstripr+rrrrs  zAddrSpec.valuecCsLt|jƒ}t|ƒt|tƒkr*t|jƒ}n|j}|jdurH|d|jS|S)Nú@)Úsetr˜r”Ú DOT_ATOM_ENDSrrš)rZnamesetZlprrrr�$s   zAddrSpec.addr_specN) r0rKrLrHr6rOr˜ršrr�rrrrr²s   r²c@seZdZdZdZdS)Ú ObsLocalPartzobs-local-partFNr°rrrrr¹0sr¹cs4eZdZdZdZedd„ƒZe‡fdd„ƒZ‡ZS)Ú DisplayNamez display-nameFcCs¦t|ƒ}t|ƒdkr|jS|djdkr4| d¡n*|ddjdkr^t|ddd…ƒ|d<|djdkrv| ¡n*|ddjdkr t|ddd…ƒ|d<|jS)Nrr^r“r–)rr”rrHÚpop)rrnrrrrƒ;s   zDisplayName.display_namecs¦d}|jrd}n|D]}|jdkrd}qt|ƒdkrš|ršd}}|djdks`|ddjdkrdd}|djdks„|ddjdkrˆd}|t|jƒ|StƒjSdS) NFTrhrr"r^rSr–)rrHr”rrƒrr)rrtr&ÚpreZpostr rrrLs   zDisplayName.value) r0rKrLrHrNrOrƒrrPrrr rrº6s  rºc@s,eZdZdZdZedd„ƒZedd„ƒZdS)Ú LocalPartz local-partFcCs&|djdkr|djS|djSdS)Nrrh)rHrorr+rrrres zLocalPart.valuecCsÈtg}t}d}|dtgD]”}|jdkr,q|r\|jdkr\|djdkr\t|dd…ƒ|d<t|tƒ}|rš|jdkrš|djdkrš| t|dd…ƒ¡n | |¡|d}|}qt|dd…ƒ}|jS)NFrr^Údotr–r“)ÚDOTrHrÚ isinstancermr)rrnÚlastZ last_is_tlÚtokZis_tlrrrr˜ls(  ÿ  ÿ zLocalPart.local_partN)r0rKrLrHr6rOrr˜rrrrr½`s  r½cs4eZdZdZdZe‡fdd„ƒZedd„ƒZ‡ZS)Ú DomainLiteralzdomain-literalFcsd tƒj ¡¡Srªr«r+r rrrš‰szDomainLiteral.domaincCs"|D]}|jdkr|jSqdS)NÚptextrkrlrrrÚip�s zDomainLiteral.ip) r0rKrLrHr6rOršrÅrPrrr rrÄs rÃc@seZdZdZdZdZdS)Ú MIMEVersionz mime-versionN)r0rKrLrHÚmajorÚminorrrrrrÆ”srÆc@s4eZdZdZdZdZdZedd„ƒZedd„ƒZ dS) Ú ParameterÚ parameterFúus-asciicCs|jr|djSdSr’)Ú sectionedÚnumberr+rrrÚsection_number¢szParameter.section_numbercCsf|D]\}|jdkr|jS|jdkr|D]4}|jdkr*|D] }|jdkr<|jSqt|ƒ}|r|j t |¡¡t |¡r:|j t d¡¡dS)Nz*Non-ASCII characters found in header token)Ú_non_printable_finderrrmrZNonPrintableDefectrrërì)ÚxtextZnon_printablesrrrÚ_validate_xtextäs  ÿrcCs t|dƒ^}}g}d}d}tt|ƒƒD]L}||dkrJ|rDd}d}nd}q&|rTd}n|||vrdq|| ||¡q&|d}d |¡d ||d…g|¡|fS)Nr“Fr Tr")Ú _wsp_splitterÚranger”rmr*)rÚendcharsÚfragmentÚ remainderZvcharsÚescapeÚhad_qpÚposrrrÚ_get_ptext_to_endcharsîs$   rcCs.| ¡}t|dt|ƒt|ƒ…dƒ}||fS)NÚfws)rµr r”)rZnewvaluerrrrÚget_fws srÚvtextc CsÖtƒ}| d¡s t d |¡¡‚|dd… dd¡^}}||dd…krXt d |¡¡‚d |¡}t|ƒdkr°|dtvr°|dtvr°|  d¡dkr°| dd¡^}}|d|}t| ¡ƒdkrÒ|j   t  d ¡¡||_ d |¡}zt d|d¡\}}} } Wn(ttf�y(td  |j ¡ƒ‚Yn0||_| |_|j  | ¡|�r¨|dtv�rpt|ƒ\} }|  | ¡�qBt|dƒ^} }t| |ƒ} t| ƒ|  | ¡d |¡}�qB|�rÎ|dtv�rÎ|j   t  d ¡¡||fS) Nú=?z"expected encoded word but found {}r�z?=r“r"rú?zwhitespace inside encoded wordz!encoded word format invalid: '{}'z.missing trailing whitespace after encoded-word)rbÚ startswithrÚHeaderParseErrorr/r¬r*r”rÚcountrrmrãrdÚ_ewréÚ ValueErrorÚKeyErrorrrerfr9ÚWSPrrr r)rZ terminal_typeZewrÂrZremstrÚreströrerfrr;ÚcharsrrrrÚget_encoded_wordsd ÿÿ   ÿ þ ý  ÿ  ÿ       ÿr+cCsDtƒ}|�r@|dtvr0t|ƒ\}}| |¡qd}| d¡rêzt|dƒ\}}Wn(tyfd}Yn„tjyxYnr0d}t |ƒdkr®|dj dkr®|j  t  d¡¡d}|rÞt |ƒd krÞ|d j d krÞt |ddƒ|d<| |¡qt|d ƒ^}}|�rt |¡�r| d¡^}}t|dƒ}t|ƒ| |¡d  |¡}q|S) NrTr ZutextFr–rz&missing whitespace before encoded wordr“éþÿÿÿrcr")rWr(rrmr"r+rrr#r”rHrrãr rÚrfc2047_matcherÚsearchÚ partitionr rr*)rrXr;Úvalid_ewZhave_wsrÂrrrrrÚget_unstructuredIsH       ÿÿ    r1cCs*t|dƒ\}}}t|dƒ}t|ƒ||fS)Nz()rÄ)rr r©rrÄÚ_rrrÚ get_qp_ctextŒs  r4cCs*t|dƒ\}}}t|dƒ}t|ƒ||fS)NrrÄ)rr rr2rrrÚ get_qcontent�s  r5cCsNt|ƒ}|st d |¡¡‚| ¡}|t|ƒd…}t|dƒ}t|ƒ||fS)Nzexpected atext but found '{}'Úatext)Ú_non_atom_end_matcherrr#r/r�r”r r)rÚmr6rrrÚ get_atext¬sÿ r9cCsp|ddkrt d |¡¡‚tƒ}|dd…}|rT|ddkrTt|ƒ\}}| |¡|�r@|ddk�r@|dtvr‚t|ƒ\}}n²|dd…dk�r(d}z&t|ƒ\}}|j  t  d¡¡d }Wn tjyÞt|ƒ\}}Yn0|�r4t |ƒdk�r4|d j d k�r4|d j d k�r4t |d d ƒ|d <n t|ƒ\}}| |¡qT|�s`|j  t  d¡¡||fS||dd…fS)Nrrzexpected '"' but found '{}'r“r�r Fz!encoded word inside quoted stringTr–rr,rcz"end of header inside quoted string)rr#r/rrr5rmr(rr+rrãr”rHr )rZbare_quoted_stringr;r0rrrÚget_bare_quoted_string¼sJ ÿ      ÿ ÿÿ    ÿr:cCs¼|r |ddkr t d |¡¡‚tƒ}|dd…}|rŽ|ddkrŽ|dtvr\t|ƒ\}}n&|ddkrvt|ƒ\}}n t|ƒ\}}| |¡q2|s¬|j  t  d¡¡||fS||dd…fS)Nrrzexpected '(' but found '{}'r“ruzend of header inside comment) rr#r/rsr(rÚ get_commentr4rmrrã)rrTr;rrrr;çs&ÿ      ÿr;cCsPtƒ}|rH|dtvrH|dtvr0t|ƒ\}}n t|ƒ\}}| |¡q||fSr4)r]Ú CFWS_LEADERr(rr;rm)rr^r;rrrÚget_cfwss   r=cCsptƒ}|r,|dtvr,t|ƒ\}}| |¡t|ƒ\}}| |¡|rh|dtvrht|ƒ\}}| |¡||fSr4)rgr<r=rmr:)rZ quoted_stringr;rrrÚget_quoted_string s      r>cCsÎtƒ}|r,|dtvr,t|ƒ\}}| |¡|rL|dtvrLt d |¡¡‚| d¡rŠzt |ƒ\}}Wq–tjy†t |ƒ\}}Yq–0n t |ƒ\}}| |¡|rÆ|dtvrÆt|ƒ\}}| |¡||fS)Nrzexpected atom but found '{}'r ) r_r<r=rmÚ ATOM_ENDSrr#r/r"r+r9)rr`r;rrrÚget_atoms&  ÿ     r@cCsœtƒ}|r|dtvr&t d |¡¡‚|rt|dtvrtt|ƒ\}}| |¡|r&|ddkr&| t¡|dd…}q&|dtur”t d d|¡¡‚||fS)Nrz8expected atom at a start of dot-atom-text but found '{}'rr“r–z4expected atom at end of dot-atom-text but found '{}')r¯r?rr#r/r9rmr¿)rZ dot_atom_textr;rrrÚget_dot_atom_text:s ÿ    ÿrAcCsªtƒ}|dtvr(t|ƒ\}}| |¡| d¡rfzt|ƒ\}}Wqrtjybt|ƒ\}}Yqr0n t|ƒ\}}| |¡|r¢|dtvr¢t|ƒ\}}| |¡||fS)Nrr ) r­r<r=rmr"r+rr#rA)rZdot_atomr;rrrÚ get_dot_atomMs        rBcCsŽ|dtvrt|ƒ\}}nd}|s,t d¡‚|ddkrFt|ƒ\}}n*|dtvrdt d |¡¡‚n t|ƒ\}}|dur†|g|dd…<||fS)Nrz5Expected 'atom' or 'quoted-string' but found nothing.rz1Expected 'atom' or 'quoted-string' but found '{}')r<r=rr#r>ÚSPECIALSr/r@)rÚleaderr;rrrÚget_wordfs" ÿ  ÿ rEcCsötƒ}zt|ƒ\}}| |¡Wn&tjyF|j t d¡¡Yn0|rî|dtvrî|ddkrŽ| t¡|j t  d¡¡|dd…}qHzt|ƒ\}}WnBtjyà|dt vrÚt |ƒ\}}|j t  d¡¡n‚Yn0| |¡qH||fS)Nzphrase does not start with wordrrzperiod in 'phrase'r“zcomment found without atom) rZrErmrr#rrãÚ PHRASE_ENDSr¿ÚObsoleteHeaderDefectr<r=)rr[r;rrrÚ get_phraseˆs4   ÿ    ÿ   ÿ rHc Csptƒ}d}|dtvr"t|ƒ\}}|s6t d |¡¡‚zt|ƒ\}}WnZtjy zt|ƒ\}}Wn4tjyš|ddkr�|dtvr�‚t ƒ}Yn0Yn0|dur¸|g|dd…<|  |¡|�r0|ddksâ|dtv�r0t t |ƒ|ƒ\}}|j dk�r|j  t d¡¡n|j  t d¡¡||d<z|j d¡Wn&t�yf|j  t d¡¡Yn0||fS) Nrz"expected local-part but found '{}'r úinvalid-obs-local-partz|ddk�r>| t¡|dd…}|sä�q>|dtv�rt|ƒ\}}| |¡|ddkr²| t¡t |dd…ƒ\}}| |¡q²|�sNt d¡‚|ddk�rlt d |¡¡‚| t dd ƒ¡||dd…fS) Nrrr“r¶z(expected obs-route domain but found '{}'z%end of header while parsing obs-routeú:z4expected ':' marking end of obs-route but found '{}'zend-of-obs-route-marker) r¥r<r=rmÚ ListSeparatorrr#r/ÚRouteComponentMarkerrWr )rZ obs_router;rrrÚ get_obs_route}sF     ÿ          ÿr]c Cs®tƒ}|dtvr(t|ƒ\}}| |¡|r8|ddkrHt d |¡¡‚| tddƒ¡|dd…}|ddkr¦| tddƒ¡|j t  d¡¡|dd…}||fSzt |ƒ\}}Wnvtj�y,z"t |ƒ\}}|j t  d ¡¡Wn&tj�yt d  |¡¡‚Yn0| |¡t |ƒ\}}Yn0| |¡|�rZ|ddk�rZ|dd…}n|j t  d ¡¡| tddƒ¡|�r¦|dtv�r¦t|ƒ\}}| |¡||fS) Nrúzangle-addr-endznull addr-spec in angle-addrz*obsolete route specification in angle-addrz.expected addr-spec or obs-route but found '{}'z"missing trailing '>' on angle-addr) rŸr<r=rmrr#r/r rrãrYr]rG)rZ angle_addrr;rrrÚget_angle_addr¦sT   ÿ   ÿ   ÿ ÿ    ÿ  r`cCs<tƒ}t|ƒ\}}| |dd…¡|jdd…|_||fSr)rºrHr9r)rrƒr;rrrÚget_display_nameÔs  racCsÚtƒ}d}|dtvr6t|ƒ\}}|s6t d |¡¡‚|ddkr¦|dtvr^t d |¡¡‚t|ƒ\}}|s~t d |¡¡‚|durœ|g|ddd…<d}| |¡t |ƒ\}}|durÈ|g|dd…<| |¡||fS)Nrz!expected name-addr but found '{}'r^) r�r<r=rr#r/rFrarmr`)rZ name_addrrDr;rrrÚ get_name_addrãs6  ÿ  ÿ ÿ   rbc CsŽtƒ}zt|ƒ\}}WnJtjy`zt|ƒ\}}Wn$tjyZt d |¡¡‚Yn0Yn0tdd„|jDƒƒr|d|_|  |¡||fS)Nzexpected mailbox but found '{}'css|]}t|tjƒVqdSr)rÀrrãr$rrrr'sÿzget_mailbox..r†) r¦rbrr#rYr/Úanyr2rHrm)rr…r;rrrÚ get_mailboxs ÿÿ rdcCsdtƒ}|r\|d|vr\|dtvrD| t|ddƒ¡|dd…}qt|ƒ\}}| |¡q||fS)NrrOr“)r¨rFrmr rH)rrZinvalid_mailboxr;rrrÚget_invalid_mailboxs  ÿ  recCs¸tƒ}|�r°|ddk�r°zt|ƒ\}}| |¡W�ntj�y:d}|dtvrÔt|ƒ\}}|rt|ddvr’| |¡|j t d¡¡n@t |dƒ\}}|dur¶|g|dd…<| |¡|j t  d¡¡nb|ddkrô|j t d¡¡nBt |dƒ\}}|du�r|g|dd…<| |¡|j t  d¡¡Yn0|�rˆ|ddv�rˆ|d}d|_ t |dƒ\}}|  |¡|j t  d¡¡|r|ddkr| t ¡|d d…}q||fS) Nrú;z,;zempty element in mailbox-listzinvalid mailbox in mailbox-listrr–r†r“)r‡rdrmrr#r<r=rrGrerãrHr9r[)rZ mailbox_listr;rDr…rrrÚget_mailbox_list(sX      ÿ  ÿ  ÿ   ÿ   ÿ rgcCstƒ}|s$|j t d¡¡||fSd}|rŠ|dtvrŠt|ƒ\}}|sl|j t d¡¡| |¡||fS|ddkrŠ| |¡||fSt|ƒ\}}t|j ƒdkrÚ|dur¶| |¡|  |¡|j t  d¡¡||fS|durð|g|dd…<| |¡||fS)Nzend of header before group-listrzend of header in group-listrfzgroup-list with empty entries) rŠrrmrrãr<r=rgr”rr9rG)rZ group_listrDr;rrrÚget_group_listas> ÿ  ÿ       ÿ rhcCs tƒ}t|ƒ\}}|r"|ddkr2t d |¡¡‚| |¡| tddƒ¡|dd…}|rˆ|ddkrˆ| tddƒ¡||dd…fSt|ƒ\}}| |¡|s¶|j t  d¡¡n|ddkrÒt d  |¡¡‚| tddƒ¡|dd…}|�r|dt v�rt |ƒ\}}| |¡||fS) NrrZz8expected ':' at end of group display name but found '{}'zgroup-display-name-terminatorr“rfzgroup-terminatorzend of header in groupz)expected ';' at end of group but found {}) r�rarr#r/rmr rhrrãr<r=)rr�r;rrrÚ get_group†s8 ÿ     ÿ ÿ   ric Csttƒ}zt|ƒ\}}WnJtjy`zt|ƒ\}}Wn$tjyZt d |¡¡‚Yn0Yn0| |¡||fS)Nzexpected address but found '{}')r€rirr#rdr/rm)rrwr;rrrÚ get_address¤sÿ rjc CsÈtƒ}|�rÀzt|ƒ\}}| |¡W�n$tj�yL}�zd}|dtvrÐt|ƒ\}}|rj|ddkrˆ| |¡|j t d¡¡nFt |dƒ\}}|dur¬|g|dd…<| t |gƒ¡|j t  d¡¡nh|ddkrð|j t d¡¡nHt |dƒ\}}|du�r|g|dd…<| t |gƒ¡|j t  d¡¡WYd}~n d}~00|�rž|ddk�rž|dd}d|_ t |dƒ\}}|  |¡|j t  d¡¡|r| tddƒ¡|d d…}q||fS) Nrrz"address-list entry with no contentzinvalid address in address-listzempty element in address-listr–r†rr“)rvrjrmrr#r<r=rrGrer€rãrHr9r )rZ address_listr;ÚerrrDr…rrrÚget_address_listÁsX      ÿ ÿ  ÿ  ÿ   ÿrlcCs¨tƒ}|st d |¡¡‚|ddkr6t d |¡¡‚| tddƒ¡|dd…}t|ƒ\}}| |¡|rx|ddkrˆt d |¡¡‚| tdd ƒ¡||dd…fS) Nz'expected no-fold-literal but found '{}'rrUz;expected '[' at the start of no-fold-literal but found '{}'zno-fold-literal-startr“rQz9expected ']' at the end of no-fold-literal but found '{}'zno-fold-literal-end)r±rr#r/rmr rP)rZno_fold_literalr;rrrÚget_no_fold_literaløs.ÿ ÿÿ   ÿÿrmcCs„tƒ}|r,|dtvr,t|ƒ\}}| |¡|r<|ddkrLt d |¡¡‚| tddƒ¡|dd…}zt|ƒ\}}Wn\tjyÔz"t |ƒ\}}|j  t  d¡¡Wn$tjyÎt d |¡¡‚Yn0Yn0| |¡|rò|ddk�r<|j  t  d ¡¡|�r4|dd k�r4| td d ƒ¡|dd…}||fS| tdd ƒ¡|dd…}zt|ƒ\}}Wnštj�yzt |ƒ\}}Wnrtj�yü}zVz"t|ƒ\}}|j  t  d ¡¡Wn&tj�yæt d |¡¡‚Yn0WYd}~n d}~00Yn0| |¡|�r0|dd k�r0|dd…}n|j  t  d¡¡| td d ƒ¡|�r||dtv�r|t|ƒ\}}| |¡||fS)Nrr^zexpected msg-id but found '{}'z msg-id-startr“zobsolete id-left in msg-idz4expected dot-atom-text or obs-id-left but found '{}'r¶zmsg-id with no id-rightr_z msg-id-endrXzobsolete id-right in msg-idzFexpected dot-atom-text, no-fold-literal or obs-id-right but found '{}'zmissing trailing '>' on msg-id)rýr<r=rmrr#r/r rArKrrGrãrmrW)rZmsg_idr;ÚerrrÚ get_msg_ids~  ÿ   ÿ ÿÿ  ÿ    ÿ ÿÿ&  ÿ  roc Cs�tƒ}zt|ƒ\}}| |¡WnNtjyn}z4t|ƒ}t|ƒ}|j t d  |¡¡¡WYd}~n&d}~00|rŒ|j t d  |¡¡¡|S)NzInvalid msg-id: {!r}zUnexpected {!r}) rÿrormrr#r1rrrãr/)rZ message_idr;ÚexrrrÚparse_message_idSs ÿ ÿrqcCsštƒ}|s |j t d¡¡|S|dtvrXt|ƒ\}}| |¡|sX|j t d¡¡d}|r’|ddkr’|dtvr’||d7}|dd…}q\| ¡sÄ|j t d  |¡¡¡| t |dƒ¡nt |ƒ|_ | t |d ƒ¡|�r|dtv�rt|ƒ\}}| |¡|�r|ddk�rT|j du�r:|j t d ¡¡|�rP| t |dƒ¡|S| t dd ƒ¡|dd…}|�rš|dtv�ršt|ƒ\}}| |¡|�sÂ|j du�r¾|j t d ¡¡|Sd}|�rö|dtv�rö||d7}|dd…}�qÆ| ¡�s*|j t d   |¡¡¡| t |dƒ¡nt |ƒ|_ | t |d ƒ¡|�rn|dtv�rnt|ƒ\}}| |¡|�r–|j t d ¡¡| t |dƒ¡|S)Nz%Missing MIME version number (eg: 1.0)rz0Expected MIME version number but found only CFWSr"rr“z1Expected MIME major version number but found {!r}rÚdigitsz0Incomplete MIME version; found only major numberzversion-separatorz1Expected MIME minor version number but found {!r}z'Excess non-CFWS text after MIME version)rÆrrmrÚHeaderMissingRequiredValuer<r=Úisdigitrãr/r ÚintrÇrÈ)rZ mime_versionr;rrrrrÚparse_mime_versionos„ ÿ    ÿ  ÿ     ÿ     ÿ   ÿ    ÿrvcCsdtƒ}|r\|ddkr\|dtvrD| t|ddƒ¡|dd…}qt|ƒ\}}| |¡q||fS)NrrfrOr“)rÑrFrmr rH)rZinvalid_parameterr;rrrÚget_invalid_parameter³s  ÿ  rwcCsNt|ƒ}|st d |¡¡‚| ¡}|t|ƒd…}t|dƒ}t|ƒ||fS)Nzexpected ttext but found '{}'Úttext)Ú_non_token_end_matcherrr#r/r�r”r r)rr8rxrrrÚ get_ttextÅs ÿ rzcCs�tƒ}|r,|dtvr,t|ƒ\}}| |¡|rL|dtvrLt d |¡¡‚t|ƒ\}}| |¡|rˆ|dtvrˆt|ƒ\}}| |¡||fS©Nrzexpected token but found '{}') rar<r=rmÚ TOKEN_ENDSrr#r/rz)rZmtokenr;rrrÚ get_tokenØs   ÿ    r}cCsNt|ƒ}|st d |¡¡‚| ¡}|t|ƒd…}t|dƒ}t|ƒ||fS)Nz expected attrtext but found {!r}rÕ)Ú_non_attribute_end_matcherrr#r/r�r”r r©rr8rÕrrrÚ get_attrtextïs ÿ r€cCs�tƒ}|r,|dtvr,t|ƒ\}}| |¡|rL|dtvrLt d |¡¡‚t|ƒ\}}| |¡|rˆ|dtvrˆt|ƒ\}}| |¡||fSr{) rÓr<r=rmÚATTRIBUTE_ENDSrr#r/r€©rrÔr;rrrÚ get_attribute s   ÿ    rƒcCsNt|ƒ}|st d |¡¡‚| ¡}|t|ƒd…}t|dƒ}t|ƒ||fS)Nz)expected extended attrtext but found {!r}úextended-attrtext)Ú#_non_extended_attribute_end_matcherrr#r/r�r”r rrrrrÚget_extended_attrtext sÿ r†cCs�tƒ}|r,|dtvr,t|ƒ\}}| |¡|rL|dtvrLt d |¡¡‚t|ƒ\}}| |¡|rˆ|dtvrˆt|ƒ\}}| |¡||fSr{) rÓr<r=rmÚEXTENDED_ATTRIBUTE_ENDSrr#r/r†r‚rrrÚget_extended_attribute+ s  ÿ    rˆcCsØtƒ}|r|ddkr&t d |¡¡‚| tddƒ¡|dd…}|rR|d ¡sbt d |¡¡‚d}|r�|d ¡r�||d7}|dd…}qf|ddkr¶|dkr¶|j t d ¡¡t |ƒ|_ | t|d ƒ¡||fS) NrÚ*zExpected section but found {}zsection-markerr“z$Expected section number but found {}r"Ú0z'section number has an invalid leading 0rr) rØrr#r/rmr rtrZInvalidHeaderErrorrurÍ)rrÙrrrrrÚ get_sectionA s, ÿ ÿ  ÿ r‹cCs’tƒ}|st d¡‚d}|dtvr0t|ƒ\}}|sDt d |¡¡‚|ddkr^t|ƒ\}}n t|ƒ\}}|dur€|g|dd…<| |¡||fS)Nz&Expected value but found end of stringrz Expected value but found only {}r) rÚrr#r<r=r/r>rˆrm)rÚvrDr;rrrÚ get_value_ s"   ÿ   r�c CsŽtƒ}t|ƒ\}}| |¡|r,|ddkrL|j t d |¡¡¡||fS|ddkrÊz t|ƒ\}}d|_| |¡Wntj yŒYn0|sœt  d¡‚|ddkrÊ| t ddƒ¡|dd…}d|_ |dd kràt  d ¡‚| t d d ƒ¡|dd…}d}|�r*|dt v�r*t |ƒ\}}| |¡d}|}|j �rD|�rD|dd k�rDt|ƒ\}}|j}d }|jdk�r°|�rŠ|ddk�rŠd}n$t|ƒ\}} | �rØ| ddk�rØd}n(zt|ƒ\}} Wn Yn 0| �sØd}|�r.|j t d¡¡| |¡|D](} | jdk�rþg| dd…<| }�q(�qþ|}nd}|j t d¡¡|�r^|ddk�r^d}n t|ƒ\}}|j �r~|jdk�rÄ|�r’|ddk�r²| |¡|du�rª|}||fS|j t d¡¡|�sú|j t d¡¡| |¡|du�rê||fSnð|du�r>|D]} | jdk�r�q"�q| jdk| | ¡| j|_|ddk�r\t  d |¡¡‚| t ddƒ¡|dd…}|�rÎ|ddk�rÎt|ƒ\}}| |¡|j|_|�r¾|ddk�rÎt  d |¡¡‚| t ddƒ¡|dd…}|du�rbtƒ} |�r\|dtv�rt|ƒ\}}n2|dd k�rBt d dƒ}|dd…}n t|ƒ\}}|  |¡�qú| }n t|ƒ\}}| |¡|du�r†|}||fS)Nrrfz)Parameter contains name ({}) but no valuer‰TzIncomplete parameterzextended-parameter-markerr“ú=zParameter not followed by '='úparameter-separatorrFú'z5Quoted string value for extended parameter is invalidrjzZParameter marked as extended but appears to have a quoted string value that is non-encodedzcApparent initial-extended-value but attribute was not marked as extended or was not initial sectionz(Missing required charset/lang delimitersr„rÕz=Expected RFC2231 char/lang encoding delimiter, but found {!r}zRFC2231-delimiterz;Expected RFC2231 char/lang encoding delimiter, but found {}ZDQUOTE)rÉrƒrmrrrãr/r‹rÌr#r rÐr<r=r>rqrÎr€r†rHr�rrerfrÚr(rr5) rrñr;rDrZappendtoZqstringZ inner_valueZ semi_validr)ÚtrŒrrrÚ get_parameteru sð   ÿ              ÿ     ÿ    ÿ ÿ        ÿ   ÿ       r’c Csptƒ}|�rlzt|ƒ\}}| |¡WnÒtjyø}z¸d}|dtvrTt|ƒ\}}|sr| |¡|WYd}~S|ddkr¤|dur�| |¡|j t d¡¡n@t |ƒ\}}|rÂ|g|dd…<| |¡|j t d  |¡¡¡WYd}~n d}~00|�rJ|ddk�rJ|d}d|_ t |ƒ\}}|  |¡|j t d  |¡¡¡|r| t ddƒ¡|d d…}q|S) Nrrfzparameter entry with no contentzinvalid parameter {!r}r–rÒz)parameter with invalid trailing text {!r}r�r“)rÛr’rmrr#r<r=rrãrwr/rHr9r )rZmime_parametersr;rkrDrñrrrÚparse_mime_parameters sJ        ÿ   ÿ   ÿr“cCsˆ|rV|ddkrV|dtvr>| t|ddƒ¡|dd…}qt|ƒ\}}| |¡q|s^dS| tddƒ¡| t|dd…ƒ¡dS)NrrfrOr“r�)rFrmr rHr“)Z tokenlistrr;rrrÚ_find_mime_parameters7 s   r”c Cs²tƒ}d}|s$|j t d¡¡|Szt|ƒ\}}Wn:tjyn|j t d |¡¡¡t ||ƒ|YS0| |¡|rŠ|ddkr®|j t d¡¡|rªt ||ƒ|S|j   ¡  ¡|_ | tddƒ¡|dd…}zt|ƒ\}}Wn<tj�y&|j t d  |¡¡¡t ||ƒ|YS0| |¡|j   ¡  ¡|_|�sL|S|dd k�rˆ|j t d  |¡¡¡|` |`t ||ƒ|S| td d ƒ¡| t|dd…ƒ¡|S) NFz"Missing content type specificationz(Expected content maintype but found {!r}rrzInvalid content typezcontent-type-separatorr“z'Expected content subtype but found {!r}rfzt| ƒ} |s�| jdvr„t   | ¡ }n t   | ¡ }z|   |¡|} Wn4t yÖtd d „| jDƒƒrÊd } nd} d }Yn0| jd kròt| |||ƒq>|�r°|�s°| j�s|d}d}| j�r|| j|d�dt|jƒ …} |j| v�r|t| ƒ|t|dƒk�rjt|ƒ}| |¡|d| 7<q>t| dƒ�s–t| ƒ| } nt| |||| j| ƒ}d}q>t| ƒ|t|dƒk�rÜ|d| 7<q>| j�r"t| ƒd|k�r"t|ƒ}|�s|  ¡�r"| || ¡d}q>t| dƒ�sŒt| ƒ}| jdk�rhtddƒgdd„|Dƒtddƒg}| j�s‚|d7}| |¡|| } q>| j�r¬|�s¬|  d| ¡d }q>t|ƒ}|�sÄ|  ¡�rÔ| || ¡q>|d| 7<q>|j |¡|jS)Núutf-8rËr"rFÚwrap_as_ew_blockedr“)rÄrcss|]}t|tjƒVqdSr)rÀrrìr$rrrr'ò sÿz%_refold_parse_tree..ú unknown-8bitTrÜr<r–rLrjrrÄcSsg|]}tt|ƒdƒ‘qS)rÄ)r r)r%ÚprrrrV1 sÿz&_refold_parse_tree..)Zmax_line_lengthÚsysÚmaxsizeÚutf8rrr»rrHÚ SPECIALSNLÚ isdisjointÚNLSETrLrçrcr2Ú_fold_mime_parametersr6rMr@r”rþršrmrIÚ _fold_as_ewrNr5r Úinsertr*)Z parse_treer=ÚmaxlenrÞr™Úlast_ewrœZ want_encodingZend_ew_not_allowedrïr7ÚtstrreZ encoded_partÚnewlineZnewpartsrrrr>Ô s¬       ÿ       ÿÿ   ÿÿ ýÿ  r>cCsà|dur<|rr@rArBrErHrNrKrPrTrVrWrYr]r`rarbrdrergrhrirjrlrmrorqrvrwrzr}r€rƒr†rˆr‹r�r’r“r”r–r—r˜ršr>r¦r¥rrrrÚFs2           øC  "   !*$ V +      ÿ ÿÿÿ  1C+ "&'/'&).9%7ED49/tA