Ë
    CØïiì~  ã                   óŽ  — d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dlmZm Z m!Z! ddl"m#Z#m$Z$ dd	l%m&Z&m'Z'm(Z(m)Z)m*Z* dd
l+m,Z,m-Z-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z; dZ<erddl=m>Z>  G d„ de?«      Z@ G d„ de?«      ZAdeeB   deeeB   eeBeBf   f   fd„ZC	 d'deeBeBf   deBdeeB   fd„ZD G d„ d«      ZE G d„ d«      ZF e9eFe5jŽ                  ¬«       G d„ d e6«      «       ZH G d!„ d"«      ZIee6eBeBf   ZJ G d#„ d$e6«      ZK G d%„ d&«      ZLy)(é    N)Údeque)ÚTracebackType)ÚTYPE_CHECKINGÚAnyÚAsyncIteratorÚDequeÚDictÚIteratorÚListÚMappingÚOptionalÚSequenceÚTupleÚTypeÚUnionÚcast)Ú	parse_qslÚunquoteÚ	urlencode)ÚCIMultiDictÚCIMultiDictProxyÚMultiMappingé   )ÚZLibCompressorÚZLibDecompressor)ÚCONTENT_DISPOSITIONÚCONTENT_ENCODINGÚCONTENT_LENGTHÚCONTENT_TRANSFER_ENCODINGÚCONTENT_TYPE)ÚCHARÚTOKENÚparse_mimetypeÚreify)ÚHeadersParser)ÚJsonPayloadÚLookupErrorÚOrderÚPayloadÚStringPayloadÚget_payloadÚpayload_type)ÚStreamReader)ÚMultipartReaderÚMultipartWriterÚBodyPartReaderÚBadContentDispositionHeaderÚBadContentDispositionParamÚparse_content_dispositionÚcontent_disposition_filename)ÚClientResponsec                   ó   — e Zd Zy)r1   N©Ú__name__Ú
__module__Ú__qualname__© ó    úK/var/www/html/aiagents/fe/lib/python3.12/site-packages/aiohttp/multipart.pyr1   r1   B   ó   „ Ør<   r1   c                   ó   — e Zd Zy)r2   Nr7   r;   r<   r=   r2   r2   F   r>   r<   r2   ÚheaderÚreturnc                 óR  ‡— dt         dt        fd„Šdt         dt        fd„}dt         dt        fˆfd„}dt         dt        fd„}dt         dt        fd„}dj                  t        t        j
                  t        «      «      d	œd
t         dt         dt         fd„}| sd i fS | j                  d«      ^}} ‰|«      s"t        j                  t        | «      «       d i fS i }|�r	|j                  d«      }	d|	vr"t        j                  t        | «      «       d i fS |	j                  dd«      \  }
}|
j                  «       j                  «       }
|j                  «       }|
|v r"t        j                  t        | «      «       d i fS  ‰|
«      st        j                  t        |	«      «       ŒÊ ||
«      r> ||«      r ||dd «      }�n ‰|«      �st        j                  t        |	«      «       �Œ ||
«      rT ||«      r|j                  dd«      \  }}}|xs d}n t        j                  t        |	«      «       �Œ]	 t!        ||d«      }n—d} ||«      rd} ||dd j                  d«      «      }nL ‰|«      rd}nA|r?|› d|d   › �} ||«      r-|j                  d«        ||dd j                  d«      «      }d}|r"t        j                  t        | «      «       d i fS |||
<   |r�Œ	|j                  «       |fS # t"        $ r" t        j                  t        |	«      «       Y �ŒHw xY w)NÚstringrA   c                 ó@   — t        | «      xr t        t        | «      k\  S ©N)Úboolr"   Úset©rC   s    r=   Úis_tokenz+parse_content_disposition.<locals>.is_tokenM   s   € Ü�F‹|Ò4¤¬¨V«Ñ 4Ð4r<   c                 ó.   — | d   | d   cxk(  xr dk(  S c S )Nr   éÿÿÿÿú"r;   rH   s    r=   Ú	is_quotedz,parse_content_disposition.<locals>.is_quotedP   s    € Ø�a‰y˜F 2™JÖ-¨#Ñ-Ð-Ñ-Ð-r<   c                 ó@   •—  ‰| «      xr | j                  d«      dk(  S )Nú'é   )Úcount)rC   rI   s    €r=   Ú
is_rfc5987z-parse_content_disposition.<locals>.is_rfc5987S   s!   ø€ Ù˜ÓÒ: F§L¡L°Ó$5¸Ñ$:Ð:r<   c                 ó$   — | j                  d«      S )NÚ*)ÚendswithrH   s    r=   Úis_extended_paramz4parse_content_disposition.<locals>.is_extended_paramV   s   € Ø�‰˜sÓ#Ð#r<   c                 ó†   — | j                  d«      dz   }|sy| j                  d«      r| |d n| |d  }|j                  «       S )NrT   r   FrK   )ÚfindrU   Úisdigit)rC   ÚposÚ	substrings      r=   Úis_continuous_paramz6parse_content_disposition.<locals>.is_continuous_paramY   sH   € Ø�k‰k˜#Ó Ñ"ˆÙØØ&,§o¡o°cÔ&:�F˜3˜r‘NÀÀsÀtÀˆ	Ø× Ñ Ó"Ð"r<   Ú )ÚcharsÚtextr^   c                ó8   — t        j                  d|› d�d| «      S )Nz\\([z])z\1)ÚreÚsub)r_   r^   s     r=   Úunescapez+parse_content_disposition.<locals>.unescape`   s   € Ü�v‰v˜˜u˜g RÐ(¨%°Ó6Ð6r<   ú;r   ú=r   rK   rO   rP   úutf-8ÚstrictTFz\/)ÚstrrF   ÚjoinÚmapra   Úescaper!   ÚsplitÚwarningsÚwarnr1   ÚpopÚlowerÚstripÚlstripr2   r   ÚUnicodeDecodeError)r@   rM   rR   rV   r\   rc   ÚdisptypeÚpartsÚparamsÚitemÚkeyÚvalueÚencodingÚ_ÚfailedÚ_valuerI   s                   @r=   r3   r3   J   s  ø€ ð5œð 5¤ó 5ð.œ#ð .¤$ó .ð;œ3ð ;¤4õ ;ð$¤#ð $¬$ó $ð#¤Cð #¬Dó #ð -/¯G©G´C¼¿	¹	Ä4Ó4HÓ,Iò 7”sð 7¤cð 7Ìcó 7ñ Ø�Rˆxˆà—|‘| CÓ(Ð€HˆuÙ�HÔÜ�‰Ô1°&Ó9Ô:Ø�Rˆxˆà€FÚ
Ø�y‰y˜‹|ˆà�d‰?Ü�M‰MÔ5°fÓ=Ô>Ø˜�8ˆOà—Z‘Z  QÓ'‰
ˆˆUØ�i‰i‹k×ÑÓ!ˆØ—‘“ˆà�&‰=Ü�M‰MÔ5°fÓ=Ô>Ø˜�8ˆOá˜Œ}Ü�M‰MÔ4°TÓ:Ô;Øá  Ô%Ù˜ÔÙ   q¨ Ó-’Ù˜e•_Ü—‘Ô8¸Ó>Ô?Ùá˜sÔ#Ù˜%Ô Ø%*§[¡[°°aÓ%8Ñ"�˜!˜UØ#Ò. w‘ä—‘Ô8¸Ó>Ô?ÙðÜ  x°Ó:‘ð ˆFÙ˜ÔØ�Ù   q¨ ×!3Ñ!3°EÓ!:Ó;‘Ù˜%”Ø‘Ùð "˜7 ! E¨!¡H :Ð.�Ù˜VÔ$Ø—I‘I˜a”LÙ$ V¨A¨b \×%8Ñ%8¸Ó%?Ó@�EØ"�FáÜ—‘Ô9¸&ÓAÔBØ˜R�x�àˆˆs‰óy ð| �>‰>Ó˜VÐ#Ð#øô5 &ò Ü—‘Ô8¸Ó>Ô?Úðús   È;K; Ë;'L&Ì%L&rv   Únamec                 óÊ  ‡
— d|z  Š
| sy ‰
| v r| ‰
   S || v r| |   S g }t        ˆ
