+
    kHàjô7  ã                  óŠ  a € 0 t $ R t^ RIHt ^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIHtHt ^ RIt]P"                  ! ]4      tRtRt^2tR^R^R^R	^R
^R^ÿR^ÿR^ÿ/tR]R&   / RRbRRbRR	bRRbRRbRR
bRRbRRbRRbRRbRRbRRbR R!bR"R#bR$R%bR&R'bR(R)bR*R+R,R-R.R/R0R1R2R3R4R5R6R7R8R9/CtR:]R;&   0 RfmtR< R= ltR> R? ltRgR@ RA lltRB RC ltRD RE ltRF RG lt RH RI lt!RJ RK lt"RL RM lt#RN RO lt$RP RQ lt%RR RS lt&]3RT RU llt'RV RW lt(RX RY lt)RhRZ R[ llt*RiR\ R] llt+R^ R_ lt,RjR` Ra llt-RkRb Rc llt.Rd Re lt/R# )lu³  
yuanbao_media.py â€” å…ƒå®�å¹³å�°åª’ä½“å¤„ç�†ï¼šCOS ä¸Šä¼ ã€�URL ä¸‹è½½ï¼ˆSSRF é˜²æŠ¤ï¼‰ã€�TIM åª’ä½“æ¶ˆæ�¯ä½“ã€‚
ç§»æ¤�è‡ª TypeScript ç‰ˆ media.tsï¼ˆyuanbao-openclaw-pluginï¼‰ï¼Œç”¨ httpx æ›¿ä»£ cos-nodejs-sdk-v5ã€‚

