a DOg]!@sddlZddlZddlZddlZddlmZmZddlmZgdZ e e dj ddZ dd ZGd d d eZeZd eed <ddZddZddZddZddZeedZddZeedZeedZdddZdS) N) ascii_lettersdigits)errors)decode_qencode_qdecode_bencode_blen_qlen_bdecodeencodes=([a-fA-F0-9]{2})cCst|dS)N)bytesfromhexgroupr )mr9/opt/alt/python39/lib64/python3.9/email/_encoded_words.pyArcCs|dd}t|gfS)N_ )replace_q_byte_subber)encodedrrrrCs rc@s,eZdZdededZddZdS) _QByteMaps-!*+/asciicCs.||jvrt|||<nd|||<||S)Nz={:02X})safechrformat)selfkeyrrr __missing__Ms z_QByteMap.__missing__N)__name__ __module__ __qualname__rr rrr"rrrrrIsr_ cCsddd|DS)Ncss|]}t|VqdSN) _q_byte_map.0xrrr Zrzencode_q..)joinbstringrrrrYsrcCstdd|DS)Ncss|]}tt|VqdSr))lenr*r+rrrr.]rzlen_q..)sumr0rrrr \sr cCst|d}|r ddd|nd}z&tj||dd|rDtgngfWStjyztj|ddtgfWYStjyz,tj|dddttgfWYYStjy|tgfYYYS0Yn0Yn0dS)Ns===rT)ZvalidateFs==) r2base64Z b64decoderZInvalidBase64PaddingDefectbinasciiErrorZInvalidBase64CharactersDefectZInvalidBase64LengthDefect)rZpad_errZmissing_paddingrrrrds(   rcCst|dS)Nr)r5Z b64encoder r0rrrrsrcCs&tt|d\}}|d|r dndS)Nr4r)divmodr2)r1Z groups_of_3Zleftoverrrrr sr )qbc Cs|d\}}}}}|d\}}}|}|dd}t||\}}z||}Wnzty|t d|d||d}YnFt t fy|dd}|dkr|t d|d Yn0||||fS) N?*rsurrogateescapez0Encoded word contains bytes not decodable using z charset unknown-8bitzUnknown charset z* in encoded word; decoded as unknown bytes) split partitionlowerr _cte_decodersr UnicodeDecodeErrorappendrZUndecodableBytesDefect LookupErrorUnicodeEncodeErrorZ CharsetError) Zewr&charsetZcteZ cte_stringlangr1Zdefectsstringrrrr s"      r utf-8r(cCs||dkr|dd}n ||}|durTtd|}td|}||dkrPdnd}t||}|rld|}d||||S) Nr?rr>r:r;r=z=?{}{}?{}?{}?=)r _cte_encode_length _cte_encodersr)rJrHencodingrIr1ZqlenZblenrrrrr s    r )rKNr()rer5r6 functoolsrJrrZemailr__all__partialcompilesubrrdictrr*ordrr rrr rCr rNrMr rrrr*s:   &+