fd„| j                  «       D «       «      }t        |«      D ]T  \  }\  }}|j                  dd«      \  }}|j	                  d«      r|d d }|t        |«      k(  r|j                  |«       ŒT n |sy dj                  |«      }d|v r)|j                  dd«      \  }	}}|	xs d	}	t        ||	d
«      S |S )Nz%s*c              3   óP   •K  — | ]  \  }}|j                  ‰«      sŒ||f–— Œ y ­wrE   )Ú
startswith)Ú.0rx   ry   Úname_sufs      €r=   ú	<genexpr>z/content_disposition_filename.<locals>.<genexpr>¹   s)   øè ø€ ò 
Ù'˜S %¸S¿^¹^ÈHÕ=UˆS�%ŒLñ
ùs   ƒ&�	&rT   r   rK   r]   rO   rP   rf   rg   )	ÚsortedÚitemsÚ	enumeraterl   rU   rh   Úappendri   r   )rv   r~   ru   ÚfnparamsÚnumrx   ry   r{   Útailrz   rƒ   s             @r=   r4   r4   ­   s  ø€ ð �t‰|€HÙØØ	�VÑ	Ø�hÑÐØ	�‰Ø�d‰|ÐàˆÜó 
Ø+1¯<©<«>ô
ó 
ˆô "+¨8Ó!4ò 	ÑˆC‘�#�uØ—i‘i  QÓ'‰GˆAˆtØ�}‰}˜SÔ!Ø˜C˜R�y�Ø”s˜3“xÒØ—‘˜UÕ#áð	ñ ØØ—‘˜“ˆØ�%‰<Ø!&§¡¨S°!Ó!4ÑˆH�a˜ØÒ* 7ˆHÜ˜5 (¨HÓ5Ð5Øˆr<   c                   ój   — e Zd ZdZ	 	 	 	 	 	 dd„Zdd„Zded   fd„Zdefd„Z	de
ed      fd	„Zdd
„Zy)ÚMultipartResponseWrapperzzWrapper around the MultipartReader.

    It takes care about
    underlying connection and close it when it needs in.
    rA   Nc                 ó    — || _         || _        y rE   )ÚrespÚstream)Úselfr�   r�   s      r=   Ú__init__z!MultipartResponseWrapper.__init__Õ   s   € ð
 ˆŒ	Øˆ�r<   c                 ó   — | S rE   r;   ©r‘   s    r=   Ú	__aiter__z"MultipartResponseWrapper.__aiter__Ý   ó   € Øˆr<   )r.   r0   c              ƒ   óR   K  — | j                  «       ƒ d {  –—† }|€t        ‚|S 7 Œ­wrE   ©ÚnextÚStopAsyncIteration©r‘   Úparts     r=   Ú	__anext__z"MultipartResponseWrapper.__anext__à   ó+   è ø€ ð —Y‘Y“[× ˆØˆ<Ü$Ð$Øˆð !úó   ‚'–%—'c                 óJ   — | j                   j                  j                  «       S )z2Returns True when all response data had been read.)r�   ÚcontentÚat_eofr”   s    r=   r¢   zMultipartResponseWrapper.at_eofè   s   € à�y‰y× Ñ ×'Ñ'Ó)Ð)r<   c              ƒ   ó¾   K  — | j                   j                  «       ƒ d{  –—† }| j                   j                  «       r| j                  «       ƒ d{  –—†  |S 7 Œ87 Œ­w)z#Emits next multipart reader object.N)r�   r™   r¢   Úrelease©r‘   rw   s     r=   r™   zMultipartResponseWrapper.nextì   sJ   è ø€ ð —[‘[×%Ñ%Ó'×'ˆØ�;‰;×ÑÔØ—,‘,“.× Ð Øˆð (øà ús!   ‚A A¡1AÁAÁAÁAc              ƒ   óT   K  — | j                   j                  «       ƒ d{  –—†  y7 Œ­w)z_Release the connection gracefully.

        All remaining content is read to the void.
        N)r�   r¤   r”   s    r=   r¤   z MultipartResponseWrapper.releaseõ   s   è ø€ ð
 �i‰i×ÑÓ!×!Ò!ús   ‚( &¡()r�   r5   r�   r.   rA   N)rA   r�   ©rA   N)r8   r9   r:   Ú__doc__r’   r•   r   r�   rF   r¢   r   r™   r¤   r;   r<   r=   r�   r�   Î   si   „ ñðàðð "ðð 
ó	óðà	Ð2Ñ	3óð*˜ó *ðà	�%Ð;Ñ<Ñ	=óô"r<   r�   c                   ó²  — e Zd ZdZdZdedddeddfd	„Zded    fd
„Z	defd„Z
dee   fd„Zddœdedefd„Zefdedefd„Zdedefd„Zdedefd„Zdefd„Zd%d„Zddœdee   defd„Zddœdee   deeeef      fd„Zddœdee   deeeef      fd„Zdefd„Zdedefd„Zdedefd„Zdedefd „Z d!edefd"„Z!e"dee   fd#„«       Z#e"dee   fd$„«       Z$y)&r0   z&Multipart reader for single body part.i    ÚboundaryÚheadersúCIMultiDictProxy[str]r¡   rA   Nc                 óú   — || _         || _        || _        d| _        | j                   j	                  t
        d «      }|�t        |«      nd | _        d| _        t        «       | _
        d | _        d| _        i | _        y )NFr   )r«   Ú	_boundaryÚ_contentÚ_at_eofÚgetr   ÚintÚ_lengthÚ_read_bytesr   Ú_unreadÚ_prev_chunkÚ_content_eofÚ_cache)r‘   rª   r«   r¡   Úlengths        r=   r’   zBodyPartReader.__init__  sp   € ð ˆŒØ!ˆŒØˆŒØˆŒØ—‘×!Ñ!¤.°$Ó7ˆØ&,Ð&8”s˜6”{¸dˆŒØˆÔÜ%*£WˆŒØ,0ˆÔØˆÔØ&(ˆ�r<   c                 ó   — | S rE   r;   r”   s    r=   r•   zBodyPartReader.__aiter__  r–   r<   c              ƒ   óR   K  — | j                  «       ƒ d {  –—† }|€t        ‚|S 7 Œ­wrE   r˜   r›   s     r=   r�   zBodyPartReader.__anext__  s)   è ø€ Ø—Y‘Y“[× ˆØˆ<Ü$Ð$Øˆð !úrŸ   c              ƒ   óH   K  — | j                  «       ƒ d {  –—† }|sy |S 7 Œ	­wrE   )Úreadr¥   s     r=   r™   zBodyPartReader.next  s$   è ø€ Ø—Y‘Y“[× ˆÙØØˆð !ús   ‚"– —
"F©Údecoder¿   c             ƒ   óü   K  — | j                   ryt        «       }| j                   s?|j                  | j                  | j                  «      ƒ d{  –—† «       | j                   sŒ?|r| j                  |«      S |S 7 Œ*­w)z»Reads body part data.

        decode: Decodes data following by encoding
                method from Content-Encoding header. If it missed
                data remains untouched
        r<   N)r°   Ú	bytearrayÚextendÚ
read_chunkÚ
chunk_sizer¿   )r‘   r¿   Údatas      r=   r½   zBodyPartReader.read   sa   è ø€ ð �<Š<ØÜ‹{ˆØ—,’,Ø�K‰K˜dŸo™o¨d¯o©oÓ>×>Ô?ð —,“,áØ—;‘;˜tÓ$Ð$Øˆð ?ús   ‚AA<ÁA:ÁA<Á%A<Úsizec              ƒ   ó¢  K  — | j                   ry| j                  r| j                  |«      ƒ d{  –—† }n| j                  |«      ƒ d{  –—† }| xj                  t        |«      z  c_        | j                  | j                  k(  rd| _         | j                   r.| j                  j                  «       ƒ d{  –—† }d|k(  sJ d«       ‚|S 7 Œ˜7 Œ€7 Œ­w)zWReads body part content chunk of the specified size.

        size: chunk size
        r<   NTó   
z3reader did not read all the data or it is malformed)r°   r³   Ú_read_chunk_from_lengthÚ_read_chunk_from_streamr´   Úlenr¯   Úreadline)r‘   rÆ   ÚchunkÚclrfs       r=   rÃ   zBodyPartReader.read_chunk0  s¶   è ø€ ð
 �<Š<ØØ�<Š<Ø×6Ñ6°tÓ<×<‰Eà×6Ñ6°tÓ<×<ˆEà×ÒœC ›JÑ&ÕØ×Ñ˜tŸ|™|Ò+ØˆDŒLØ�<Š<ØŸ™×/Ñ/Ó1×1ˆDà˜4’ðEàDóEØàˆð =øà<øð 2ús4   ‚.C°C	±CÁ