COS ä¸Šä¼ æµ�ç¨‹ï¼šgenUploadInfo èŽ·å�–ä¸´æ—¶å‡­è¯� â†’ ä¸´æ—¶å‡­è¯� HMAC-SHA1 ç­¾å�� Authorization å¤´ â†’ HTTP PUTã€‚
TIM æ¶ˆæ�¯ä½“ï¼šbuild_image_msg_body() â†’ TIMImageElemï¼Œbuild_file_msg_body() â†’ TIMFileElem
)ÚannotationsN)ÚOptionalÚAnyz/api/resource/genUploadInfozyuanbao.tencent.comz
image/jpegz	image/jpgz	image/gifz	image/pngz	image/bmpz
image/webpz
image/heicz
image/tiffúdict[str, int]Ú_MIME_TO_IMAGE_FORMATú.jpgú.jpegú.pngú.gifú.webpú.bmpú.heicú.tiffú.icozimage/x-iconz.pdfzapplication/pdfz.doczapplication/mswordz.docxzGapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentz.xlszapplication/vnd.ms-excelz.xlsxzAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetz.pptzapplication/vnd.ms-powerpointz.pptxzIapplication/vnd.openxmlformats-officedocument.presentationml.presentationz.txtz
text/plainz.zipzapplication/zipz.tarzapplication/x-tarz.gzzapplication/gzipz.mp3z
audio/mpegz.mp4z	video/mp4z.wavz	audio/wavz.oggz	audio/oggz.webmz
video/webmúdict[str, str]Ú_EXT_TO_MIMEc               ó    € V ^8„  d   QhRRRR/# ©é   ÚfilenameÚstrÚreturn© )Úformats   "ÚL/home/ubuntu/.hermes/hermes-agent/plugins/platforms/yuanbao/yuanbao_media.pyÚ__annotate__r   3   s   € ÷ 2ñ 2�3ð 2˜3ñ 2ó    c                ój   € \         P                  P                  V 4      R,          P                  4       # )é   éÿÿÿÿ)ÚosÚpathÚsplitextÚlower©r   s   &r   Ú_extr%   3   s%   € Ü�7‰7×Ñ˜HÓ% bÕ)×/Ñ/Ó1Ð1r   c               ó    € V ^8„  d   QhRRRR/# r   r   )r   s   "r   r   r   7   s   € ÷ Hñ H˜cð H cñ Hr   c                ó@   € \         P                  \        V 4      R 4      # )úapplication/octet-stream)r   Úgetr%   r$   s   &r   Úguess_mime_typer*   7   s   € Ü×ÑœD ›NÐ,FÓGÐGr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r   r   Ú	mime_typer   Úboolr   )r   s   "r   r   r   ;   s&   € ÷ Kñ K�sð K sð K°Dñ Kr   c                óX   € VP                  R4      ;'       g    \        V 4      \        9   # )u/   MIME å‰�ç¼€æˆ–æ‰©å±•å��åˆ¤æ–­æ˜¯å�¦ä¸ºå›¾ç‰‡ã€‚úimage/)Ú
startswithr%   Ú_IMAGE_EXTS)r   r,   s   &&r   Úis_imager2   ;   s$   € à×Ñ Ó)×JÐJ¬T°(«^¼{Ñ-JÐJr   c               ó    € V ^8„  d   QhRRRR/# )r   r,   r   r   Úintr   )r   s   "r   r   r   @   s   € ÷ =ñ = ð =¨ñ =r   c                óJ   € \         P                  V P                  4       ^ÿ4      # )u-   TIM å›¾ç‰‡æ ¼å¼�ç¼–å�·ï¼ˆæœªçŸ¥ â†’ 255ï¼‰ã€‚)r   r)   r#   )r,   s   &r   Úget_image_formatr6   @   s   € ä ×$Ñ$ Y§_¡_Ó%6¸Ó<Ð<r   c               ó    € V ^8„  d   QhRRRR/# )r   ÚdataÚbytesr   r   r   )r   s   "r   r   r   E   s   € ÷ )ñ )�%ð )˜Cñ )r   c                óJ   € \         P                  ! V 4      P                  4       # ©N)ÚhashlibÚmd5Ú	hexdigest©r8   s   &r   Úmd5_hexr@   E   s   € Ü�;Š;�tÓ×&Ñ&Ó(Ð(r   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r   r   I   s   € ÷ !ñ !˜#ñ !r   c                 ó.   € \         P                  ! ^4      # )u"   éš�æœºæ–‡ä»¶ IDï¼ˆ32 ä½� hexï¼‰ã€‚)ÚsecretsÚ	token_hexr   r   r   Úgenerate_file_idrE   I   s   € ä×Ò˜RÓ Ð r   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úwr4   Úhr   r   r   )r   s   "r   r   r   P   s!   € ÷ %ñ %ˆ3ð %�3ð %˜>ñ %r   c                ó   € R V RV/# )ÚwidthÚheightr   )rG   rH   s   &&r   Ú_whrL   P   s   € Ø�Q˜ !Ð$Ð$r   c               ó    € V ^8„  d   QhRRRR/# ©r   Úbufr9   r   úOptional[dict[str, int]]r   )r   s   "r   r   r   T   s   € ÷ 2ñ 2˜ð 2Ð#;ñ 2r   c                óŒ   € \        V 4      ^8  g   V R,          R8w  d   R# \        \        P                  ! RV R,          4      !  # )é   ºNé   Ns   ‰PNGNz>II:é   rR   N©ÚlenrL   ÚstructÚunpack©rO   s   &r   Ú_parse_png_sizer[   T   s5   € Ü
ˆ3ƒx�"„}˜˜B� :Ô-ÙÜ”—’˜e S¨¥ZÓ0Ñ1Ð1r   c               ó    € V ^8„  d   QhRRRR/# rN   r   )r   s   "r   r   r   Z   s   € ÷ ñ ˜%ð Ð$<ñ r   c           	     óè  € \        V 4      ^8  g   V R,          R8w  d   R# ^pV\        V 4      ^	,
          8  d¹   W,          ^ÿ8w  d   V^,          pK/  W^,           ,          R9   d5   \        P                  ! RW^,           V^	,            4      w  r#\        W24      # V^,           \        V 4      8  d?   V^\        P                  ! RW^,           V^,            4      ^ ,          ,           ,          pKÌ   R# R# )rT   :Nr   Ns   ÿØNz>HHz>H>   éÀ   éÂ   )rW   rX   rY   rL   )rO   ÚirH   rG   s   &   r   Ú_parse_jpeg_sizera   Z   s»   € Ü
ˆ3ƒx�!„|�s˜2•w +Ô-ÙØ	€AØ
Œc�#‹h˜�lÔ
Ø�6�TŒ>Ø��FŠAØ�Q•�Z˜<Ô'Ü—=’= ¨°­E°1°qµ5Ð(9Ó:‰DˆAÜ�q“9ÐØ��U”S˜“XÔØ�”V—]’] 4¨°­U°A¸µEÐ):Ó;¸AÕ>Õ>Õ>ŠAàÛr   c               ó    € V ^8„  d   QhRRRR/# rN   r   )r   s   "r   r   r   k   s   € ÷ 1ñ 1˜ð 1Ð#;ñ 1r   c                óŒ   € \        V 4      ^
8  g   V R,          R9  d   R# \        \        P                  ! RV R,          4      !  # )é
   :Né   NNú<HH:re   rd   N)s   GIF87as   GIF89arV   rZ   s   &r   Ú_parse_gif_sizerg   k   s6   € Ü
ˆ3ƒx�"„}˜˜B�Ð'=Ô=ÙÜ”—’˜e S¨¥YÓ/Ñ0Ð0r   c               ó    € V ^8„  d   QhRRRR/# rN   r   )r   s   "r   r   r   q   s   € ÷ ñ ˜%ð Ð$<ñ r   c                óò  € \        V 4      ^8  g   V R,          R8w  g   V R,          R8w  d   R# V R,          pVR8X  dY   \        V 4      ^8¼  dI   V R,          R	8X  d;   \        P                  ! R
V R,          4      w  r#\        VR,          VR,          4      # VR8X  ds   \        V 4      ^8¼  dc   V ^,          ^/8X  dU   \        P                  ! RV R,          4      ^ ,          p\        VR,          ^,           V^,	          R,          ^,           4      # VR8X  da   \        V 4      ^8¼  dQ   \        \        P                  V R,          R4      ^,           \        P                  V R,          R4      ^,           4      # R# )rU   rS   s   RIFF:é   é   Ns   WEBPN:rk   rU   Ns   VP8 :é   é   Ns   �*rf   :rm   é   Niÿ?  s   VP8Lz<I:é   é   Ns   VP8X:rR   é   NÚlittle:rq   rn   N)rW   rX   rY   rL   r4   Ú
from_bytes)rO   ÚchunkrG   rH   Úbitss   &    r   Ú_parse_webp_sizerv   q   s  € Ü
ˆ3ƒx�"„}˜˜B� 7Ô*¨c°$­i¸7Ô.BÙØ��J€EØ�ÔœC ›H¨œN¨s°5­z¸_Ô/LÜ�}Š}˜U C¨¥JÓ/‰ˆÜ�1�v•:˜q 6�zÓ*Ð*Ø�ÔœC ›H¨œN¨s°2­w¸$¬Ü�}Š}˜T 3 u¥:Ó.¨qÕ1ˆÜ�D˜6•M QÕ&¨$°"­*¸Õ)>À!Õ(CÓDÐDØ�ÔœC ›H¨œNÜ”3—>‘> # e¥*¨hÓ7¸!Õ;¼S¿^¹^ÈCÐPUÍJÐX`Ó=aÐdeÕ=eÓfÐfÙr   c               ó    € V ^8„  d   QhRRRR/# )r   r8   r9   r   rP   r   )r   s   "r   r   r   €   s   € ÷ nñ n˜5ð nÐ%=ñ nr   c                óŠ   € \        V 4      ;'       g2    \        V 4      ;'       g    \        V 4      ;'       g    \        V 4      # )uR   è§£æž�å›¾ç‰‡å®½é«˜ï¼ˆJPEG/PNG/GIF/WebPï¼‰ï¼Œè¿”å›ž {"width", "height"} æˆ– Noneã€‚)r[   ra   rg   rv   r?   s   &r   Úparse_image_sizery   €   s7   € ä˜4Ó ×mÐmÔ$4°TÓ$:×mÐm¼oÈdÓ>S×mÐmÔWgÐhlÓWmÐmr   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úurlr   Úmax_size_mbr4   r   ztuple[bytes, str]r   )r   s   "r   r   r   ‡   s"   € ÷ *.ñ *.˜Cð *.¨cð *.ÐL]ñ *.r   c           
   ƒ  óx  a"  € ^ RI HpHo S! V 4      '       g   \        RV  24      hR V3R llpVR,          R,          pV! RRRV./R	7      ;_uu_4       GR
j  x€L
 p VP	                  V 4      G R
j  x€L
 p\        VP                  P                  R^ 4      ;'       g    ^ 4      pV^ 8”  d(   Wt8”  d"   \        RVR,          R,          R RV R24      hTP                  RT 4      ;_uu_4       GR
j  x€L
 pTP                  4        TP                  P                  RR4      P                  R4      ^ ,          P                  4       p	. p
^ pTP                  R4        R
j  x€L
  pT\        T4      ,          pY´8”  d   \        RT R24      hT
P!                  T4       KD   ELH EL1  \        P                   d     Léi ; i LÎ LbDcR
R
R
4      GR
j  x€L 
  M  + GR
j  x€L 
 '       g   i     M; iRP#                  X
4      X	3uuR
R
R
4      GR
j  x€L 
  #   + GR
j  x€L 
 '       g   i     R
# ; i5i)u¿   ä¸‹è½½ URL å†…å®¹ï¼Œè¿”å›ž (bytes, content_type)ã€‚

Raises:
    ValueError: å†…å®¹è¶…è¿‡ max_size_mbï¼Œæˆ– URL / é‡�å®šå�‘ç›®æ ‡è¢« SSRF é˜²æŠ¤æ‹¦æˆª
    httpx.HTTPError: ç½‘ç»œ/HTTP é”™è¯¯
)Úcreate_ssrf_safe_async_clientÚis_safe_urlz&Blocked unsafe URL (SSRF protection): c               ó    € V ^8„  d   QhRRRR/# )r   Úresponsezhttpx.Responser   ÚNoner   )r   s   "r   r   Ú"download_url.<locals>.__annotate__–   s   € ÷ bñ b¨ð b¸4ñ br   c              “  óÖ   <"  € V P                   '       dR   V P                  '       d>   \        V P                  P                  4      pS! V4      '       g   \	        R V 24      hR# R# R# 5i)z.Blocked redirect to private/internal address: N)Úis_redirectÚnext_requestr   r{   Ú
ValueError)r�   Úredirect_urlr   s   & €r   Ú_redirect_guardÚ%download_url.<locals>._redirect_guard–   s`   øé € Ø××Ð H×$9×$9Ð$9Ü˜x×4Ñ4×8Ñ8Ó9ˆLÙ˜|×,Ò,Ü Ð#QÐR^ÐQ_Ð!`ÓaÐañ -ñ %:Ñùs   ƒ$A)¨AA)i   g      >@Tr�   )ÚtimeoutÚfollow_redirectsÚevent_hooksNzcontent-lengthu   æ–‡ä»¶è¿‡å¤§: z.1fz MB > z MBÚGETúcontent-typeÚ Ú;i   u   æ–‡ä»¶è¿‡å¤§: å·²è¶…è¿‡ u
    MB é™�åˆ¶r   )Útools.url_safetyr~   r   r‡   Úheadr4   Úheadersr)   ÚhttpxÚHTTPStatusErrorÚstreamÚraise_for_statusÚsplitÚstripÚaiter_bytesrW   ÚappendÚjoin)r{   r|   r~   r‰   Ú	max_bytesÚclientr“   Úcontent_lengthÚrespÚcontent_typeÚchunksÚ
downloadedrt   r   s   &&           @r   Údownload_urlr¥   ‡   sþ  øé € ÷ Lá�s×ÒÜÐAÀ#ÀÐGÓHÐH÷bð bð ˜dÕ" TÕ)€IÙ,Ø t¸*ÀÐFWÐ9X÷÷ õ à	ð	ØŸ™ SÓ)×)ˆDÜ  §¡×!1Ñ!1Ð2BÀAÓ!F×!KÐ!KÈ!ÓLˆNØ Ô! nÔ&@Ü  >°.À4Õ2GÈ$Õ2NÈsÐ1SÐSYÐZeÐYfÐfiÐ!jÓkÐkð —=‘= ¨×,×,Ô,°Ø×!Ñ!Ô#ØŸ<™<×+Ñ+¨N¸BÓ?×EÑEÀcÓJÈ1ÕM×SÑSÓUˆLØ"$ˆFØˆJØ#×/Ñ/°Ô6÷ %ð %�eØœc %›jÕ(�
ØÔ)Ü$Ð'?À¸}ÈJÐ%WÓXÐXØ—‘˜eÖ$ò'ò *øô ×$Ñ$ô 	Ùð	úá,ñ
%Ð6÷ -×,×,×,×,Ò,úð �x‰x˜Ó Ð-÷)÷ ÷ ÷ ÷ õ üsñ   ƒAH:ÁF#ÁH:ÁHÁ!F)Á5F&Á6+F)Â"5F)ÃHÃ5GÃ6HÃ9A&G	ÅG
Å#GÅ$G
Å'<G	Æ#H:Æ&F)Æ)GÆ>HÇ GÇHÇG
ÇG	Ç	HÇGÇHÇG4Ç!G$Ç"
G4Ç-G4Ç/HÈ	H:ÈHÈH:ÈH7	È#H&È$
H7	È/H7	È1	H:c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úkeyr   Úmsgr   r   )r   s   "r   r   r   ¶   s&   € ÷ Xñ X˜ð X #ð X¨#ñ Xr   c                ó¦   € \         P                  ! V P                  R 4      VP                  R 4      \        P                  4      P                  4       # )úutf-8)ÚhmacÚnewÚencoder<   Úsha1r>   )r§   r¨   s   &&r   Ú_hmac_sha1_hexr¯   ¶   s4   € Ü�8Š8�C—J‘J˜wÓ'¨¯©°GÓ)<¼g¿l¹lÓK×UÑUÓWÐWr   c               ó    € V ^8„  d   QhRRRR/# )r   Údr   r   zlist[tuple[str, str]]r   )r   s   "r   r   r   º   s   € ÷ Zñ Z�.ð ZÐ%:ñ Zr   c                óB   € \        R V P                  4        4       4      # )u<   ç­¾å��ç”¨ (å°�å†™ key, URL-encoded value) æŒ‰å­—å…¸åº�æŽ’åˆ—c              3  óš   "  € T FA  w  rVP                  4       \        P                  P                  \	        V4      R R7      3x € KC  	  R# 5i)r�   ©ÚsafeN)r#   ÚurllibÚparseÚquoter   ©Ú.0ÚkÚvs   &  r   Ú	<genexpr>Ú_sorted_kv.<locals>.<genexpr>¼   s5   é € ÐYÉyÁtÀq�1—7‘7“9œfŸl™l×0Ñ0´°Q³¸bÐ0ÓAÕBËyùs   ‚A	A)ÚsortedÚitems)r±   s   &r   Ú
_sorted_kvrÁ   º   s   € äÑYÈqÏwÉwÌyÓYÓYÐYr   c               ó<   € V ^8„  d   QhRRRRRRRRRRRRR	R
RRRR/	# )r   Úmethodr   r!   Úparamsr   r”   Ú	secret_idÚ
secret_keyÚ
start_timezOptional[int]Úexpire_secondsr4   r   r   )r   s   "r   r   r   ¿   sV   € ÷ ñ ØðØðØ$2ðØ=KðØX[ðØilðàðà69ðð 	ñr   c                ó0  € T;'       g    \        \        P                  ! 4       4      pV RW‡,            2p	\        WY4      p
\        V4      p\        V4      pR pRP	                  V P                  4       W! V4      V! V4      R.4      pRP	                  RV	\        P                  ! VP                  R4      4      P                  4       R.4      pRV RV	 R	V	 R
RP	                  R V 4       4       RRP	                  R V 4       4       R\        W¯4       2# )uø   COS Authorization å¤´ï¼ˆq-sign-algorithm=sha1ï¼›https://cloud.tencent.com/document/product/436/7778ï¼‰ã€‚

