Ë |LX×óâ£ãóÞ—ddlZddlZddlmZddlmZmZmZm Z m Z m Z m Z m Z ddlmZmZe j"Ze j$Ze j&Ze j(Zd#d„ZGd„d«ZGd „d ej.«Zd „Ze j2ed «ZGd „de j6«Zd„Zd$d„ZGd„de j<«ZGd„de j6«Z Gd„de«Z!er5Gd„de j6«Z"Gd„d e jFejH«Z$Gd„dejJ«Z%Gd„dejL«Z&Gd„dejN«Z(gZ) d%d „Z*d&d!„Z+d"„Z,y)'éNé)Ú_)ÚencodingÚerrorÚhttpconnectionÚ keepaliveÚpycompatÚsslutilÚ urllibcompatÚutil)Ú stringutilÚurlutilcóš—|jdd«}|jdd«}|jdd«}|r|jdd«}|S) a1Replace special characters "&", "<" and ">" to HTML-safe sequences. If the optional flag quote is true, the quotation mark character (") is also translated. This is the same as cgi.escape in Python, but always operates on bytes, whereas cgi.escape in Python 3 only works on unicodes. ó&s&ós>ó"s")Úreplace)ÚsÚquotes ú1usr/lib/python3.12/site-packages/mercurial/url.pyÚescaper$sL€ð � ‰ �$˜Ó!€AØ � ‰ �$˜Ó €AØ � ‰ �$˜Ó €AÙ Ø �I‰I�d˜IÓ &ˆØ €Hócó*—eZdZd„Zd„Zd„Zd„Zd„Zy)Ú passwordmgrcó —||_||_y©N)ÚuiÚpasswddb)Úselfrrs rÚ__init__zpasswordmgr.__init__5s€ØˆŒØ ˆ� rcó>—|jj||||«Sr)rÚ add_password)r ÚrealmÚuriÚuserÚpasswds rr#zpasswordmgr.add_password9s€Ø�}‰}×)Ñ)¨%°°d¸FÓCÐCrcóð—t|td«tf«sJ‚t|t«sJ‚|jj ||«}|\}}t j |«t j |«}}|r>|r<|j||«t j|«t j|«fS|r|shtj|j||«}|rE|\}}|jd«|jd«}}|jjd|z«|r|�sotjt j |««} d| _|jj#«s=t%j&t)d«tj*t-| ««z«‚|jj/t)d«tj*t-| ««z«|jj/t)d«t j |«z«|r(|jj/t)d«|z«n&|jj1t)d«d¬ «}|s|jj3«}|€y |jj5||||«|j||«t j|«t j|«fS) Nsusernamespasswordó#using auth.%s.* for authentication s"http authorization required for %ss#http authorization required for %s s realm: %s s user: %s suser:)Údefault)NN)Ú isinstanceÚtypeÚstrrÚfind_user_passwordr ÚbytesurlÚ _writedebugÚstrurlÚhttpconnectionmodÚreadauthforurirÚgetÚdebugrÚurlÚqueryÚ interactiverÚAbortrÚ hidepasswordÚbytesÚwriteÚpromptÚgetpassr#) r r$ÚauthuriÚauthinfor&r'ÚresÚgroupÚauthÚus rr.zpasswordmgr.find_user_password<sM€Ü˜%¤$ t£*¬cÐ!2Ô3Ð3Ð3ܘ'¤3Ô'Ð'Ð'Ø—=‘=×3Ñ3°E¸7ÓCˆØ‰ ˆˆfÜ×(Ñ(¨Ó.´×0AÑ0AÀ&Ó0IˆfˆÙ ‘FØ × Ñ ˜T 6Ô *Ü—O‘O DÓ)¬8¯?©?¸6Ó+BÐCÐ Cá™6Ü#×2Ñ2°4·7±7¸GÀTÓJˆCÙØ!‘ ��tØ#Ÿx™x¨ Ó4°d·h±h¸{Ó6K�f�Ø—‘— ‘ ÐEÈÑMÔNÙš6Ü— ‘ œH×-Ñ-¨gÓ6Ó7ˆA؈AŒGØ—7‘7×&Ñ&Ô(Ü—k‘kÜÐ;Ó<Ü×*Ñ*¬5°«8Ó4ñ5óðð �G‰G�M‰MÜÐ9Ó:Ü×&Ñ&¤u¨Q£xÓ0ñ1ô ð �G‰G�M‰Mœ!˜NÓ+¬h×.?Ñ.?ÀÓ.FÑFÔ GÙØ—‘— ‘ œa  Ó.°Ñ5Õ6à—w‘w—~‘~¤a¨£k¸4�~Ó@�áØŸ™Ÿ™Ó*�ð ˆ<Øà � ‰ ×"Ñ" 5¨'°4¸Ô@Ø ×ј˜vÔ&Ü—‘ Ó%¤x§¡°vÓ'>Ð?Ð?rcó‚—td«}|jj|||xrdt|«zxsdfz«y)Nó http auth: user %s, password %s ó*ónot set)rrr5Úlen)r r&r'Úmsgs rr0zpasswordmgr._writedebugms:€ÜÐ4Ó5ˆØ �‰� ‰ �c˜T 6Ò#@¨d´S¸³[Ñ.@Ò#NÀJÐOÑOÕPrcó:—|jjd|«Sr)rr.)r r?s rÚfind_stored_passwordz passwordmgr.find_stored_passwordqs€Ø�}‰}×/Ñ/°°gÓ>Ð>rN)Ú__name__Ú __module__Ú __qualname__r!r#r.r0rL©rrrr4s„ò!òDò/@òbQó?rrcó—eZdZd„Zd„Zy)Ú proxyhandlercóþ—|jdd«xstjjd«}|�r”|j d«s|j d«sd|zdz}t j |«}|js.|jdd«|_|jdd«|_d d g}|j|jdd «D�cgc]}|j«‘Œc}«|jtjjd d «jd«D�cgc]0}|j«r|j«j«‘Œ2c}«|jdd«rg|_n||_t!|«}||dœ}|j#dt j$t'|««z«ni}t(j*j-||«||_ycc}wcc}w)Ns http_proxyshostshttp:shttps:shttp://ó/suserspasswds localhosts 127.0.0.1snosno_proxyró,salways)ÚhttpÚhttpssproxying through %s )ÚconfigrÚenvironr4Ú startswithrr6r&r'ÚextendÚ configlistÚlowerÚsplitÚstripÚ configboolÚno_listr-r5r:r;ÚurlreqrRr!r)r rÚproxyurlÚproxyraÚpÚproxiess rr!zproxyhandler.__init__vs¸€Ø—9‘9˜]¨GÓ4ò ¼×8HÑ8H×8LÑ8LØ ó9 ˆò ð×#Ñ# HÔ-°×1DÑ1DÀYÔ1Oà%¨Ñ0°4Ñ7�Ü—K‘K Ó)ˆEØ—:’:ØŸY™Y }°gÓ>�” Ø!Ÿy™y¨¸ ÓB�” ð$ \Ð2ˆGØ �N‰NØ$&§M¡M°-ÀÔ$GÓHÑ$G˜q�—‘•Ð$GÑHô ð �N‰Nô&×-Ñ-×1Ñ1°+¸sÓC×IÑIÈ$ÔOóáO˜Ø—w‘w”yð—G‘G“I—O‘OÕ%ØOñô ð�}‰}˜]¨IÔ6Ø!�• à&�” ô˜5“zˆHØ'°(Ñ;ˆGØ �H‰HØ(¬7×+?Ñ+?ÄÀeà Ó+MÑMõ ðˆGä×Ñ×$Ñ$ T¨7Ô3؈�ùò5Iùòs ÃG5Ä-5G:cóˆ—tjtj|««j d«d}|j D]X}||k(ry|j d«r|j|dd«ry|j d«sŒC|j|dd«sŒXytjj||||«S)Nó:rs*.éó.r) r r/r Úgethostr^rarZÚendswithrbrRÚ proxy_open)r ÚreqrdÚtype_ÚhostÚes rrmzproxyhandler.proxy_open¦s¤€Ü× Ñ ¤×!5Ñ!5°cÓ!:Ó;×AÑAÀ$ÓGÈÑJˆØ—”ˆAØ�qŠyÙØ�|‰|˜EÔ" t§}¡}°Q°q°r°UÔ';ÙØ�|‰|˜DÕ! d§m¡m°A°a°b°EÕ&:Ùð ô×"Ñ"×-Ñ-¨d°C¸ÀÓFÐFrN)rMrNrOr!rmrPrrrRrRus„ò.ó` GrrRcó‡—ˆfd„}|S)Ncó¶•—t|tj«r5|jd«t j |«D] }‰||«Œ y‰||«y©Nr)r+r2Ú httpsendfileÚseekr Ú filechunkiter)r ÚdataÚchunkÚorgsends €rÚ _sendfilez _gen_sendfile.._sendfile´sJø€ä �dÔ-×:Ñ:Ô ;à �I‰I�aŒLÜ×+Ñ+¨DÖ1�Ù˜˜eÕ$ñ2ñ �D˜$Õ rrP)rzr{s` rÚ _gen_sendfiler|³sø€ô ð ÐrÚ httpshandlercóD—eZdZeej j «Zy)rN)rMrNrOr|rÚHTTPConnectionÚsendrPrrrrÄs„á ˜×1Ñ1×6Ñ6Ó 7�Drrcó,—|j}|r|dddvrd|z}d}ntj|«}d}|s|tj|«k(r¸t j t j|««}|s|jdk(rdj|j|jxsdg«|_ |jj«|_ |jj|j j"«yd|_ d|_ y) Né)zhttp://zhttps:/zhttps://TFshttpsrhs443)Ú _tunnel_hostr Ú getselectorÚ getfullurlrr6r r/ÚschemeÚjoinrpÚportÚ realhostportÚheadersÚcopyÚupdateÚparentÚ addheaders)ÚhandlerÚhrnÚ tunnel_hostÚ new_tunnelrDs rÚ_generic_start_transactionr“Ësâ€Ø×"Ñ"€KÙØ �r˜ˆ?Ð"8Ñ 8Ø$ {Ñ2ˆK؉ ä"×.Ñ.¨sÓ3ˆ ؈ á�[¤L×$;Ñ$;¸CÓ$@Ò@Ü �K‰Kœ×)Ñ)¨+Ó6Ó 7ˆÙ ˜Ÿ™ XÒ-Ø!ŸY™Y¨¯©°·±Ò1A¸6Ð'CÓDˆAŒNØŸ ™ ×(Ñ(Ó*ˆAŒIØ �I‰I× Ñ ˜WŸ^™^×6Ñ6Ô 7Ø à€A„NØ€A…IrÚhttpsconnectioncó*‡ —|j}|D�cic]M}|j«jd«r,tj|«tj||«“ŒO}}|j }|j d|z«|j«D]}|j d|z«Œ|j d«|j|j|j¬«Š ‰ j«\}}}|tjk7rnttˆ fd„d««ŒA|dk(r*tt‰ j j"d««y|j%«t'j(d ||j+«fz«‚cc}w) Nzproxy-sCONNECT %s HTTP/1.0 s%s: %s s )ÚmethodcóT•—‰jj«j«Sr)ÚfpÚreadliner_)rAs€rÚz&_generic_proxytunnel..þsø€˜#Ÿ&™&Ÿ/™/Ó+×1Ñ1Ô3rréÈzTunnel connection failed: %d %s)rŠr]rZr Úbytestrr‰r€ÚitemsÚresponse_classÚsockÚ_methodÚ _read_statusÚhttplibÚCONTINUEÚlistÚiterr˜r™ÚcloseÚsocketrr_) r rŠÚxÚ proxyheadersr‰ÚheaderÚversionÚstatusÚreasonrAs @rÚ_generic_proxytunnelr®ásbø€Ø�l‰l€GñóáˆAØ �7‰7‹9× Ñ  Ô )ô ×јӜX×-Ñ-¨g°a©jÓ9Ñ9Øððð ×$Ñ$€L؇I�IÐ(¨<Ñ7Ô8à×$Ñ$Ö&ˆØ � ‰ �- &Ñ(Õ)ð'à‡I�IˆgÔð × Ñ ˜dŸi™i°· ± Ð Ó =€Cð à"%×"2Ñ"2Ó"4ш�˜à ”W×%Ñ%Ò %Ø ä ŒTÓ3°SÓ 9Ô:ð ð�‚}ä ŒT�#—&‘&—/‘/ 7Ó +Õ,à � ‰ Œ Ü�l‰lØ -°¸¿¹»Ð0HÑ Hó ð ùòEs’AFcó—eZdZd„Zd„Zy)Ú httphandlercó.—|jt|«Sr)Údo_openr©r rns rÚ http_openzhttphandler.http_open s€Ø�|‰|œN¨CÓ0Ð0rcó^—t|||«tjj|||«Sr)r“rÚ HTTPHandlerÚ_start_transaction©r r�rns rr·zhttphandler._start_transactions)€Ü" 4¨¨CÔ0Ü×$Ñ$×7Ñ7¸¸aÀÓEÐErN)rMrNrOr´r·rPrrr°r° s „ò1óFrr°có—eZdZd„Zy)ÚlogginghttpconnectioncóX—tjj|g|¢­i|¤Ž||_yr)rrr!Ú_create_connection)r Ú createconnÚargsÚkwargss rr!zlogginghttpconnection.__init__s(€Ü× Ñ ×)Ñ)¨$Ð@°Ò@¸Ò@Ø",ˆÕrN)rMrNrOr!rPrrrºrºs„ó-rrºcó0‡—eZdZdZdˆfd„ Zd„Zd„ZˆxZS)Úlogginghttphandlerz"HTTP handler that logs socket I/O.cóX•—tt|� |¬«||_||_||_y©N©Útimeout)ÚsuperrÁr!Ú_logfhÚ_lognameÚ _observeropts)r ÚlogfhÚnameÚ observeroptsrÅÚ __class__s €rr!zlogginghttphandler.__init__s,ø€Ü Ô  $Ñ0¸Ð0ÔAàˆŒ ؈Œ Ø)ˆÕrcó:—|j|j|«Sr)r²Ú_makeconnectionr³s rr´zlogginghttphandler.http_open&s€Ø�|‰|˜D×0Ñ0°#Ó6Ð6rcó,‡—ˆfd„}t|g|¢­i|¤ŽS)Ncóš•—tj|i|¤Ž}tj‰j|‰j fi‰j ¤ŽSr)r§Úcreate_connectionr ÚmakeloggingsocketrÇrÈrÉ)r¾r¿rŸr s €rÚcreateconnectionz.createconnection*sHø€Ü×+Ñ+¨TÐ<°VÑ<ˆDÜ×)Ñ)Ø— ‘ ˜T 4§=¡=ñØ48×4FÑ4Fñð r)rº)r r¾r¿rÔs` rrÏz"logginghttphandler._makeconnection)s ø€ô ô %Ð%5ÐG¸ÒGÀÑGÐGrr)rMrNrOÚ__doc__r!r´rÏÚ __classcell__)rÍs@rrÁrÁsø„Ù,õ*ò7öHrrÁcó¬—eZdZejZejZe ej«Z ejej«Z dd„Zd„Zy)r”Ncój—tjj|||g|¢­i|¤Ž||_||_yr)rrr!Úkey_fileÚ cert_file)r rprˆrÙrÚr¾r¿s rr!zhttpsconnection.__init__<s4€ô × $Ñ $× -Ñ -¨d°D¸$Ð PÀÒ PÈÒ PØ$ˆDŒMØ&ˆD�Nrcóº—tj|j|jf|j«|_|j}|j }|r t|«|jdd«d}tj|j |j|j|j|¬«|_tj|j «y)Nrhrr)rÚserverhostname)r§rÒrprˆrÅrŸr‰r®Úrsplitr Ú wrapsocketrÙrÚrÚvalidatesocket)r rpr‰s rÚconnectzhttpsconnection.connectIs§€Ü×0Ñ0Ø—‘˜DŸI™IÐ&¨¯ © óˆDŒIð—9‘9ˆDØ×,Ñ,ˆLÙÜ$ TÔ*Ø#×*Ñ*¨4°Ó3°AÑ6�Ü×*Ñ*Ø— ‘ Ø— ‘ Ø—‘Ø—7‘7Ø#ô ˆDŒIô × "Ñ " 4§9¡9Õ -r)NNN)rMrNrOrÚ HTTPResponseržr¢Ú HTTPS_PORTÚ default_portr|Úsafesendr€ÚwrapgetresponserÚ getresponser!ràrPrrr”r”5sU„Ø"×/Ñ/ˆØ×)Ñ)ˆ á˜Y×/Ñ/Ó0ˆØ/�i×/Ñ/°×0FÑ0FÓGˆ ð ØØó 'ó .rcó(—eZdZdd„Zd„Zd„Zdd„Zy)r}Ncóð—tjj||¬«tjj|«||_t |j |j j«|_yrÃ) rÚKeepAliveHandlerr!rbr}rrÚhttppasswordmgrdbÚpwmgr)r rrÅs rr!zhttpshandler.__init__]sR€Ü × &Ñ &× /Ñ /°¸gÐ /Ô FÜ × Ñ × (Ñ (¨Ô .؈DŒGÜ$ T§W¡W¨d¯g©g×.GÑ.GÓHˆD�Jrcó^—t|||«tjj|||«Sr)r“rrér·r¸s rr·zhttpshandler._start_transactioncs)€Ü & t¨Q°Ô 4Ü×-Ñ-×@Ñ@ÀÀqÈ#ÓNÐ NrcóJ—tj|«}|jj|«\}}t j |j ||«}|r+|\}}||_|j jd|z«nd|_|j|j|«S)Nr)) r r…rërLr2r3rrCr5r²rÏ)r rnr6r&ÚpasswordrArBrCs rÚ https_openzhttpshandler.https_opengs‹€ô×)Ñ)¨#Ó.ˆCØ!ŸZ™Z×<Ñ<¸SÓA‰NˆD�(Ü#×2Ñ2°4·7±7¸CÀÓFˆCÙØ!‘ ��tØ �” Ø—‘— ‘ ÐEÈÑMÕNà �” Ø—<‘< × 4Ñ 4°cÓ:Ð :rcó6—d}d}t|«dk\r|d}t|«dk\r|d}|dd}|jr:d|jvr,d|jvr|jd}|jd}t||||g|¢­i|¤Ž}|j|_|S)Nrrriskeyscert)rIrCr”r)r rprˆr¾r¿ÚkeyfileÚcertfileÚconns rrÏzhttpshandler._makeconnectionus¯€ØˆG؈Hä�4‹y˜AŠ~ؘq™'�Ü�4‹y˜AŠ~Ø ™7�ؘ˜�8ˆDð�yŠy˜V t§y¡yÑ0°WÀÇ Á Ñ5IØŸ)™) FÑ+�ØŸ9™9 WÑ-�ä"Ø�d˜G XðØ04òØ8>ñˆDð—g‘gˆDŒG؈Krr)rMrNrOr!r·rïrÏrPrrr}r}\s„ó Iò  Oò ;ô rcó—eZdZd„Zd„Zd„Zy)ÚhttpdigestauthhandlercóX—tjj|g|¢­i|¤Žd|_yr)rbrõr!Ú retried_req©r r¾r¿s rr!zhttpdigestauthhandler.__init__�s(€Ü×$Ñ$×-Ñ-¨dÐD°TÒD¸VÒD؈Õrcó—yrrP©r s rÚreset_retry_countz'httpdigestauthhandler.reset_retry_count‘ó€ð rcó€—||jur||_d|_tjj |||||«Srt)r÷ÚretriedrbrõÚhttp_error_auth_reqed©r Ú auth_headerrprnrŠs rrÿz+httpdigestauthhandler.http_error_auth_reqed—sC€à �d×&Ñ&Ñ &Ø"ˆDÔ ØˆDŒLÜ×+Ñ+×AÑAØ �+˜t S¨'ó ð rN)rMrNrOr!rûrÿrPrrrõrõŒs„ò ò ó  rrõcó0—eZdZd„Zd„Zd„Zd„Zd„Zd„Zy)Úhttpbasicauthhandlercóf—d|_tjj|g|¢­i|¤Žd|_yr)rCrbrr!r÷røs rr!zhttpbasicauthhandler.__init__¢s/€ØˆŒ Ü×#Ñ#×,Ñ,¨TÐC°DÒC¸FÒC؈Õrcój—|jr&|j|j|j«|Sr©rCÚadd_unredirected_headerr©r Úrequests rÚ http_requestz!httpbasicauthhandler.http_request§ó(€Ø �9Š9Ø × +Ñ +¨D×,<Ñ,<¸d¿i¹iÔ Hàˆrcój—|jr&|j|j|j«|Srrrs rÚ https_requestz"httpbasicauthhandler.https_request­r rcó—yrrPrús rrûz&httpbasicauthhandler.reset_retry_count³rürcó€—||jur||_d|_tjj |||||«Srt)r÷rþrbrrÿrs rrÿz*httpbasicauthhandler.http_error_auth_reqed¹sC€à �d×&Ñ&Ñ &Ø"ˆDÔ ØˆDŒLÜ×*Ñ*×@Ñ@Ø �+˜t S¨'ó ð rcóô—|jj|tj|««\}}|�Ädt j |«t j |«fz}dt j tj|«j««z}|j|jd«|k(ry||_ |j|j|«|jj|«Sy)Ns%s:%szBasic %s)r'r.r r…r r/r1Úbase64Ú b64encoder_Ú get_headerrrCrr�Úopen)r rprnr$r&ÚpwÚrawrCs rÚretry_http_basic_authz*httpbasicauthhandler.retry_http_basic_authÂs΀Ø—;‘;×1Ñ1Ø ”<×*Ñ*¨3Ó/ó ‰ˆˆbð ˆ>Øœh×/Ñ/°Ó5´x×7HÑ7HÈÓ7LÐMÑMˆCؤ§¡´×0@Ñ0@ÀÓ0E×0KÑ0KÓ0MÓ NÑNˆDØ�~‰~˜d×.Ñ.°Ó5¸Ò=ØØˆDŒIØ × 'Ñ '¨×(8Ñ(8¸$Ô ?Ø—;‘;×#Ñ# CÓ(Ð (àrN) rMrNrOr!r r rûrÿrrPrrrr¡s „ò ò ò ò  ò  ó rrcó—eZdZd„Zd„Zd„Zy)Ú cookiehandlercó²—d|_|jdd«}|sytj|«} tjj t j|««}|j«||_y#tjj$r<}|jtd«|tj|«fz«Yd}~yd}~wwxYw)Nsauths cookiefiles?(error loading cookie file %s: %s; continuing without cookies) )Ú cookiejarrXr Ú expandpathÚ cookielibÚMozillaCookieJarr ÚfsdecodeÚloadÚ LoadErrorÚwarnrr Ú forcebytestr)r rÚ cookiefilerrqs rr!zcookiehandler.__init__Ós¹€ØˆŒà—Y‘Y˜w¨ Ó6ˆ ÙØ ä—_‘_ ZÓ0ˆ ð ÜŸ™×7Ñ7Ü×!Ñ! *Ó-óˆIð �N‰NÔ Ø&ˆD�NøÜ�~‰~×'Ñ'ò Ø �G‰GÜð"óðœz×6Ñ6°qÓ9Ð:ñ ;÷ ñ ûð ús³A A=Á=CÂ2CÃCcóT—|jr|jj|«|Sr©rÚadd_cookie_headerrs rr zcookiehandler.http_requestêó €Ø �>Š>Ø �N‰N× ,Ñ ,¨WÔ 5àˆrcóT—|jr|jj|«|Srr&rs rr zcookiehandler.https_requestðr(rN)rMrNrOr!r r rPrrrrÒs„òò.ó rrc ó2—|jtdd«}g}|r#|jt|||xsi|¬««n=|jt |¬««t r|jt ||¬««|jt|««t||j«} |�c|\} } } } | j| d«\}}| |k7s| r| j| | | | «|jd| | xrdt| «zxsdfz«|jt| «t!| «f«|jt"D�cgc] }||| «‘Œ c}«|jt%|««t'j(|Ž}d|_d|_d|_|s5dt1j2«z}d t5j6|«fg|_nd t5j6|«fg|_|r|j8jd «|Scc}w) a@ construct an opener suitable for urllib2 authinfo will be added to the password manager The opener can be configured to log socket events if the various ``logging*`` arguments are specified. ``loggingfh`` denotes a file object to log events to. ``loggingname`` denotes the name of the to print when logging. ``loggingopts`` is a dict of keyword arguments to pass to the constructed ``util.socketobserver`` instance. ``sendaccept`` allows controlling whether the ``Accept`` request header is sent. The header is sent by default. shttpstimeoutrÄrrFrGrHs"mercurial/proto-1.0 (Mercurial %s)z User-agent)ÚAcceptzapplication/mercurial-0.1)Ú configwithÚfloatÚappendrÁr°Ú has_httpsr}rRrrêrLr#r5rIr[rrõÚ handlerfuncsrrbÚ buildopenerÚ requestscountÚsentbytescountÚreceivedbytescountr r«r ÚsysstrrŽ)rr@Ú useragentÚ loggingfhÚ loggingnameÚ loggingoptsÚ sendacceptrÅÚhandlersÚpassmgrr$Úurisr&r'Ú saveduserÚ savedpassr�ÚopenerÚagents rr@r@úsò€ð0�m‰mœE 7¨JÓ7€GØ€HáØ�‰Ü ؘ;¨ Ò(9°rÀ7ô õ ð �‰œ ¨GÔ4Ô5Ý Ø �O‰OœL¨°WÔ=Ô >à ‡O�O”L Ó$Ô%ä˜"˜b×2Ñ2Ó3€GØÐØ$,Ñ!ˆˆt�T˜6Ø&×;Ñ;¸DÀ¹GÓDш �9Ø �9Ò ¡Ø × Ñ  ¨¨d°FÔ ;Ø �‰Ø 0Ø�VÒ2 ¤s¨6£{Ñ 2Ò@°jÐAñ Bô ð  ‡O�OÜ ˜gÓ &Ô(=¸gÓ(FÐGôð ‡O�O­\Ó:©\¨‘Q�r˜7•^¨\Ñ:Ô;Ø ‡O�O”M "Ó%Ô&Ü × Ñ  Ð *€Fð€FÔØ€FÔØ !€FÔñ" Ø5¼¿ ¹ »ÑFˆØ*¬H¯O©O¸EÓ,BÐCÐDˆÕà*¬H¯O©O¸IÓ,FÐGÐHˆÔñ Ø×Ñ× Ñ Ð!HÔIà €MùòK;sÅ HcóÜ—tj|«}|jr3|jj«|_|j «\}}nht j t j|««}dtjtjtj|«««z}d}t|||¬«jtj|«|«S)Nsfile://)r:)rr6r†r]r@r ÚnormpathÚabspathr r/rbÚ pathname2urlrr@rr1)rÚurl_rxr:rDr@Úpaths rrr[s°€Ü� ‰ �DÓ€A؇x‚xØ—8‘8—>‘>Ó#ˆŒØŸ™›‰ˆ‰hä�}‰}œTŸ\™\¨$Ó/Ó0ˆØœH×-Ñ-Ü × Ñ ¤× 1Ñ 1°$Ó 7Ó 8ó ñ ˆðˆÜ �"�h¨:Ô 6× ;Ñ ;Ü�‰˜Ó˜tó ðrcóZ‡—|jŠGˆfd„d|j«}||_y)z˜Wrap a response object with common error handlers. This ensures that any I/O from any consumer raises the appropriate error and messaging. có•—eZdZdˆfd„ Zy)ú!wrapresponse..readerproxyNc󨕗 ‰|«S#tj$rq}|jr5t|j«}|j|z}t d«||fz}n t d«}t j|t d«¬«‚d}~wtj$r1}t jt d«|zt d«¬«‚d}~wwxYw)NsBHTTP request error (incomplete response; expected %d bytes got %d)s(HTTP request error (incomplete response)svthis may be an intermittent network failure; if the error persists, consider contacting the network or server operator)ÚhintsHTTP request error (%s)) r¢ÚIncompleteReadÚexpectedrIÚpartialrrÚPeerTransportErrorÚ HTTPException)r ÚsizerqÚgotÚtotalrJÚorigreads €rÚreadz&wrapresponse..readerproxy.readtsÖø€ð Ù “~Ð%øÜ×)Ñ)ò à—:’:ܘaŸi™i›.�CØŸJ™J¨Ñ,�EÜð5óð ˜ ñ%‘Cô ÐGÓH�Cä×.Ñ.ØÜð6óôðûô×(Ñ(ò Ü×.Ñ.ÜÐ0Ó1°AÑ5Üð6óôðûð ús!ƒ ‹CžA,B  C ,C à Cr)rMrNrOrV)rUs€rÚ readerproxyrJssø„ö rrWN)rVrÍ)ÚresprWrUs @rÚ wrapresponserYks(ø€ð �y‰y€Hö �d—n‘nô ðD!€D…Nrr)r r”)NNNósNT)NT)-rr§Úi18nrÚrrrr2rr r r r Úutilsr rr¢ÚstringioÚurlerrrbrrrRr|Ú safehasattrr/rr“r®r¶r°rºrÁr”rér}rõrÚ basehandlerrr0r@rrYrPrrÚrbsrðóÛ å÷ ÷ ó ÷ð �,‰,€Ø �=‰=€Ø �‰€Ø �‰€ó  ÷ >?ñ>?ôB;G�6×&Ñ&ô;Gò| ð ˆD× Ñ ˜V ^Ó 4€ ô8�Y×-Ñ-ô8òó,& ôRF�)×'Ñ'ôFô-˜I×4Ñ4ô-ô H˜ôHñ4 ô%.˜)×2Ñ2ô%.ôN-�y×1Ñ1°6×3FÑ3Fô-ô` ˜F×8Ñ8ô ô*.˜6×6Ñ6ô.ôb"�F×&Ñ&ô"ðJ€ ð ØØØØØó^óB ó *!r