CÁA+CÂ6CÂ7CÃCÃCc              ƒ   óÄ   K  — | j                   €J d«       ‚t        || j                   | j                  z
  «      }| j                  j	                  |«      ƒ d {  –—† }|S 7 Œ­w)Nz(Content-Length required for chunked read)r³   Úminr´   r¯   r½   )r‘   rÆ   rÄ   rÍ   s       r=   rÉ   z&BodyPartReader._read_chunk_from_lengthF  sZ   è ø€ ð �|‰|Ð'ÐSÐ)SÓSÐ'Ü˜˜tŸ|™|¨d×.>Ñ.>Ñ>Ó?ˆ
Ø—m‘m×(Ñ(¨Ó4×4ˆØˆð 5ús   ‚AA ÁAÁA c           
   ƒ   ó
  K  — |t        | j                  «      dz   k\  sJ d«       ‚| j                  d u }|r(| j                  j	                  |«      ƒ d {  –—† | _        | j                  j	                  |«      ƒ d {  –—† }| xj
                  t        | j                  j                  «       «      z  c_        | j
                  dk  sJ d«       ‚| j                  €J ‚| j                  |z   }d| j                  z   }|r|j                  |«      }n;|j                  |t        dt        | j                  «      t        |«      z
  «      «      }|dk\  r�t        j                  «       5  t        j                  dt        ¬«       | j                  j                  ||d  «       d d d «       ||kD  r| j                  d | | _        |t        | j                  «      | }|sd	| _        | j                  }|| _        |S 7 �Œž7 �Œy# 1 sw Y   Œ^xY w­w)
NrP   z<Chunk size must be greater or equal than boundary length + 2é   zReading after EOFrÈ   r   Úignore)ÚcategoryT)rË   r®   r¶   r¯   r½   r·   r²   r¢   rX   Úmaxrm   Úcatch_warningsÚfilterwarningsÚDeprecationWarningÚunread_datar°   )r‘   rÆ   Úfirst_chunkrÍ   Úwindowrb   ÚidxÚresults           r=   rÊ   z&BodyPartReader._read_chunk_from_streamN  sÎ  è ø€ ð ”C˜Ÿ™Ó'¨!Ñ+Ò+ð	JàIó	JØ+à×&Ñ&¨$Ð.ˆÙØ%)§]¡]×%7Ñ%7¸Ó%=×=ˆDÔà—m‘m×(Ñ(¨Ó.×.ˆØ×ÒœS §¡×!5Ñ!5Ó!7Ó8Ñ8ÕØ× Ñ  1Ò$Ð9Ð&9Ó9Ð$Ø×ÑÐ+Ð+Ð+Ø×!Ñ! EÑ)ˆØ˜Ÿ™Ñ&ˆÙØ—+‘+˜cÓ"‰Cà—+‘+˜c¤3 q¬#¨d×.>Ñ.>Ó*?Ä#ÀcÃ(Ñ*JÓ#KÓLˆCØ�!Š8ä×(Ñ(Ó*ñ 8Ü×'Ñ'¨Ô;MÕNØ—‘×)Ñ)¨&°°¨,Ô7÷8ð �cŠzØ#'×#3Ñ#3°D°SÐ#9�Ô Øœ3˜t×/Ñ/Ó0°3Ð7ˆEÙØ#�”Ø×!Ñ!ˆØ ˆÔØˆð1  >ùà.ù÷8ð 8üs>   ‚AHÁG1Á'HÁ;G4Á<C$HÅ :G7ÆAHÇ4HÇ7H Ç<Hc              ƒ   óh  K  — | j                   ry| j                  r| j                  j                  «       }n"| j                  j	                  «       ƒ d{  –—† }|j                  | j                  «      r[|j                  d«      }| j                  }| j                  dz   }||k(  s||k(  r#d| _         | j                  j                  |«       y|S | j                  j	                  «       ƒ d{  –—† }|j                  | j                  «      r|dd }| j                  j                  |«       |S 7 ŒÙ7 ŒC­w)z Reads body part by line by line.r<   NrÈ   ó   --Téþÿÿÿ)	r°   rµ   Úpopleftr¯   rÌ   r�   r®   Úrstriprˆ   )r‘   ÚlineÚslinerª   Úlast_boundaryÚ	next_lines         r=   rÌ   zBodyPartReader.readlinep  sý   è ø€ à�<Š<Øà�<Š<Ø—<‘<×'Ñ'Ó)‰DàŸ™×/Ñ/Ó1×1ˆDà�?‰?˜4Ÿ>™>Ô*ð —K‘K Ó(ˆEØ—~‘~ˆHØ ŸN™N¨UÑ2ˆMà˜Ò  E¨]Ò$:Ø#�”Ø—‘×#Ñ# DÔ)Øð ˆð #Ÿm™m×4Ñ4Ó6×6ˆIØ×#Ñ# D§N¡NÔ3Ø˜C˜R�y�Ø�L‰L×Ñ 	Ô*àˆð' 2øð 7ús&   ‚AD2ÁD.ÁBD2Ã,D0Ã-AD2Ä0D2c              ƒ   ó¤   K  — | j                   ry| j                   s1| j                  | j                  «      ƒ d{  –—†  | j                   sŒ0yy7 Œ­w)z0Like read(), but reads all the data to the void.N)r°   rÃ   rÄ   r”   s    r=   r¤   zBodyPartReader.release�  s9   è ø€ à�<Š<ØØ—,’,Ø—/‘/ $§/¡/Ó2×2Ð2ð —,•,Ø2ús   ‚8AºA»AÁA)rz   rz   c             ƒ   ó�   K  — | j                  d¬«      ƒ d{  –—† }|xs | j                  d¬«      }|j                  |«      S 7 Œ+­w)z;Like read(), but assumes that body part contains text data.Tr¾   Nrf   ©Údefault)r½   Úget_charsetr¿   ©r‘   rz   rÅ   s      r=   r_   zBodyPartReader.text”  sG   è ø€ à—Y‘Y d�YÓ+×+ˆð Ò@˜t×/Ñ/¸Ð/Ó@ˆØ�{‰{˜8Ó$Ð$ð	 ,ús   ‚A˜A™,Ac             ƒ   óò   K  — | j                  d¬«      ƒ d{  –—† }|sy|xs | j                  d¬«      }t        t        t        t
        f   t        j                  |j                  |«      «      «      S 7 Œ\­w)z<Like read(), but assumes that body parts contains JSON data.Tr¾   Nrf   ré   )	r½   rë   r   r	   rh   r   ÚjsonÚloadsr¿   rì   s      r=   rî   zBodyPartReader.jsonœ  sc   è ø€ à—Y‘Y d�YÓ+×+ˆÙØØÒ@˜t×/Ñ/¸Ð/Ó@ˆÜ”Dœœc˜‘N¤D§J¡J¨t¯{©{¸8Ó/DÓ$EÓFÐFð	 ,ús   ‚A7˜A5™AA7c             ƒ   ó
  K  — | j                  d¬«      ƒ d{  –—† }|sg S |�|}n| j                  d¬«      }	 |j                  «       j                  |«      }t        |d|¬«      S 7 ŒM# t        $ r t        d|z  «      ‚w xY w­w)zFLike read(), but assumes that body parts contain form urlencoded data.Tr¾   Nrf   ré   z'data cannot be decoded with %s encoding)Úkeep_blank_valuesrz   )r½   rë   râ   r¿   rs   Ú