method å°�å†™ã€�path å·² URL-encodeï¼›params / headers çš„ key ä¼šè¢«å°�å†™ï¼›secret_* ä¸ºä¸´æ—¶ tmpSecretId/Keyï¼›
start_time é»˜è®¤ nowã€‚
r‘   c                ó2   € R P                  R V  4       4      # )Ú&c              3  ó4   "  € T F  w  rV R V 2x € K  	  R# 5i)Ú=Nr   r¹   s   &  r   r½   Ú._cos_sign.<locals>.<lambda>.<locals>.<genexpr>Í   s   é € Ð=±u©t¨q 1 # Q q c¥
³uùs   ‚)r�   )Úpairss   &r   Ú<lambda>Ú_cos_sign.<locals>.<lambda>Í   s   € �s—x‘xÑ=±uÓ=Ô=r   Ú
r�   r®   rª   zq-sign-algorithm=sha1&q-ak=z&q-sign-time=z&q-key-time=z&q-header-list=c              3  ó*   "  € T F	  w  rVx € K  	  R # 5ir;   r   ©rº   r»   Ú_s   &  r   r½   Ú_cos_sign.<locals>.<genexpr>Ò   s   é € Ð"@±©¨¥1³ùó   ‚z&q-url-param-list=c              3  ó*   "  € T F	  w  rVx € K  	  R # 5ir;   r   rÔ   s   &  r   r½   rÖ   Ó   s   é € Ð%B±M©D¨A¥a³Mùr×   z&q-signature=)
r4   Útimer¯   rÁ   r�   r#   r<   r®   r­   r>   )rÃ   r!   rÄ   r”   rÅ   rÆ   rÇ   rÈ   ÚstartÚq_sign_timeÚsign_keyÚsorted_paramsÚsorted_headersÚkvÚhttp_stringÚstring_to_signs   &&&&&&&&        r   Ú	_cos_signrâ   ¿   s  € ð ×*Ð*œ#œdŸiši›kÓ*€EØ�G˜1˜UÕ3Ð4Ð5€KÜ˜jÓ6€HÜ˜vÓ&€MÜ Ó(€NÙ	=€BØ—)‘)˜VŸ\™\›^¨T°2°mÓ3DÁbÈÓFXÐZ\Ð]Ó^€KØ—Y‘Y ¨´W·\²\À+×BTÑBTÐU\ÓB]Ó5^×5hÑ5hÓ5jÐlnÐoÓp€Nà
% i [°¸k¸]È,ÐWbÐVcØ
˜#Ÿ(™(Ñ"@±Ó"@Ó@ÐAØ
˜SŸX™XÑ%B±MÓ%BÓBÐCØ
œ xÓ@ÐAð	Cðr   c               ó8   € V ^8„  d   QhRRRRRRRRRRRRR	RR
R/# )r   Úapp_keyr   Ú
api_domainÚtokenr   Úfile_idúOptional[str]Úbot_idÚ	route_envr   Údictr   )r   s   "r   r   r   Ú   sN   € ÷ ñ ØðØ!ðØ*-ðØ9<ðØP]ðàðà!$ðð 
ñr   c           	   ƒ  ó  "  € RRRTRT;'       g    T RR/pV'       d   WgR&   RTR	Ve   TM	\        4       RRRR/p\        P                  ! RR7      ;_uu_4       GR
j  x€L
 p	V	P                  VP	                  R4       \
         2W‡R7      G R
