+
    }n j�;  ã            
       óL  € ^ 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HtHtHtHt ^ RIHtHt ^ RIHtHt ^ RIHtHtHtHt R,tRtRtRtR	t ]PB                  ! ]PD                  ! ]#4      4      t$]! R
R]%3R]]&]&3,          3R]'3.4      t(]! RR]%3R]]&]&3,          3R]&3R]]&]3,          3R]],          3.4      t)R R lt*R R lt+/ s,R R lt-R R lt.R R lt/R-R R llt0R t1R t2R.R R  llt3R! R" lt4R# R$ lt5R.R% R& llt6R/ RRR'3R( R) llt7R/R* R+ llt8R# )0é    N)ÚAnyÚDictÚListÚ
NamedTupleÚOptionalÚTuple)ÚerrorÚrequest)ÚParseResultÚurlparse)ÚdefaultsÚ
exceptionsÚsystemÚutilzhttp://archive.ubuntu.comzhttps://esm.ubuntu.comzhttp://api.snapcraft.iozhttps://api.snapcraft.ioÚUnparsedHTTPResponseÚcodeÚheadersÚbodyÚHTTPResponseÚ	json_dictÚ	json_listc                ó0   € V ^8„  d   QhR\         R\        /# )é   ÚurlÚreturn)ÚstrÚbool)Úformats   "Ú8/usr/lib/python3/dist-packages/uaclient/http/__init__.pyÚ__annotate__r    +   s   € ÷ ñ œð ¤ñ ó    c                 ó¦   €  \        V 4      pTP                  R9  d   R #  TP                   R#   \         d     R # i ; i  \         d     R # i ; i)FT)ÚhttpsÚhttp)r   Ú
ValueErrorÚschemeÚport)r   Ú
parsed_urls   & r   Úis_service_urlr)   +   s\   € ðÜ˜c“]ˆ
ð ×ÑÐ 1Ô1ÙðØ�Šñ øô ô Úðûô ô Úðús   ‚/ ¡A ¯>½>ÁAÁAc          	      ót   € V ^8„  d   QhR\         R\        \         ,          R\         R\        \         ,          /# )r   ÚprotocolÚproxyÚtest_urlr   )r   r   )r   s   "r   r    r    <   s4   € ÷ /;ñ /;Üð/;Ü"¤3�-ð/;Ü36ð/;äŒc…]ñ/;r!   c                 ó¼  € V'       g   R # \        V4      '       g   \        P                  ! VR7      h\        P                  ! VRR7      pV R8X  dR   \        V4      P                  R8X  d8    \        W1R7      pTP                   ^È8X  d   T# \        P                  ! TR7      h\        P"                  ! W/4      p\        P$                  ! V4      p VP'                  V4       V#   \        P                   d    h \        P                   d    h \        P                   d    h \         d>   p\        P                  RTT\        T4      4       \        P                  ! TR7      hR p?ii ; i  \(        P*                  \        P,                  3 dI   p\        P                  RTT\/        TR\        T4      4      4       \        P                  ! TR7      hR p?ii ; i)	N)r,   ÚHEAD)Úmethodr#   ©Úhttps_proxyz:Error trying to use "%s" as pycurl proxy to reach "%s": %sz:Error trying to use "%s" as urllib proxy to reach "%s": %sÚreason)r)   r   ÚProxyInvalidUrlr
   ÚRequestr   r&   Ú_readurl_pycurl_https_in_httpsÚPycurlRequiredErrorÚProxyAuthenticationFailedÚPycurlCACertificatesErrorÚ	ExceptionÚLOGr	   r   ÚProxyNotWorkingErrorr   ÚProxyHandlerÚbuild_openerÚopenÚsocketÚtimeoutÚURLErrorÚgetattr)r+   r,   r-   ÚreqÚresponseÚeÚproxy_handlerÚopeners   &&&     r   Úvalidate_proxyrI   <   s…  € ÷ Ùä˜%× Ò Ü×(Ò(¨uÔ5Ð5ä
�/Š/˜(¨6Ô
2€Cà�7Ôœx¨›×5Ñ5¸Ô@ð	?Ü5°cÔMˆHð  �=‰=˜CÔØˆLä×1Ò1¸Ô>Ð>ä×(Ò(¨(Ð):Ó;€MÜ×!Ò! -Ó0€Fð
;Ø�‰�CÔØˆøô3 ×-Ñ-ô 	ØÜ×3Ñ3ô 	ØÜ×3Ñ3ô 	ØÜô 	?Ü�I‰IØLØØÜ�A“ô	ô ×1Ò1¸Ô>Ð>ûð	?ûô( �N‰NœEŸN™NÐ+ô ;Ü�	‰	ØHØØÜ�A�x¤ Q£Ó(ô		
ô ×-Ò-°EÔ:Ð:ûð;úsC   Á-C$ ÃE. Ã$(E+ÄE+Ä"
E+Ä-E+Ä.8E&Å&E+Å.%GÆAGÇGc                ó`   € V ^8„  d   QhR\         \        ,          R\         \        ,          RR/# )r   Ú
http_proxyr2   r   N)r   r   )r   s   "r   r    r    q   s,   € ÷ .$ñ .$Üœ•ð.$Ü,4´S­Mð.$à	ñ.$r!   c           
     ó¸  € / pV '       d   WR&   V'       d   WR&   RP                  \        \        4      4      pR Fz  p\        P                  P                  V4      pV'       g   K,  RP                  \        \        VP                  R4      4      P                  \        \        4      4      4      4      pK|  	  \        P                  RV4       V\        P                  R&   V\        P                  R&   V'       dC   \        P                  ! V4      p\        P                  ! V4      p\        P                  ! V4       \        P                  RRV/R	7       VsR
# )a+  
Globally configure pro-client to use http and https proxies.

- sets global proxy configuration for urllib
- sets the no_proxy environment variable for the current process
  which gets inherited for all subprocesses
- sets module variable for use in https-in-https pycurl requests
  this is retrieved later using get_configured_web_proxy

:param http_proxy: http proxy to be used by urllib. If None, it will
                   not be configured
:param https_proxy: https proxy to be used by urllib. If None, it will
                    not be configured
r$   r#   Ú,Úno_proxyÚNO_PROXYzSetting no_proxy: %szSetting global proxy dictÚextra)rP   N)rN   rO   )ÚjoinÚsortedÚUA_NO_PROXY_URLSÚosÚenvironÚgetÚsetÚsplitÚunionr;   Údebugr
   r=   r>   Úinstall_openerÚ_global_proxy_dict)rK   r2   Ú
proxy_dictrN   Úenv_varÚproxy_valuerG   rH   s   &&      r   Úconfigure_web_proxyr`   q   s
  € ð" €JçØ'�6ÑçØ)�7Ñð �x‰xœÔ/Ó0Ó1€HÛ+ˆÜ—j‘j—n‘n WÓ-ˆß‰;à—x‘xÜÜ˜×)Ñ)¨#Ó.Ó/×5Ñ5´cÔ:JÓ6KÓLóóŠHñ	 ,ô ‡I�IÐ$ hÔ/Ø%„B‡J�JˆzÑØ%„B‡J�JˆzÑßÜ×,Ò,¨ZÓ8ˆÜ×%Ò% mÓ4ˆÜ×Ò˜vÔ&ä‡I�IÐ)°'¸:Ð1F€IÔGà#Òr!   c                óF   € V ^8„  d   QhR\         \        \        3,          /# ©r   r   )r   r   )r   s   "r   r    r    ¢   s   € ÷ ñ ¤$¤s¬C x¥.ñ r!   c                  ó   € \         # ©N)r\   © r!   r   Úget_configured_web_proxyrf   ¢   s   € ÜÐr!   c                óz   € V ^8„  d   QhR\         P                  P                  R\        \        \        3,          /# )r   r   r   )ÚemailÚmessageÚMessager   r   )r   s   "r   r    r    ¦   s,   € ÷ 7ñ 7œeŸm™m×3Ñ3ð 7¼¼SÄ#¸X½ñ 7r!   c                 ót   € V P                  4        UUu/ uF  w  rVP                  4       VbK  	  upp# u uppi rd   )ÚitemsÚlower)r   ÚkÚvs   &  r   Ú_headers_to_dictrp   ¦   s,   € à&-§m¡m¤oÔ6¡o™U˜QˆA�G‰G‹I�qŠL¡oÒ6Ð6ùÓ6s   ”4c                óf   € V ^8„  d   QhR\         P                  R\        \        ,          R\        /# )r   rD   rA   r   )r
   r5   r   Úintr   )r   s   "r   r    r    «   s.   € ÷ ñ Ü	�‰ðä”c�]ðô ñr!   c                 ó²  €  \         P                  ! WR 7      pTP                  4       p\        TP                  \        TP                   4      TR7      #   \        P                   d   pTp Rp?LWRp?i\        P                   dO   p\
        P                  \        TP                  4      4       \        P                  ! Y0P                  R7      hRp?ii ; i)©rA   N)Úcauser   ©r   r   r   )r
   Úurlopenr	   Ú	HTTPErrorrB   r;   Ú	exceptionr   r3   r   ÚConnectivityErrorÚfull_urlÚreadr   r   rp   r   )rD   rA   ÚresprF   r   s   &&   r   Ú_readurl_urllibr~   «   s™   € ðFÜ�Š˜sÔ4ˆð �9‰9‹;€DäØ�Y‰YÜ  §¡Ó.Øôð øô �?‰?ô Ø�ûÜ�>‰>ô FÜ�‰”c˜!Ÿ(™(“mÔ$Ü×*Ò*°¿¹ÔEÐEûðFús*   ‚A ÁCÁ)A0Á0CÂCÂA	CÃCc                ó  € \        V4      p\        V 4      pVP                  R8H  ;'       dI    \        P                  ! VP
                  4      '       * ;'       d    VRJ;'       d    VP                  R8H  p\        P                  RV4       V# )a‘  
We only want to use pycurl if all of the following are true

- The target url scheme is https
- The target host is not in no_proxy
- An https_proxy is configured either via pro's config or via environment
- The https_proxy url scheme is https

urllib.request provides some helpful functions that we re-use here.

This function also returns the https_proxy to use, since it is calculated
here anyway.
r#   NzShould use pycurl: %r)r   Ú_parse_https_proxyr&   r
   Úproxy_bypassÚhostnamer;   rZ   )r2   Ú
target_urlÚparsed_target_urlÚparsed_https_proxyÚrets   &&   r   Úshould_use_pycurlr‡   À   s‘   € ô ! Ó,ÐÜ+¨KÓ8Ðà× Ñ  GÑ+÷ 	1ð 	1Ü×$Ò$Ð%6×%?Ñ%?Ó@Ô@÷	1ð 	1à dÐ*÷	1ð 	1ð ×%Ñ%¨Ñ0ð	 ô ‡I�IÐ% sÔ+Ø€Jr!   c                 óz  € R pR p\        V P                  4      ^ 8”  d   V P                  ^ ,          p\        V P                  4      ^8”  d   V P                  ^,          pWB8X  d%   V'       d   RV9   d   \        P                  ! 4       hWC8X  d   \        P                  ! VR7      h\        P
                  ! V R7      h)NÚ407©r   )rF   )ÚlenÚargsr   r8   r9   ÚPycurlError)r	   r   Úauthentication_error_codeÚca_certificates_error_coder   Úmsgs   &&&&  r   Ú_handle_pycurl_errorr‘   Ú   s�   € ð €DØ
€CÜ
ˆ5�:‰:ƒ˜ÔØ�z‰z˜!�}ˆÜ
ˆ5�:‰:ƒ˜ÔØ�j‰j˜�mˆØÔ(¯S°U¸c´\Ü×2Ò2Ó4Ð4Ø	Ô	+Ü×2Ò2°sÔ;Ð;ä×$Ò$ uÔ-Ð-r!   c                óˆ   € V ^8„  d   QhR\         P                  R\        \        ,          R\        \        ,          R\
        /# )r   rD   rA   r2   r   )r
   r5   r   rr   r   r   )r   s   "r   r    r    ë   sB   € ÷ \ñ \Ü	�‰ð\ä”c�]ð\ô œ#•ð\ô ñ	\r!   c                 ó"  a€  ^ RI pTP	                  4       pT P                  4       P                  4       pTR8X  d   TP                  TP                  R4       MšTR8X  d   TP                  TP                  R4       MvTR8X  dV   TP                  TP                  R4       T P                  '       d'   TP                  TP                  T P                  4       M\        RP                  T4      4      hTP                  TP                  T P!                  4       4       T P#                  4        UUu. uF  w  rgRP                  Yg4      NK  	  ppp\%        T4      ^ 8”  d   TP                  TP&                  T4       TP                  TP(                  R4       TP                  TP*                  \,        P.                  4       T'       d   TP                  TP0                  T4       T'       d_   \3        T4      p	T	'       d   T	P5                  4       MRpTP                  TP6                  T4       TP                  TP8                  ^4       M\:        P=                  R4       \>        P@                  ! 4       p
TP                  TPB                  T
4       / oT3R	 lpTP                  TPD                  T4        TPG                  4        \Q        TPS                  TPT                  4      4      pT
PW                  4       pTPY                  4        \[        TSTR7      #   \         d    \        P                  ! 4       hi ; iu uppi   TPH                   d<   p\K        TT P!                  4       TPL                  TPN                  R
7        Rp?LÃRp?ii ; i)r   NÚGETTr/   ÚPOSTz5HTTP method "{}" not supported in HTTPS-in-HTTPS modez{}: {}z1in pycurl request function without an https proxyc                 óÊ   <€ V P                  R 4      p RV 9  d   R# V P                  R^4      w  rVP                  4       P                  4       pVP                  4       pVSV&   R# )z
iso-8859-1Ú:N)ÚdecoderX   Ústriprm   )Úheader_lineÚname_rawÚ	value_rawÚnameÚvaluer   s   &    €r   Úsave_headerÚ3_readurl_pycurl_https_in_https.<locals>.save_header(  s]   ø€ Ø!×(Ñ(¨Ó6ˆØ�kÔ!ÙØ)×/Ñ/°°QÓ7ÑˆØ�~‰~Ó×%Ñ%Ó'ˆØ—‘Ó!ˆØˆ�‹r!   )r   rŽ   r�   rv   ).ÚpycurlÚImportErrorr   r7   ÚCurlÚ
get_methodÚupperÚsetoptÚHTTPGETÚNOBODYr•   ÚdataÚCOPYPOSTFIELDSr%   r   ÚURLÚget_full_urlÚheader_itemsr‹   Ú
HTTPHEADERÚFOLLOWLOCATIONÚCAINFOr   ÚSSL_CERTS_PATHÚTIMEOUTr€   ÚgeturlÚPROXYÚ	PROXYTYPEr;   ÚwarningÚioÚBytesIOÚ	WRITEDATAÚHEADERFUNCTIONÚperformr	   r‘   ÚE_RECV_ERRORÚE_SSL_CACERT_BADFILErr   ÚgetinfoÚRESPONSE_CODEÚgetvalueÚcloser   )rD   rA   r2   r¡   Úcr0   r�   ÚvalÚheader_str_listr…   Úbody_outputrŸ   rF   r   r   r   s   &&&            @r   r6   r6   ë   sÎ  ø€ ð
/Ûð 	�‰‹€Að �^‰^Ó×#Ñ#Ó%€FØ�„Ø	�‰�—‘ Õ&Ø	�6Ô	Ø	�‰�—‘ Õ%Ø	�6Ô	Ø	�‰�—‘˜dÔ#Ø�8�8ˆ8Ø�H‰H�V×*Ñ*¨C¯H©HÔ5øäØC×JÑJØóó
ð 	
ð ‡H�HˆV�Z‰Z˜×)Ñ)Ó+Ô,ð 58×4DÑ4DÔ4FôÙ4F¡y tˆ�‰˜Ö"Ñ4Fð ñ ô ˆ?Ó˜aÔØ	�‰�×"Ñ" OÔ4ð ‡H�HˆV×"Ñ" DÔ)Ø‡H�HˆV�]‰]œH×3Ñ3Ô4ßØ	�‰�—‘ Ô)÷ Ü/°Ó<Ðç+=Ð×%Ñ%Ô'À4ð 	ð 	
�‰�—‘˜{Ô+Ø	�‰�×!Ñ! 1Õ%ä�‰ÐGÔHô —*’*“,€KØ‡H�HˆV×Ñ˜{Ô+Ø€Gõð ‡H�HˆV×"Ñ" KÔ0ð
Ø	�	‰	Œô ˆq�y‰y˜×-Ñ-Ó.Ó/€DØ×ÑÓ!€Dà‡G�G„IäØØØôð øôc ô /Ü×,Ò,Ó.Ð.ð/üó4øðT �<‰<ô 
ÜØØ× Ñ Ó"Ø&,×&9Ñ&9Ø'-×'BÑ'B÷		
ò 	
ûð
ús)   ƒL Ä0L<Ê6M Ì!L9ÍNÍ1N	Î	Nc                ó:   € V ^8„  d   QhR\         \        ,          /# rb   )r   r   )r   s   "r   r    r    J  s   € ÷ :ñ :¤x´Õ'<ñ :r!   c                 ó„   € V '       g%   \         P                  ! 4       P                  R 4      p V '       d   \        V 4      # R# )r#   N)r
   Ú
getproxiesrV   r   r1   s   &r   r€   r€   J  s0   € ßÜ×(Ò(Ó*×.Ñ.¨wÓ7ˆß$/Œ8�KÓ Ð9°TÐ9r!   c                ó$   € V ^8„  d   QhR\         /# )r   r   )r   )r   s   "r   r    r    P  s   € ÷ )ñ )¤ñ )r!   c                 ó  € V P                   P                  R 4      p/ pV'       g   / pMR\        P                  P	                  V4      '       g   / pM*\
        P                  ! \        P                  ! V4      4      pVP                  V. 4      # )Úserviceclient_url_responses)	ÚfeaturesrV   rT   ÚpathÚexistsÚjsonÚloadsr   Ú	load_file)Úcfgr   Úresponse_overlay_pathÚresponse_overlays   &&  r   Ú_get_overlay_datarÕ   P  so   € ØŸL™L×,Ñ,Ð-JÓKÐàÐß ØÑÜ�W‰W�^‰^Ð1×2Ò2ØÑäŸ:š:¤f×&6Ò&6Ð7LÓ&MÓNÐà×Ñ  RÓ(Ð(r!   c                ót   € V ^8„  d   QhR\         R\        \        ,          R\        \        \         3,          /# )r   r   rA   r   )r   r   rr   r   Úbytes)r   s   "r   r    r    ^  s1   € ÷ 1ñ 1Üð1Ü$¤S�Mð1ä
Œ5”#ˆ:Õñ1r!   c           	      ó~  € \        W4      pV'       d[   VP                  ^ 4      p\        P                  ! VR,          R,          4      ;_uu_ 4       pVP	                  4       R3uuRRR4       # \        V4      '       g   \        P                  ! VR7      h\        P                  RP                  V4      4       \        4       P                  R4      p/ pV'       d   W8R&   \        Wq4      '       d‡   \        \        P                   ! WR	7      VVR
7      pVP"                  R8X  d   \        P$                  ! VR7      h\        P&                  ! VP(                  4      VP*                  P                  R4      3# \        P                   ! WR	7      p	 \        P,                  ! V	4      ;_uu_ 4       p\        P                  ! V4      ;_uu_ 4       pVP	                  4       VP*                  P                  R4      3uuRRR4       uuRRR4       #   + '       g   i     EL°; i  + '       g   i     M; i RRR4       R#   + '       g   i     R# ; i  \.        P0                   dU   p
T
P"                  R8X  d   \        P$                  ! TR7      hT
P"                  R8X  d   \        P2                  ! 4       hh Rp
?
ii ; i)r   rE   Ú	file_pathÚ NrŠ   zURL [GET]: {}r#   zIf-None-Match)r   ©rA   r2   i0  ÚetagÚETagi”  )rÕ   ÚpopÚlzmar?   r|   r)   r   Ú
InvalidUrlr;   rZ   r   rf   rV   r‡   r6   r
   r5   r   ÚETagUnchangedÚ
decompressr   r   rw   r	   rx   ÚVulnerabilityDataNotFound)rÒ   r   rA   rÜ   Úoverlay_responserE   Úfr2   r   rD   rF   s   &&&&       r   Údownload_xz_file_from_urlræ   ^  sþ  € ô )¨Ó2Ðßà#×'Ñ'¨Ó*ˆÜ�YŠY�x 
Õ+¨KÕ8×9Ô9¸QØ—F‘F“H˜b�>÷ :Ò9ô ˜#×ÒÜ×#Ò#¨Ô,Ð,ä‡I�Iˆo×$Ñ$ SÓ)Ô*ä*Ó,×0Ñ0°Ó9€KØ€GßØ#'�Ñ ä˜×*Ò*Ü1Ü�OŠO˜CÔ1ØØ#ô
ˆð �=‰=˜CÔÜ×*Ò*¨sÔ3Ð3ô �OŠO˜HŸM™MÓ*Ø×Ñ× Ñ  Ó(ð
ð 	
ô
 �oŠo˜cÔ3ˆð	Ü—’ ×%Ô%¨Ü—Y’Y˜x×(Ô(¨AàŸ™›Ø ×(Ñ(×,Ñ,¨VÓ4ð÷ )Ñ(÷ &Ò%÷= :×9Ð9ú÷> )×(úÐ(÷ &×%×%Ò%ûô �‰ô 	Ø�v‰v˜Œ}Ü ×.Ò.°3Ô7Ð7Ø�v‰v˜Œ}Ü ×:Ò:Ó<Ð<àûð	úsa   ÁHÆI Æ.H?Ç+H!	Ç8
H?È
I ÈH	È!H1È,H?È5I È?I	É
I ÉI ÉJ<É(AJ7Ê7J<Tc                óÐ   € V ^8„  d   QhR\         R\        \        ,          R\        \         \         3,          R\        \         ,          R\        \        ,          R\
        R\        /# )r   r   r©   r   r0   rA   Úlog_response_bodyr   )r   r   r×   r   rr   r   r   )r   s   "r   r    r    ’  sk   € ÷ Fñ FÜ	ðFä
”5�/ðFô ”#”s�(�^ðFô ”S�Mð	Fô
 ”c�]ðFô ðFô ñFr!   c           
      óœ  € \        V 4      '       g   \        P                  ! V R 7      hV'       d   V'       g   Rp\        P                  ! WW#R7      pRP                  \        V4       Uu. uF  pRP                  WrV,          4      NK  	  up4      p\        P                  RP                  T;'       g    RT TV'       d   VP                  R4      MR4      4       \        4       P                  R	4      p	\        W�4      '       d   \        WdV	R
7      p
M\        WdR7      p
V
P                   P                  RRR7      p/ p. pRV
P"                  P                  RR4      9   dx   \$        P&                  ! V\(        P*                  R7      p\-        V\.        4      '       d   TpM8\-        V\0        4      '       d   TpM\        P3                  R\5        V4      4       RP                  \        V
P"                  4       Uu. uF%  pRP                  WzP"                  V,          4      NK'  	  up4      pRP                  T;'       g    RW4      pV'       d:   V
P                   pV'       d   TpM
V'       d   TpVRP                  V4      ,          p\        P                  V4       \7        V
P8                  V
P"                  VVVR7      # u upi u upi )rŠ   r•   )r©   r   r0   z, z
'{}': '{}'z'URL [{}]: {}, headers: {{{}}}, data: {}r”   úutf-8Nr#   rÛ   rt   Úignore©Úerrorsúapplication/jsonúcontent-typerÚ   ©Úclsúunexpected JSON response: %sz&URL [{}] response: {}, headers: {{{}}}z
, data: {}©r   r   r   r   r   )r)   r   rà   r
   r5   rQ   rR   r   r;   rZ   r˜   rf   rV   r‡   r6   r~   r   r   rÏ   rÐ   r   ÚDatetimeAwareJSONDecoderÚ
isinstanceÚdictÚlistr¶   r   r   r   )r   r©   r   r0   rA   rè   rD   rn   Úsorted_header_strr2   r}   Údecoded_bodyr   r   Ú	json_bodyÚ	debug_msgÚbody_to_logs   &&&&&&           r   Úreadurlrý   ’  s:  € ô ˜#×ÒÜ×#Ò#¨Ô,Ð,ç—FØˆÜ
�/Š/˜#°'Ô
I€CàŸ	™	Ü5;¸G´_ÓE±_°ˆ×	Ñ	˜Q¨¥
Ö	+±_ÑEóÐô ‡I�IØ1×8Ñ8Ø�OˆO�eØØß$(ˆD�K‰K˜Ô ¨dó		
ôô +Ó,×0Ñ0°Ó9€KÜ˜×*Ò*Ü-Ø¨kô
‰ô ˜sÔ4ˆà—9‘9×#Ñ# G°HÐ#Ó=€Là€IØ€IØ˜TŸ\™\×-Ñ-¨n¸bÓAÔAÜ—J’J˜|´×1NÑ1NÔOˆ	Ü�i¤×&Ò&Ø!‰IÜ˜	¤4×(Ò(Ø!‰Iä�K‰KÐ6¼¸I»ÔGàŸ	™	Ü:@ÀÇÁÔ:NÓOÑ:N°Qˆ×	Ñ	˜Q§¡¨Q¥Ö	0Ñ:NÑOóÐð 9×?Ñ?Ø�ˆ�%˜ó€I÷ à—i‘iˆßØ#‰KßØ#ˆKØ�\×(Ñ(¨Ó5Õ5ˆ	Ü‡I�IˆiÔäØ�Y‰YØ—‘ØØØôð ùòa 	FùòB 	Ps   Á+!KÇ<+K	c          
      óT   € V ^8„  d   QhR\         R\         R\         R\         R\        /# )r   Úsocket_pathÚhttp_methodÚ	http_pathÚhttp_hostnamer   )r   r   )r   s   "r   r    r    Û  s:   € ÷ &ñ &Üð&äð&ô ð&ô ð	&ô
 ñ&r!   c                 óv  € \         P                   ! \         P                  \         P                  4      pVP                  V 4       \        P
                  P                  V4      pWEn         VP                  W4       VP                  4       pVP                  4       P                  R RR7      pVP                  4        VP                  4        / p. p	RVP                  P                  RR4      9   dx   \        P                   ! V\"        P$                  R7      p
\'        V
\(        4      '       d   T
pM8\'        V
\*        4      '       d   T
p	M\,        P/                  R\1        V
4      4       \3        VP4                  \7        VP                  4      VVV	R7      #   TP                  4        TP                  4        i ; i)	rê   rë   rì   rî   rï   rÚ   rð   rò   ró   )r@   ÚAF_UNIXÚSOCK_STREAMÚconnectr$   ÚclientÚHTTPConnectionÚsockr
   Úgetresponser|   r˜   rÁ   r   rV   rÏ   rÐ   r   rô   rõ   rö   r÷   r;   r¶   r   r   Ústatusrp   )rÿ   r   r  r  r	  Úconnr}   Úoutr   r   rú   s   &&&&       r   Úunix_socket_requestr  Û  s>  € ô �=Š=œŸ™¬×);Ñ);Ó<€DØ‡L�L�Ôä�;‰;×%Ñ% mÓ4€DØ„IðØ�‰�[Ô,Ø×ÑÓ!ˆà�i‰i‹k× Ñ  °Ð Ó:ˆà�
‰
ŒØ�
‰
Œà€IØ€IØ˜TŸ\™\×-Ñ-¨n¸bÓAÔAÜ—J’J˜s¬×(EÑ(EÔFˆ	Ü�i¤×&Ò&Ø!‰IÜ˜	¤4×(Ò(Ø!‰Iä�K‰KÐ6¼¸I»ÔGäØ�[‰[Ü  §¡Ó.ØØØôð øð 	�
‰
ŒØ�
‰
�ús   Á+AF Æ"F8)z169.254.169.254Úmetadataz[fd00:ec2::254]rd   )NN)Ú	localhost)9Úemail.messagerh   Úhttp.clientr$   r·   rÏ   Úloggingrß   rT   r@   Útypingr   r   r   r   r   r   Úurllibr	   r
   Úurllib.parser   r   Úuaclientr   r   r   r   rS   ÚPROXY_VALIDATION_APT_HTTP_URLÚPROXY_VALIDATION_APT_HTTPS_URLÚPROXY_VALIDATION_SNAP_HTTP_URLÚPROXY_VALIDATION_SNAP_HTTPS_URLÚ	getLoggerÚreplace_top_level_logger_nameÚ__name__r;   rr   r   r×   r   r   r)   rI   r\   r`   rf   rp   r~   r‡   r‘   r6   r€   rÕ   ræ   rý   r  re   r!   r   Ú<module>r     sR  ðÛ Û Û 	Û Û Û Û 	Û ß ?× ?ß !ß .ç 7Ó 7àEÐ Ø ;Ð Ø!9Ð Ø!:Ð Ø"<Ð à×Ò˜×:Ò:¸8ÓDÓE€á!Øà	�ˆØ	�D˜˜c˜•NÐ#Ø	�ˆðóÐ ñ Øà	�ˆØ	�D˜˜c˜•NÐ#Ø	�ˆØ	�d˜3 ˜8•nÐ%Ø	�d˜3•iÐ ðó	€õõ"/;ðd Ð õ.$õbõ7÷
ò*ò4.÷"\õ~:õ)÷1ðl !Ø Ø Ø!Ø"÷F÷R&ñ &r!   