ValueErrorr   )r‘   rz   rÅ   Úreal_encodingÚdecoded_datas        r=   ÚformzBodyPartReader.form¤  s›   è ø€ à—Y‘Y d�YÓ+×+ˆÙØˆIØÐØ$‰Mà ×,Ñ,°WÐ,Ó=ˆMð	XØŸ;™;›=×/Ñ/°Ó>ˆLô ØØ"Ø"ô
ð 	
ð ,ùô "ò 	XÜÐFÈÑVÓWÐWð	Xüs&   ‚B˜A&™B¹A( ÁBÁ(B Â Bc                 ó   — | j                   S )z<Returns True if the boundary was reached or False otherwise.©r°   r”   s    r=   r¢   zBodyPartReader.at_eof¸  ó   € à�|‰|Ðr<   rÅ   c                 ó’   — t         | j                  v r| j                  |«      }t        | j                  v r| j	                  |«      S |S )z�Decodes data.

        Decoding is done according the specified Content-Encoding
        or Content-Transfer-Encoding headers value.
        )r   r«   Ú_decode_content_transferr   Ú_decode_content)r‘   rÅ   s     r=   r¿   zBodyPartReader.decode¼  sB   € ô %¨¯©Ñ4Ø×0Ñ0°Ó6ˆDÜ˜tŸ|™|Ñ+Ø×'Ñ'¨Ó-Ð-Øˆr<   c                 óÈ   — | j                   j                  t        d«      j                  «       }|dk(  r|S |dv rt	        |d¬«      j                  |«      S t        d|› �«      ‚)Nr]   Úidentity>   ÚgzipÚdeflateT)rz   Úsuppress_deflate_headerúunknown content encoding: )r«   r±   r   rp   r   Údecompress_syncÚRuntimeError©r‘   rÅ   rz   s      r=   rû   zBodyPartReader._decode_contentÈ  sl   € Ø—<‘<×#Ñ#Ô$4°bÓ9×?Ñ?ÓAˆØ�zÒ!ØˆKØÐ*Ñ*Ü#Ø!Ø(,ô÷ ‰o˜dÓ#ð$ô
 Ð7¸°zÐBÓCÐCr<   c                 ó  — | j                   j                  t        d«      j                  «       }|dk(  rt	        j
                  |«      S |dk(  rt        j                  |«      S |dv r|S t        dj                  |«      «      ‚)Nr]   Úbase64úquoted-printable)ÚbinaryÚ8bitÚ7bitú%unknown content transfer encoding: {})
r«   r±   r   rp   r  Ú	b64decodeÚbinasciiÚa2b_qpr  Úformatr  s      r=   rú   z'BodyPartReader._decode_content_transferÔ  s|   € Ø—<‘<×#Ñ#Ô$=¸rÓB×HÑHÓJˆà�xÒÜ×#Ñ# DÓ)Ð)ØÐ+Ò+Ü—?‘? 4Ó(Ð(ØÐ3Ñ3ØˆKäØ:×AÑAÀ(ÓKóð r<   rê   c                 ó�   — | j                   j                  t        d«      }t        |«      }|j                  j                  d|«      S )z>Returns charset parameter from Content-Type header or default.r]   Úcharset)r«   r±   r    r#   Ú
parameters)r‘   rê   ÚctypeÚmimetypes       r=   rë   zBodyPartReader.get_charsetâ  s;   € à—‘× Ñ ¤¨rÓ2ˆÜ! %Ó(ˆØ×"Ñ"×&Ñ& y°'Ó:Ð:r<   c                 óp   — t        | j                  j                  t        «      «      \  }}t	        |d«      S )z|Returns name specified in Content-Disposition header.

        If the header is missing or malformed, returns None.
        r~   ©r3   r«   r±   r   r4   ©r‘   r{   rv   s      r=   r~   zBodyPartReader.nameè  s/   € ô .¨d¯l©l×.>Ñ.>Ô?RÓ.SÓT‰	ˆˆ6Ü+¨F°FÓ;Ð;r<   c                 óp   — t        | j                  j                  t        «      «      \  }}t	        |d«      S )zReturns filename specified in Content-Disposition header.

        Returns None if the header is missing or malformed.
        Úfilenamer  r  s      r=   r  zBodyPartReader.filenameñ  s/   € ô .¨d¯l©l×.>Ñ.>Ô?RÓ.SÓT‰	ˆˆ6Ü+¨F°JÓ?Ð?r<   r§   )%r8   r9   r:   r¨   rÄ   Úbytesr-   r’   r   r•   r�   r   r™   rF   r½   r²   rÃ   rÉ   rÊ   rÌ   r¤   rh   r_   r	   r   rî   r   r   rõ   r¢   r¿   rû   rú   rë   r$   r~   r  r;   r<   r=   r0   r0   ý   sÓ  „ Ù0à€Jð)Øð)Ø(?ð)ØJVð)à	ó)ð˜=Ð)9Ñ:ó ð ó ð˜H U™Oó ð ,1ò  Dð °Uó ð  ,6ñ  Sð ¸%ó ð,°#ð ¸%ó ð °#ð  ¸%ó  ðD ó ó:3ð 7;ò % h¨s¡mð %¸só %ð 7;ò G h¨s¡mð G¸xÈÈSÐRUÈXÉÑ?Wó Gð 7;ò 
 h¨s¡mð 