j  x€L
 p
V
P                  4        V
P                  4       pR
R
R
4      GR
j  x€L
  XP                  R4      pV^ 8w  d&   Ve"   \        RV RVP                  RR4       24      hVP                  R4      ;'       g    TpR Uu. uF  qíP                  V4      '       d   K  VNK  	  ppV'       d   \        RV 24      hV#  Lÿ LÏ L¡  + GR
j  x€L 
 '       g   i     L¸; iu upi 5i)u¼  è°ƒç”¨ genUploadInfo èŽ·å�– COS ä¸´æ—¶å¯†é’¥å�Šä¸Šä¼ é…�ç½®ã€‚

X-ID å¤´å�– bot_idï¼ˆä¼˜å…ˆï¼‰æˆ– app_keyï¼›api_domain å¦‚ https://bot.yuanbao.tencent.comï¼›file_id ä¸�ä¼ åˆ™è‡ªåŠ¨ç”Ÿæˆ�ã€‚
è¿”å›žæŽ¥å�£ data dictï¼šbucketName, region, location (COS key), encryptTmpSecretId, encryptTmpSecretKey,
encryptToken, startTime, expiredTime, resourceUrl, resourceID(å�¯é€‰)ã€‚
Raises RuntimeError: æŽ¥å�£è¿”å›žé�ž 0 code æˆ– bucketName/location ç¼ºå¤±
úContent-Typezapplication/jsonzX-TokenzX-IDzX-SourceÚwebzX-Route-EnvÚfileNameÚfileIdNÚdocFromÚlocalDocÚ	docOpenIdr�   g      .@©r‹   Ú/)Újsonr”   Úcodeu   genUploadInfo å¤±è´¥: code=z, msg=r¨   r8   u2   genUploadInfo è¿”å›žå­—æ®µä¸�å®Œæ•´: ç¼ºå°‘å­—æ®µ )Ú
bucketNameÚlocation)
rE   r•   ÚAsyncClientÚpostÚrstripÚUPLOAD_INFO_PATHr˜   rö   r)   ÚRuntimeError)rä   rå   ræ   r   rç   ré   rê   r”   ÚbodyrŸ   r¡   Úresultr÷   r8   ÚfÚmissings   &&&&&&&         r   Úget_cos_credentialsr  Ú   sw  é € ð Ð1°9¸eÀVÈV×M^ÐM^ÐW^Ð`jÐlqÐr€GßØ!*�ÑØ˜ (°wÒ7J©GÔP`ÓPbÐdmÐoyð  |Gð  IKð  L€DÜ× Ò ¨×.×.Õ.°&Ø—[‘[ J×$5Ñ$5°cÓ$:Ð#;Ô<LÐ;MÐ!NÐUY�[Ók×kˆØ×ÑÔØ!%§¡£ˆ÷ /×.ð �:‰:�fÓ€DØˆq„y�TÒ%ÜÐ8¸¸¸fÀVÇZÁZÐPUÐWYÓEZÐD[Ð\Ó]Ð]Ø�:‰:�fÓ×'Ð' €DÙ4ÓHÑ4�Q¿H¹HÀQ¿K�qˆqÑ4€GÐHßÜÐOÐPWÈyÐYÓZÐZØ€Kñ /Ùk÷ /×.×.Ò.üò Iùs}   ‚FŸ?FÁEÁFÁ".E$ÂE Â$E$Â5FÃ E"ÃAFÄFÄ!F Ä>F ÅFÅ E$Å"FÅ$E=	Å*E-Å+
E=	Å6E=	Å8Fc               ó4   € V ^8„  d   QhRRRRRRRRRRR	RR
R/# )r   Ú
file_bytesr9   r   r   r¢   Úcredentialsrë   ÚbucketÚregionr   r   )r   s   "r   r   r   ÷   sD   € ÷ (ñ (Øð(Ø!$ð(Ø47ð(ØFJð(ØTWð(Øadð(à	ñ(r   c              ƒ  óò  a"  € V3R lR  4       w  rgr‰SP                  R4      p
SP                  R4      pV'       d   V'       d	   V	'       g0   \        R\        V4       R\        V4       R\        V	4       24      hV R2p\        P                  P                  V	RR	7      P                  R4      pR
V RV 2pV'       d   VR8X  d   \        V4      '       d   \        V4      MRp\        V 4      p\        \        P                  ! 4       4      p\        RRV 2/ RVRVRV/YgV
'       d   T
MTV'       d   VV8”  d
   VV,
          MRR7      pRVRVRV/p\        P                  RWEWŸV4       \        P                   ! RR7      ;_uu_4       GRj  x€L
 pVP#                  WàVR7      G Rj  x€L
 pVP%                  4        RRR4      GRj  x€L
  RSP                  RR4      ;'       g    TR\'        V 4      RV/pVP)                  R4      '       d%   TP+                  \-        V 4      ;'       g    / 4       \        P                  RVR,          V4       V#  LÅ L¬ LŽ  + GRj  x€L 
 '       g   i     L¥; i5i)!u!  ç”¨ä¸´æ—¶å‡­è¯�ï¼ˆget_cos_credentials() è¿”å›žçš„ dictï¼‰HMAC-SHA1 ç­¾å��ï¼Œhttpx PUT ä¸Šä¼ åˆ° COSï¼ˆèµ°å…¨ç�ƒåŠ é€ŸåŸŸå��ï¼‰ã€‚

Returns {url, uuid (å†…å®¹ MD5), size, width?, height? (ä»…å›¾ç‰‡)}
Raises httpx.HTTPStatusErrorï¼ˆCOS é�ž 2xxï¼‰/ RuntimeErrorï¼ˆcredentials å­—æ®µç¼ºå¤±ï¼‰
c              3  óH   <"  € T F  pSP                  VR 4      x € K  	  R# 5i)r�   N)r)   )rº   r»   r  s   & €r   r½   Ú upload_to_cos.<locals>.<genexpr>ÿ   s#   øé € ð 5Ù(q 1ˆ�‰˜˜2×ÐÓ(qùs   ƒ"Ú	startTimeÚexpiredTimeu$   COS credentials ä¸�å®Œæ•´: secretId=z, secretKey=z, location=z.cos.accelerate.myqcloud.comrõ   r´   zhttps://r(   ÚputÚhostr�   zx-cos-security-tokené  )rÃ   r!   rÄ   r”   rÅ   rÆ   rÇ   rÈ   ÚAuthorizationrí   z3COS PUT: bucket=%s region=%s key=%s size=%d mime=%sg      ^@rô   N)Úcontentr”   r{   ÚresourceUrlr�   ÚuuidÚsizer/   u    COS ä¸Šä¼ æˆ�åŠŸ: url=%s size=%d)ÚencryptTmpSecretIdÚencryptTmpSecretKeyÚencryptTokenrù   )r)   rþ   r-   r¶   r·   r¸   Úlstripr2   r*   rW   r4   rÙ   râ   ÚloggerÚinfor•   rú   r  r˜   r@   r0   Úupdatery   )r  r   r¢   r  r  r  rÅ   rÆ   Úsession_tokenÚcos_keyrÇ   Úexpired_timeÚcos_hostÚencoded_keyÚcos_urlÚ	file_sizeÚnowÚauthorizationÚput_headersrŸ   r¡   r   s   &&&f&&                r   Úupload_to_cosr'  ÷   s=  øé € ô5Ù(qó5Ñ1€I˜=ð !,§¡°Ó <€JØ"-§/¡/°-Ó"@€LßŸJ¯gÜØ2´4¸	³?Ð2CÀ<ÔPTÐU_ÓP`ÐOaÐalÔmqÐryÓmzÐl{Ð|ó
ð 	
ð �Ð5Ð6€HÜ—,‘,×$Ñ$ W°3Ð$Ó7×>Ñ>¸sÓC€KØ˜˜
 ! K =Ð1€Gß˜<Ð+EÔEÜ4<¸X×4FÒ4F” xÔ0ÐLfˆÜ�J“€IÜ
Œd�iŠi‹kÓ
€CÜØ˜Q˜{˜mÐ,°RØ˜ >°<ÐAWÐYfÐgØß!+‘:°ß/;ÀÈsÔ@R˜ sÖ*ÐX\ô€Mð # M°>À<ÐQgÐivÐw€KÜ
‡K�KÐEÀvÐW^ÐkwÔxÜ× Ò ¨×/×/Õ/°6Ø—Z‘Z À[�ZÓQ×QˆØ×ÑÔ÷ 0×/ð $ [§_¡_°]ÀBÓ%G×%RÐ%RÈ7ÐTZÔ\cÐdnÓ\oÐqwð  zCð  D€FØ×Ñ˜x×(Ò(Ø�‰Ô& zÓ2×8Ð8°bÔ9Ü
‡K�KÐ2°F¸5µMÀ9ÔMØ€Mñ 0ÙQ÷ 0×/×/Ò/üsˆ   ƒAI7ÁI7ÁA3I7ÃA3I7Ä5AI7ÆIÆI7ÆIÆ*IÆ+IÆ?I7Ç
IÇI7Ç)AI7È.(I7ÉIÉI7ÉI4	É!I$É"
I4	É-I4	É/I7c               ó8   € V ^8„  d   QhRRRRRRRRRRR	RR
RRR/# )r   r{   r   r  rè   r   r  r4   rJ   rK   r,   r   ú
list[dict]r   )r   s   "r   r   r   $  sN   € ÷ ñ Ø	ðØ!ðØ4AðØPSðØ`cðàðà #ðð ñr   c                ó¦   € RRRRT;'       g     T;'       g    \        V 4      ;'       g    RRV'       d   \        V4      M^ÿRR^R	VR
VRVRV /.//.# )us   TIMImageElem æ¶ˆæ�¯ä½“ï¼ˆå�¯ç›´æŽ¥æ”¾å…¥ msg_bodyï¼‰ã€‚uuid ç¼ºçœ�ä¾�æ¬¡é€€åˆ° filename / URL basename / "image"ã€‚Úmsg_typeÚTIMImageElemÚmsg_contentr  ÚimageÚimage_formatÚimage_info_arrayÚtyper  rJ   rK   r{   )Ú_basename_from_urlr6   )r{   r  r   r  rJ   rK   r,   s   &&&&&&&r   Úbuild_image_msg_bodyr3  $  sr   € ð 	�NØØ�D×JÐJ˜H×JÐJÔ(:¸3Ó(?×JÐJÀ7Ø¿9Ô,¨YÔ7È#Ø &¨!¨V°T¸7ÀEÈ8ÐU[Ð]bÐdgÐ!hÐ ið
ðð ð r   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   r{   r   r   r  rè   r  r4   r   r)  r   )r   s   "r   r   r   3  s1   € ÷ ñ ˜Sð ¨Cð °}ð ÐSVð Ð_iñ r   c                ó4   € RRRRT;'       g    TRVRVRV //.# )uS   TIMFileElem æ¶ˆæ�¯ä½“ï¼ˆå�¯ç›´æŽ¥æ”¾å…¥ msg_bodyï¼‰ã€‚uuid ç¼ºçœ�ä½¿ç”¨ filenameã€‚r+  ÚTIMFileElemr-  r  Ú	file_namer#  r{   r   )r{   r   r  r  s   &&&&r   Úbuild_file_msg_bodyr8  3  s9   € ð 	�MØ˜ × 0Ð 0¨°+¸xÈÐVZÐ\aÐcfÐgðð ð r   c               ó    € V ^8„  d   QhRRRR/# )r   r{   r   r   r   )r   s   "r   r   r   ;  s   € ÷ ñ ˜Cð  Cñ r   c                ó´   €  \         P                  P                  \        P                  P                  V 4      P                  4      #   \         d     R # i ; i©r�   )r    r!   Úbasenamer¶   r·   ÚurlparseÚ	Exception)r{   s   &r   r2  r2  ;  sC   € ðÜ�w‰w×Ñ¤§¡× 5Ñ 5°cÓ :× ?Ñ ?Ó@Ð@øÜô Úðús   ‚AA ÁAÁA>	   r   r
   r   r   r	   r   r   r   r   r;  )Nr  )ÚfileNr�   r�   )NNé    r@  r@  r�   )Nr@  )0Ú__conditional_annotations__Ú__doc__Ú
__future__r   r<   r«   Úloggingr    rC   rX   rÙ   Úurllib.parser¶   Útypingr   r   r•   Ú	getLoggerÚ__name__r  rý   ÚDEFAULT_API_DOMAINÚDEFAULT_MAX_SIZE_MBr   Ú__annotations__r   r1   r%   r*   r2   r6   r@   rE   rL   r[   ra   rg   rv   ry   r¥   r¯   rÁ   râ   r  r'  r3  r8  r2  )rA  s   @r   Ú<module>rL     s  øðôõ #ã Û Û Û 	Û Û Û Û ß  ã à	×	Ò	˜8Ó	$€à0Ð Ø*Ð ØÐ ð �!�[ ! [°!°[À!À[ÐRSØ�#�| S¨,¸ð)Ð �~ó ð
 Ø
ˆLð Ø! <ð Ø17¸ð ØFLÈkð Ø[bÐdpð à
ˆKð à  ,ð à07¸ð àGMÈ~ð ð Ðð ð Ð ð	 ð
 ÐVð ð Ð&ð ð ÐPð ð Ð+ð ð ÐXð ð ˆLð ð !Ð"3°VÐ=PÐRWÐYkØ
ˆL˜& +¨v°{ÀFÈKÐY`Ðbnñ €ˆnó ò [€õ2õH÷Kõ
=õ
)õ!õ%õ2õõ"1õõnð 5H÷ *.õ^XõZ÷
÷6õ:(÷Z÷÷r   