¸tÀEÈ#ÈsÈ(ÁOÑ?Tó 
ð(˜ó ð
˜5ð 
 Uó 
ð
D Eð 
D¨eó 
Dð¨Uð °uó ð; 3ð ;¨3ó ;ð ð<�h˜s‘mò <ó ð<ð ð@˜( 3™-ò @ó ñ@r<   r0   )Úorderc                   ó@   ‡ — e Zd Zdedededdfˆ fd„Zdeddfd„Zˆ xZS )	ÚBodyPartReaderPayloadry   ÚargsÚkwargsrA   Nc                 óÆ   •— t        ‰| �  |g|¢­i |¤Ž i }|j                  �|j                  |d<   |j                  �|j                  |d<   |r | j                  di |¤Ž y y )Nr~   r  )Ú
attachmentT)Úsuperr’   r~   r  Úset_content_disposition)r‘   ry   r  r  rv   Ú	__class__s        €r=   r’   zBodyPartReaderPayload.__init__ý  si   ø€ Ü‰Ñ˜Ð0 Ò0¨Ò0à!#ˆØ�:‰:Ð!Ø"ŸZ™ZˆF�6‰NØ�>‰>Ð%Ø!&§¡ˆF�:ÑáØ(ˆD×(Ñ(ÑF¸vÓFð r<   Úwriterc              ƒ   óô   K  — | j                   }|j                  d¬«      ƒ d {  –—† }|rF|j                  |j                  |«      «      ƒ d {  –—†  |j                  d¬«      ƒ d {  –—† }|rŒEy y 7 ŒM7 Œ%7 Œ­w)Ni   )rÆ   )r}   rÃ   Úwriter¿   )r‘   r%  ÚfieldrÍ   s       r=   r'  zBodyPartReaderPayload.write	  sk   è ø€ Ø—‘ˆØ×&Ñ&¨EÐ&Ó2×2ˆÙØ—,‘,˜uŸ|™|¨EÓ2Ó3×3Ð3Ø×*Ñ*°Ð*Ó6×6ˆEô ð 3øà3øØ6ús9   ‚"A8¤A2¥)A8ÁA4ÁA8Á(A6Á)A8Á0A8Á4A8Á6A8)r8   r9   r:   r0   r   r’   r'  Ú__classcell__©r$  s   @r=   r  r  û  s<   ø„ ð
G˜nð 
G°Sð 
GÀCð 
GÈDõ 
Gð7 #ð 7¨$÷ 7r<   r  c                   ó  — e Zd ZdZeZdZeZde	e
e
f   deddfd„Zded   fd„Zdeed ef      fd	„Zed
ddefd„«       Zdefd„Zdeed ef      fd„Zdd„Zded ef   fd„Zddded ef   fd„Zde
fd„Zdefd„Zdd„Zdd„Zdd„Zdd„Z y)r.   zMultipart body reader.Nr«   r¡   rA   c                 ó¤   — || _         d| j                  «       z   j                  «       | _        || _        d | _        d| _        d| _        g | _        y )Nz--FT)	r«   Ú_get_boundaryÚencoder®   r¯   Ú
_last_partr°   Ú_at_bofrµ   )r‘   r«   r¡   s      r=   r’   zMultipartReader.__init__  sJ   € ØˆŒØ ×!3Ñ!3Ó!5Ñ5×=Ñ=Ó?ˆŒØˆŒØNRˆŒØˆŒØˆŒØ$&ˆ�r<   r0   c                 ó   — | S rE   r;   r”   s    r=   r•   zMultipartReader.__aiter__%  s	   € ð ˆr<   c              ƒ   óR   K  — | j                  «       ƒ d {  –—† }|€t        ‚|S 7 Œ­wrE   r˜   r›   s     r=   r�   zMultipartReader.__anext__*  rž   rŸ   Úresponser5   c                 ó`   — | j                  | | |j                  |j                  «      «      }|S )z‚Constructs reader instance from HTTP response.

        :param response: :class:`~aiohttp.client.ClientResponse` instance
        )Úresponse_wrapper_clsr«   r¡   )Úclsr3  Úobjs      r=   Úfrom_responsezMultipartReader.from_response2  s3   € ð ×&Ñ&Ø‘c˜(×*Ñ*¨H×,<Ñ,<Ó=ó
ˆð ˆ
r<   c                 ó   — | j                   S )z@Returns True if the final boundary was reached, false otherwise.r÷   r”   s    r=   r¢   zMultipartReader.at_eof@  rø   r<   c              ƒ   óX  K  — | j                   ry| j                  «       ƒ d{  –—†  | j                  r | j                  «       ƒ d{  –—†  d| _        n| j	                  «       ƒ d{  –—†  | j                   ry| j                  «       ƒ d{  –—† | _        | j                  S 7 Œ~7 Œ\7 Œ>7 Œ­w)z#Emits the next multipart body part.NF)r°   Ú_maybe_release_last_partr0  Ú_read_until_first_boundaryÚ_read_boundaryÚfetch_next_partr/  r”   s    r=   r™   zMultipartReader.nextD  s’   è ø€ ð
 �<Š<ØØ×+Ñ+Ó-×-Ð-Ø�<Š<Ø×1Ñ1Ó3×3Ð3Ø ˆD�Là×%Ñ%Ó'×'Ð'Ø�<Š<ØØ $× 4Ñ 4Ó 6×6ˆŒØ�‰Ðð 	.øà3øð (øð 7úsE   ‚!B*£B"¤#B*ÁB$ÁB*Á'B&Á($B*ÂB(ÂB*Â$B*Â&B*Â(B*c              ƒ   ó®   K  — | j                   sA| j                  «       ƒ d{  –—† }|€y|j                  «       ƒ d{  –—†  | j                   sŒ@yy7 Œ.7 Œ­w)z=Reads all the body parts to the void till the final boundary.N)r°   r™   r¤   r¥   s     r=   r¤   zMultipartReader.releaseV  sD   è ø€ à—,’,ØŸ™›×$ˆDØˆ|ØØ—,‘,“.× Ð ð	 —,•,Ø$øð !ús%   ‚ A¢A£A½A¾AÁAÁAc              ƒ   ó`   K  — | j                  «       ƒ d{  –—† }| j                  |«      S 7 Œ­w)z"Returns the next body part reader.N)Ú_read_headersÚ_get_part_reader)r‘   r«   s     r=   r>  zMultipartReader.fetch_next_part^  s/   è ø€ ð ×*Ñ*Ó,×,ˆØ×$Ñ$ WÓ-Ð-ð -ús   ‚.–,—.r¬   c                 ó8  — |j                  t        d«      }t        |«      }|j                  dk(  rD| j                  € t        | «      || j
                  «      S | j	                  || j
                  «      S | j                  | j                  || j
                  «      S )zšDispatches the response by the `Content-Type` header.

        Returns a suitable reader instance.

        :param dict headers: Response headers
        r]   Ú	multipart)r±   r    r#   ÚtypeÚmultipart_reader_clsr¯   Úpart_reader_clsr®   )r‘   r«   r  r  s       r=   rB  z MultipartReader._get_part_readere  s�   € ð —‘œL¨"Ó-ˆÜ! %Ó(ˆà�=‰=˜KÒ'Ø×(Ñ(Ð0Ø!”t˜D“z '¨4¯=©=Ó9Ð9Ø×,Ñ,¨W°d·m±mÓDÐDà×'Ñ'¨¯©¸ÀÇÁÓOÐOr<   c                 ó  — t        | j                  t           «      }|j                  dk(  sJ d«       ‚d|j                  vrt        d| j                  t           z  «      ‚|j                  d   }t        |«      dkD  rt        d|z  «      ‚|S )NrD  z!multipart/* content type expectedrª   z$boundary missed for Content-Type: %séF   z&boundary %r is too long (70 chars max))r#   r«   r    rE  r  rò   rË   )r‘   r  rª   s      r=   r-  zMultipartReader._get_boundaryy  s�   € Ü! $§,¡,¬|Ñ"<Ó=ˆà�}‰} Ò+ÐPÐ-PÓPÐ+à˜X×0Ñ0Ñ0ÜØ6¸¿¹ÄlÑ9SÑSóð ð ×&Ñ& zÑ2ˆÜˆx‹=˜2ÒÜÐEÈÑPÓQÐQàˆr<   c              ƒ   óž   K  — | j                   r| j                   j                  «       S | j                  j                  «       ƒ d {  –—† S 7 Œ­wrE   )rµ   ro   r¯   rÌ   r”   s    r=   Ú	_readlinezMultipartReader._readline‰  s9   è ø€ Ø�<Š<Ø—<‘<×#Ñ#Ó%Ð%Ø—]‘]×+Ñ+Ó-×-Ð-Ð-ús   ‚AAÁAÁAc              ƒ   óð   K  — 	 | j                  «       ƒ d {  –—† }|dk(  rt        d| j                  z  «      ‚|j                  «       }|| j                  k(  ry || j                  dz   k(  rd| _        y Œp7 Œ\­w)NTr<   z#Could not find starting boundary %rrß   )rK  rò   r®   râ   r°   ©r‘   rÍ   s     r=   r<  z*MultipartReader._read_until_first_boundaryŽ  sw   è ø€ ØØŸ.™.Ó*×*ˆEØ˜Š|Ü Ø9¸T¿^¹^ÑLóð ð —L‘L“NˆEØ˜Ÿ™Ò&ØØ˜$Ÿ.™.¨5Ñ0Ò0Ø#�”Øð Ø*ús   ‚A6—A4˜AA6c              ƒ   óÎ  K  — | j                  «       ƒ d {  –—† j                  «       }|| j                  k(  ry || j                  dz   k(  ryd| _        | j                  «       ƒ d {  –—† }| j                  «       ƒ d {  –—† }|d d dk(  r| j                  j                  |«       y | j                  j                  ||g«       y t        d|›d| j                  ›�«      ‚7 ŒÈ7 Œ{7 Œe­w)Nrß   TrP   zInvalid boundary z, expected )rK  râ   r®   r°   rµ   rˆ   rÂ   rò   )r‘   rÍ   Úepilogueræ   s       r=   r=  zMultipartReader._read_boundaryœ  sË   è ø€ Ø—~‘~Ó'×'×/Ñ/Ó1ˆØ�D—N‘NÒ"ØØ�d—n‘n uÑ,Ò,ØˆDŒLØ!Ÿ^™^Ó-×-ˆHØ"Ÿn™nÓ.×.ˆIð ˜˜!ˆ} Ò%Ø—‘×#Ñ# IÕ.ð
 —‘×#Ñ# Y°Ð$9Õ:äÐ0°°	¸ÀTÇ^Á^ÐDVÐWÓXÐXð) (øð
 .øØ.ús5   ‚C%–C—AC%Á%C!Á&C%Á=C#Á>A"C%Ã!C%Ã#C%c              ƒ   óä   K  — dg}	 | j                   j                  «       ƒ d {  –—† }|j                  «       }|j                  |«       |snŒGt	        «       }|j                  |«      \  }}|S 7 ŒI­w)Nr<   )r¯   rÌ   rq   rˆ   r%   Úparse_headers)r‘   ÚlinesrÍ   Úparserr«   Úraw_headerss         r=   rA  zMultipartReader._read_headers³  so   è ø€ Ø�ˆØØŸ-™-×0Ñ0Ó2×2ˆEØ—K‘K“MˆEØ�L‰L˜ÔÙØð ô “ˆØ%×3Ñ3°EÓ:Ñˆ�Øˆð 3ús   ‚"A0¤A.¥A
A0c              ƒ   ó  K  — | j                   �s| j                   j                  «       s"| j                   j                  «       ƒ d{  –—†  | j                  j	                  | j                   j                  «       d| _         yy7 Œ<­w)z8Ensures that the last read body part is read completely.N)r/  r¢   r¤   rµ   rÂ   r”   s    r=   r;  z(MultipartReader._maybe_release_last_part¿  sa   è ø€ à�?‰?Ð&Ø—?‘?×)Ñ)Ô+Ø—o‘o×-Ñ-Ó/×/Ð/Ø�L‰L×Ñ §¡× 7Ñ 7Ô8Ø"ˆD�Oð	 'à/ús   ‚ABÁBÁ=Br§   )rA   r¬   )!r8   r9   r:   r¨   r�   r5  rF  r0   rG  r   rh   r-   r’   r   r•   r   r   r�   Úclassmethodr8  rF   r¢   r™   r¤   r>  rB  r-  r  rK  r<  r=  rA  r;  r;   r<   r=   r.   r.     s+  „ Ù ð 4Ðð  Ðà$€Oð' ¨¨S¨Ñ 1ð '¸Lð 'ÈTó 'ðà	Ð'Ñ	(óð
à	�%Ð)¨>Ð9Ñ:Ñ	;óð ðà"ðð 
"òó ðð˜ó ðà	�%Ð)¨>Ð9Ñ:Ñ	;óó$!ð.à	Ð  .Ð0Ñ	1ó.ðPà(ðPð 
Ð  .Ð0Ñ	1óPð(˜só ð . ó .ó
óYó.
ô#r<   r.   c                   óÞ  ‡ — e Zd ZdZddedee   ddfˆ fd„Zdd„Zdeee	      d	ee	   d
ee
   ddfd„Zdee   fd„Zdefd„Zdefd„Z ej(                  d«      Z ej(                  d«      Zedefd„«       Zedefd„«       Zd dedeee      defd„Zdedefd„Z	 d dedeee      defd„Z	 d de e!e"eef      e#eef   f   deee      defd„Z$edee   fd„«       Z%d!dededdfd„Z&ˆ xZ'S )"r/   zMultipart body writer.NÚsubtyperª   rA   c                 óþ   •— |�|nt        j                  «       j                  }	 |j                  d«      | _        d|› d| j                  › �}t        ‰| �%  d |¬«       g | _
        y # t
        $ r t        d«      d ‚w xY w)NÚasciiz(boundary should contain ASCII only charsz
multipart/z; boundary=)Úcontent_type)ÚuuidÚuuid4Úhexr.  r®   ÚUnicodeEncodeErrorrò   Ú_boundary_valuer"  r’   Ú_parts)r‘   rX  rª   r  r$  s       €r=   r’   zMultipartWriter.__init__Î  s†   ø€ Ø'Ð3‘8¼¿¹»×9IÑ9Iˆð	SØ%Ÿ_™_¨WÓ5ˆDŒNð ˜W˜I [°×1EÑ1EÐ0FÐGˆä‰Ñ˜¨EÐÔ2à#%ˆ�øô "ò 	SÜÐGÓHÈdÐRð	Sús   ¥A& Á&A<c                 ó   — | S rE   r;   r”   s    r=   Ú	__enter__zMultipartWriter.__enter__ß  r–   r<   Úexc_typeÚexc_valÚexc_tbc                  ó   — y rE   r;   )r‘   rd  re  rf  s       r=   Ú__exit__zMultipartWriter.__exit__â  s   € ð 	r<   c                 ó,   — t        | j                  «      S rE   )Úiterra  r”   s    r=   Ú__iter__zMultipartWriter.__iter__ê  s   € Ü�D—K‘KÓ Ð r<   c                 ó,   — t        | j                  «      S rE   )rË   ra  r”   s    r=   Ú__len__zMultipartWriter.__len__í  s   € Ü�4—;‘;ÓÐr<   c                  ó   — y)NTr;   r”   s    r=   Ú__bool__zMultipartWriter.__bool__ð  s   € Ør<   s   \A[!#$%&'*+\-.^_`|~\w]+\Zs   [\x00-\x08\x0A-\x1F\x7F]c                 óH  — | j                   }t        j                  | j                  |«      r|j	                  d«      S t        j
                  | j                  |«      rt        d«      ‚|j                  dd«      }|j                  dd«      }d|j	                  d«      z   dz   S )zzWrap boundary parameter value in quotes, if necessary.

        Reads self.boundary and returns a unicode string.
        rZ  z*boundary value contains invalid charactersó   \s   \\ó   "s   \"rL   )	r®   ra   ÚmatchÚ_valid_tchar_regexr¿   ÚsearchÚ_invalid_qdtext_char_regexrò   Úreplace)r‘   ry   Úquoted_value_contents      r=   r`  zMultipartWriter._boundary_valueö  s’   € ð& —‘ˆÜ�8‰8�D×+Ñ+¨UÔ3Ø—<‘< Ó(Ð(ä�9‰9�T×4Ñ4°eÔ<ÜÐIÓJÐJð  %Ÿ}™}¨U°GÓ<ÐØ3×;Ñ;¸DÀ&ÓIÐàÐ)×0Ñ0°Ó9Ñ9¸CÑ?Ð?r<   c                 ó8   — | j                   j                  d«      S )NrZ  )r®   r¿   r”   s    r=   rª   zMultipartWriter.boundary  s   € à�~‰~×$Ñ$ WÓ-Ð-r<   r7  r«   c                 ó  — |€
t        «       }t        |t        «      r,|j                  j	                  |«       | j                  |«      S 	 t        ||¬«      }| j                  |«      S # t        $ r t        d|z  «      ‚w xY w)N©r«   zCannot create payload from %r)	r   Ú
isinstancer)   r«   ÚupdateÚappend_payloadr+   r'   Ú	TypeError)r‘   r7  r«   Úpayloads       r=   rˆ   zMultipartWriter.append  sƒ   € Øˆ?Ü!“mˆGä�cœ7Ô#Ø�K‰K×Ñ˜wÔ'Ø×&Ñ& sÓ+Ð+ð4Ü% c°7Ô;�ð ×*Ñ*¨7Ó3Ð3øô ò GÜÐ ?À#Ñ EÓFÐFðGús   Á
A( Á(B r€  c                 óÖ  — |j                   j                  t        d«      j                  «       }|r|dvrt	        d|› �«      ‚|dk(  rd}|j                   j                  t
        d«      j                  «       }|dvrt	        dj                  |«      «      ‚|dk(  rd}|j                  }|� |s|st        |«      |j                   t        <   | j                  j                  |||f«       |S )	z)Adds a new body part to multipart writer.r]   )rÿ   rþ   rý   r  rý   N)r]   r  r  r  r  r  )r«   r±   r   rp   r  r   r  rÆ   rh   r   ra  rˆ   )r‘   r€  rz   Úte_encodingrÆ   s        r=   r~  zMultipartWriter.append_payload)  sù   € ð #*§/¡/×"5Ñ"5ÜØó#
÷ ‰%‹'ð 	ñ ˜Ð(GÑGÜÐ!;¸H¸:ÐFÓGÐGØ�zÒ!ØˆHð &-§_¡_×%8Ñ%8Ü%Øó&
÷ ‰%‹'ð 	ð ÐJÑJÜØ:×AÑAÀ+ÓNóð ð ˜(Ò"ØˆKð �|‰|ˆØÐ¡X±Ü.1°$«iˆG�O‰OœNÑ+à�‰×Ñ˜G X¨{Ð;Ô<Øˆr<   c                 óR   — |€
t        «       }| j                  t        ||¬«      «      S )zHelper to append JSON part.r{  )r   r~  r&   )r‘   r7  r«   s      r=   Úappend_jsonzMultipartWriter.append_jsonI  s(   € ð ˆ?Ü!“mˆGà×"Ñ"¤;¨s¸GÔ#DÓEÐEr<   c                 óð   — t        |t        t        f«      sJ ‚|€
t        «       }t        |t        «      rt	        |j                  «       «      }t        |d¬«      }| j                  t        ||d¬«      «      S )z&Helper to append form urlencoded part.T)Údoseqz!application/x-www-form-urlencoded)r«   r[  )	r|  r   r   r   Úlistr†   r   r~  r*   )r‘   r7  r«   rÅ   s       r=   Úappend_formzMultipartWriter.append_formR  sn   € ô ˜#¤¬'Ð2Ô3Ð3Ð3àˆ?Ü!“mˆGä�cœ7Ô#Ü�s—y‘y“{Ó#ˆCÜ˜ DÔ)ˆà×"Ñ"ÜØ˜gÐ4Wôó
ð 	
r<   c                 ó.  — d}| j                   D ]e  \  }}}|s|s|j                  € y|t        dt        | j                  «      z   dz   |j                  z   t        |j
                  «      z   dz   «      z  }Œg |dt        | j                  «      z   dz   z  }|S )zSize of the payload.r   NrP   é   )ra  rÆ   r²   rË   r®   Ú_binary_headers)r‘   Útotalrœ   rz   r‚  s        r=   rÆ   zMultipartWriter.sizeg  s²   € ð ˆØ+/¯;©;ò 	Ñ'ˆD�(˜KÙ™;¨$¯)©)Ð*;Ùà”SØÜ�d—n‘nÓ%ñ&àñð —)‘)ñô �d×*Ñ*Ó+ñ	,ð
 ñóñ ‰Eð		ð 	�”S˜Ÿ™Ó(Ñ(¨1Ñ,Ñ,ˆØˆr<   r%  Úclose_boundaryc              ƒ   ót  K  — | j                   D ]ë  \  }}}|j                  d| j                  z   dz   «      ƒ d{  –—†  |j                  |j                  «      ƒ d{  –—†  |s|rct	        |«      }|r|j                  |«       |r|j                  |«       |j                  |«      ƒ d{  –—†  |j                  «       ƒ d{  –—†  n|j                  |«      ƒ d{  –—†  |j                  d«      ƒ d{  –—†  Œí |r*|j                  d| j                  z   dz   «      ƒ d{  –—†  yy7 Œï7 ŒÎ7 Œ‚7 Œl7 ŒT7 Œ=7 Œ­w)zWrite body.rß   rÈ   Ns   --
)ra  r'  r®   r‹  ÚMultipartPayloadWriterÚenable_compressionÚenable_encodingÚ	write_eof)r‘   r%  r�  rœ   rz   r‚  Úws          r=   r'  zMultipartWriter.write{  s  è ø€ à+/¯;©;ò 	(Ñ'ˆD�(˜KØ—,‘,˜u t§~¡~Ñ5¸Ñ?Ó@×@Ð@Ø—,‘,˜t×3Ñ3Ó4×4Ð4á™;Ü*¨6Ó2�ÙØ×(Ñ(¨Ô2ÙØ×%Ñ% kÔ2Ø—j‘j “m×#Ð#Ø—k‘k“m×#Ñ#à—j‘j Ó(×(Ð(à—,‘,˜wÓ'×'Ñ'ð	(ñ" Ø—,‘,˜u t§~¡~Ñ5¸	ÑAÓB×BÑBð ð! AøØ4øð $øØ#øà(øà'øð Cús|   ‚8D8ºD*»"D8ÁD,ÁAD8Â+D.Â,D8ÃD0ÃD8ÃD2ÃD8Ã6D4Ã7,D8Ä#D6Ä$D8Ä,D8Ä.D8Ä0D8Ä2D8Ä4D8Ä6D8)ÚmixedN)rA   r/   rE   )T)(r8   r9   r:   r¨   rh   r   r’   rc  r   ÚBaseExceptionr   rh  r
   Ú_Partrk  r²   rm  rF   ro  ra   Úcompilert  rv  Úpropertyr`  rª   r   r   r)   rˆ   r~  r„  r   r   r   r   rˆ  rÆ   r'  r)  r*  s   @r=   r/   r/   Ë  så  ø„ Ù ñ& ð &¸À#¹ð &ÐRVõ &ó"ðà˜4 Ñ.Ñ/ðð ˜-Ñ(ðð ˜Ñ'ð	ð
 
óð!˜( 5™/ó !ð ˜ó  ð˜$ó ð $˜Ÿ™Ð$AÓBÐØ!+ §¡Ð,HÓ!IÐàð@ ò @ó ð@ð> ð.˜#ò .ó ð.ñ4˜#ð 4¨°¸cÑ1BÑ(Cð 4Èwó 4ð gð °'ó ðB @DñFØðFØ!)¨,°sÑ*;Ñ!<ðFà	óFð 04ñ
à�8˜E # s (™OÑ,¨g°c¸3°hÑ.?Ð?Ñ@ð
ð ˜, sÑ+Ñ,ð
ð 
ó	
ð* ð�h˜s‘mò ó ðñ&C #ð C°tð CÀt÷ Cr<   r/   c                   ór   — e Zd Zdeddfd„Zdeddfd„Zdej                  fdede	ddfd	„Z
dd
„Zdeddfd„Zy)r�  r%  rA   Nc                 ó<   — || _         d | _        d | _        d | _        y rE   )Ú_writerÚ	_encodingÚ	_compressÚ_encoding_buffer)r‘   r%  s     r=   r’   zMultipartPayloadWriter.__init__“  s   € ØˆŒØ(,ˆŒØ37ˆŒØ59ˆÕr<   rz   c                 óV   — |dk(  r|| _         t        «       | _        y |dk(  rd| _         y y )Nr  r  )rœ  rÁ   rž  )r‘   rz   s     r=   r‘  z&MultipartPayloadWriter.enable_encoding™  s0   € Ø�xÒØ%ˆDŒNÜ$-£KˆDÕ!ØÐ+Ò+Ø/ˆD�Nð ,r<   rÿ   Ústrategyc                 ó*   — t        |d|¬«      | _        y )NT)rz   r   r   )r   r�  )r‘   rz   r   s      r=   r�  z)MultipartPayloadWriter.enable_compression   s   € ô (ØØ$(Øô
ˆ�r<   c              ƒ   ó^  K  — | j                   �<| j                   j                  «       }|r d | _         | j                  |«      ƒ d {  –—†  | j                  dk(  rN| j                  rA| j
                  j                  t        j                  | j                  «      «      ƒ d {  –—†  y y y 7 Œb7 Œ	­w)Nr  )r�  Úflushr'  rœ  rž  r›  r  Ú	b64encoderM  s     r=   r’  z MultipartPayloadWriter.write_eof©  s’   è ø€ Ø�>‰>Ð%Ø—N‘N×(Ñ(Ó*ˆEÙØ!%�”Ø—j‘j Ó'×'Ð'à�>‰>˜XÒ%Ø×$Ò$Ø—l‘l×(Ñ(¬×)9Ñ)9¸$×:OÑ:OÓ)PÓQ×QÑQð %ð &ð (øð Rús%   ‚AB-ÁB)ÁAB-Â!B+Â"B-Â+B-rÍ   c              ƒ   ó’  K  — | j                   �(|r&| j                   j                  |«      ƒ d {  –—† }|sy | j                  dk(  rŽ| j                  }|€J ‚|j	                  |«       |rjt        t        |«      d«      \  }}|d |dz   ||dz  d  c}| _        |r9t        j                  |«      }| j                  j                  |«      ƒ d {  –—†  y y y | j                  dk(  r7| j                  j                  t        j                  |«      «      ƒ d {  –—†  y | j                  j                  |«      ƒ d {  –—†  y 7 �Œ7 Œt7 Œ.7 Œ­w)Nr  rÒ   r  )r�  Úcompressrœ  rž  rÂ   ÚdivmodrË   r  r¤  r›  r'  r  Úb2a_qp)r‘   rÍ   ÚbufÚdivÚmodÚ	enc_chunkÚb64chunks          r=   r'  zMultipartPayloadWriter.write´  s'  è ø€ Ø�>‰>Ð%ÙØ"Ÿn™n×5Ñ5°eÓ<×<�ÙØà�>‰>˜XÒ%Ø×'Ñ'ˆCØ�?Ð"�?Ø�J‰J�uÔáÜ!¤# c£(¨AÓ.‘��SØ47¸	¸#À¹'°NÀCÈÈaÉÈ	ÀNÐ0�	˜4Ô0ÙÜ%×/Ñ/°	Ó:�HØŸ,™,×,Ñ,¨XÓ6×6Ñ6ð ð ð �^‰^Ð1Ò1Ø—,‘,×$Ñ$¤X§_¡_°UÓ%;Ó<×<Ñ<à—,‘,×$Ñ$ UÓ+×+Ñ+ð% =ùð 7øà<øà+úsG   ‚-E¯D>°BEÃEÃAEÄEÄ#EÄ8EÄ9EÅEÅEÅEr§   )r8   r9   r:   r   r’   rh   r‘  ÚzlibÚZ_DEFAULT_STRATEGYr²   r�  r’  r  r'  r;   r<   r=   r�  r�  ’  sk   „ ð:˜sð : tó :ð0¨ð 0°ó 0ð (¸×9PÑ9Pñ
Øð
Ø36ð
à	ó
ó	Rð, ð ,¨4ô ,r<   r�  )r  )Mr  r  rî   ra   r\  rm   r®  Úcollectionsr   Útypesr   Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Úurllib.parser   r   r   Ú	multidictr   r   r   Úcompression_utilsr   r   Úhdrsr   r   r   r   r    Úhelpersr!   r"   r#   r$   Úhttpr%   r€  r&   r'   r(   r)   r*   r+   r,   Ústreamsr-   Ú__all__Úclient_reqrepr5   ÚRuntimeWarningr1   r2   rh   r3   r4   r�   r0   Ú	try_firstr  r.   r–  r/   r�  r;   r<   r=   ú<module>r¾     ss  ðÛ Û Û Û 	Û Û Û Ý Ý ÷÷ ÷ ÷ ÷  7Ñ 6ç AÑ Aç ?÷õ ÷ 8Ó 7Ý ÷÷ ñ õ "ð€ñ Ý-ô	 .ô 	ô	 ô 	ð`$Ø�S‰Mð`$à
ˆ8�C‰=˜$˜s C˜x™.Ð(Ñ)ó`$ðH ,6ñØ�C˜�HÑðØ%(ðàˆc�]ó÷B,"ñ ,"÷^{@ñ {@ñ| ˆn E§O¡OÔ4ô7˜Gó 7ó 5ð7÷*t#ñ t#ðn 	ˆg�s˜CÐÑ €ôDC�gô DC÷N7,ò 7,r<   