+
    kHàj…u  ã                  ó8  € 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t^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHtHtHt RR	R
R/t R3t!R4t" ! R R]PF                  PH                  4      t%R R lt&]PF                  PO                  ]%! 4       ]PF                  PQ                  ]&! 4       R7      4      t) ! R R]*4      t+R5R R llt, ! R R]+4      t-]! RR7       ! R R4      4       t.R R lt/ ! R R]+4      t0 ! R R ]+4      t1 ! R! R"]+4      t2]! RR7       ! R# R$4      4       t3]4]5]6]63,          ,          t7]]6]6]8]9]73,          .R3,          t:R% R& lt;R' R( lt<R) R* lt=R+t>R,]>/R- R. llt?R/ R0 lt@ ! R1 R24      tAR# )6u  Resumable, hash-verified, multi-connection downloads.

Every large fetch in Hermes goes through this one downloader: pm
packages (pinned sha256 from lock.json) and local models (deliberately
unverified â€” catalog sizes may lag an upstream re-upload, so sha256 is
optional per source).

Partial state is the downloader's own. Files land in a managed
partials area keyed by sha256(url). One process owns each key while it
transfers or publishes. Complete bytes are copied to destination-local
staging before atomic replacement; a failed copy leaves the old destination
intact. An interrupted download keeps its durable ranges bound to the remote
length, strong ETag and optional pinned hash. Unidentified data restarts
instead of mixing bytes from different upstream versions.

The progress callback reports the whole job AND the per-dest bitmap:
``progress(overall_done, overall_total, ranges)`` where ``ranges`` maps
the destination path to half-open [start, end) runs. ``done_bytes`` is the sum;
``ranges`` is the shape â€” one datum, two resolutions.
)ÚannotationsN)Úsuppress)Ú	dataclass)ÚPath)ÚCallableÚOptionalÚSequence)Ú
edge_blockÚis_transientÚretry_networkz
User-Agentz-Mozilla/5.0 (X11; Linux x86_64) hermes-pm/1.0zAccept-EncodingÚidentityc                  ó,   a € ] tR t^5tRtV 3R ltRtV ;t# )Ú_HttpsRedirectHandleru§   The https-only gate must hold across redirects, not just the first
hop â€” an https URL could otherwise bounce to http mid-download and
carry the payload in the clear.c                	óø   <€ VP                   P                  \        4      ;'       d    VP                  \        4      pVP                  R 4      '       g   V'       g   \        RV 24      h\        SV `  WW4WV4      # )úhttps://z$refusing redirect to non-https url: )Úfull_urlÚ
startswithÚ	_LOOPBACKÚDownloadErrorÚsuperÚredirect_request)	ÚselfÚreqÚfpÚcodeÚmsgÚheadersÚnewurlÚloopbackÚ	__class__s	   &&&&&&& €Ú2/home/ubuntu/.hermes/hermes-agent/pm/downloader.pyr   Ú&_HttpsRedirectHandler.redirect_request:   sh   ø€ ð —<‘<×*Ñ*¬9Ó5×VÐV¸&×:KÑ:KÌIÓ:VˆØ×!Ñ! *×-Ò-·ÜÐ"FÀvÀhÐ OÓPÐPô ‰wÑ'¨°¸GÓLÐLó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__static_attributes__Ú__classcell__©r   s   @r    r   r   5   s   ø† ñ'÷	Mó 	Mr"   r   c               ó   € V ^8„  d   QhRR/# )é   Úreturnzssl.SSLContextr#   )Úformats   "r    Ú__annotate__r0   F   s   € ÷ ñ ˜ñ r"   c                 ó~   € \         P                  ! 4       p V ;P                  \         P                  ,          un        V # ©N)ÚsslÚcreate_default_contextÚverify_flagsÚVERIFY_X509_PARTIAL_CHAIN©Úcontexts    r    Ú_https_contextr9   F   s.   € ô ×(Ò(Ó*€GØ×ÒœC×9Ñ9Õ9ÕØ€Nr"   r7   c                  ó   € ] tR t^TtRtRtR# )r   z#Base class for downloader failures.r#   N©r$   r%   r&   r'   r(   r)   r#   r"   r    r   r   T   s   † Ý-r"   r   c               ó(   € V ^8„  d   QhRRRRRRRR/# )r-   ÚstartÚintÚendÚtotalz
int | Noner.   r#   )r/   s   "r    r0   r0   X   s)   € ÷ ñ  Sð ¨sð ¸:ð ÐQTñ r"   c                ó`  € \         P                  ! RV P                  P                  RR4      4      pV P                  ^Î8w  g   Vf   \        R4      h\        \        VP                  4       4      w  rVpWV3W^,
          38w  g   Wr8  g   Ve   Ws8w  d   \        R4      hV P                  P                  R4      pVe8   VP                  4       '       d   \        V4      W!,
          8w  d   \        R4      hV P                  P                  RR	4      P                  4       R	8w  d   \        R
4      hV# )z=A range body is useful only for the exact requested interval.zbytes (\d+)-(\d+)/(\d+)zContent-RangeÚ z-server did not honor the requested byte rangez=server returned a different byte range or representation sizeúContent-Lengthz.range Content-Length does not match its boundsúContent-Encodingr   z>encoded response cannot be written into an identity byte range)ÚreÚ	fullmatchr   ÚgetÚstatusÚ_RangeErrorÚmapr>   ÚgroupsÚ	isdecimalÚlower)	Úresponser=   r?   r@   ÚmatchÚfirstÚlastÚsizeÚlengths	   &&&&     r    Ú_validate_rangerT   X   s   € ä�LŠLÐ3°X×5EÑ5E×5IÑ5IÈ/Ð[]Ó5^Ó_€EØ‡�˜#Ô ¢ÜÐIÓJÐJÜœC §¡£Ó0Ñ€E�Ø€}˜ a¥Ð(Ô(¨D¬J¸5Ò;LÐQUÔQ^ÜÐYÓZÐZØ×Ñ×!Ñ!Ð"2Ó3€FØÒ 6×#3Ñ#3×#5Ò#5¼¸V»ÈÍÔ9SÜÐJÓKÐKØ×Ñ×ÑÐ.°
Ó;×AÑAÓCÀzÔQÜÐZÓ[Ð[Ø€Kr"   c                  ó   € ] tR t^htRtRtR# )rI   zIRange or representation identity changed; partial bytes cannot be reused.r#   Nr;   r#   r"   r    rI   rI   h   s   † ÝSr"   rI   T)Úfrozenc                  ó:   € ] tR t^lt$ R]R&   R]R&   RtR]R&   RtR	# )
Ú_Remoter>   r@   ÚboolÚrangedrB   ÚstrÚetagr#   N)r$   r%   r&   r'   Ú__annotations__r\   r)   r#   r"   r    rX   rX   l   s   ‡ àƒJØƒLØ€Dˆ#‡Nr"   rX   c               ó   € V ^8„  d   QhRR/# )r-   r.   r[   r#   )r/   s   "r    r0   r0   s   s   € ÷ Jñ J˜cñ Jr"   c                óž   € V P                   P                  R R4      pVP                  R4      '       d   VP                  R4      '       d   V# R# )ÚETagrB   Ú")r   rG   r   Úendswith)rN   Úvalues   & r    Ú_strong_etagrd   s   sC   € Ø×Ñ× Ñ  ¨Ó,€EØ×$Ñ$ S×)Ò)¨e¯n©n¸S×.AÒ.Aˆ5ÐIÀrÐIr"   c                  ó   € ] tR t^xtRtRtR# )Ú	HashErrorz5The downloaded bytes did not match the pinned sha256.r#   Nr;   r#   r"   r    rf   rf   x   s   † Ý?r"   rf   c                  ó   € ] tR t^|tRtRtR# )ÚDownloadPausedz;pause() was called mid-download; partials were left intact.r#   Nr;   r#   r"   r    rh   rh   |   s   † ÝEr"   rh   c                  ó2   a € ] tR t^€tRtR V 3R lltRtV ;t# )ÚDownloadTransportErrorz?An exhausted network request, with its original status and URL.c               ó    € V ^8„  d   QhRRRR/# )r-   Úurlr[   ÚcauseÚ	Exceptionr#   )r/   s   "r    r0   Ú#DownloadTransportError.__annotate__ƒ   s   € ÷ Bñ B˜Cð B¨	ñ Br"   c                	ó*  <€ Wn         \        V\        P                  P                  4      '       d   VP
                  MR V n        \        \        VRV4      \        P                  4      pV P                  R9   ;'       g7    V P                  ;'       g    ^ R8¬  ;'       g    T;'       g    \        V4      V n        \        V4      ;'       g    V P                  R9   d   RMR pV'       d   V RV 2M
\        V4      p\        SV `=  RV RV 24       R # )	NÚreasoniô  zthe host refused accessz; zdownload failed from z: )é‘  é“  é”  iš  )rr   rs   )rl   Ú
isinstanceÚurllibÚerrorÚ	HTTPErrorr   rH   ÚgetattrÚsocketÚgaierrorr
   Úfallback_allowedr	   r[   r   Ú__init__)r   rl   rm   Ú
unresolvedÚrefusedrq   r   s   &&&   €r    r}   ÚDownloadTransportError.__init__ƒ   sñ   ø€ ØŒÜ$.¨u´f·l±l×6LÑ6L×$MÒ$M�e—j’jÐSWˆŒô  ¤¨¨x¸Ó ?ÄÇÁÓQˆ
ð �K‰KÐ/Ñ/÷ 1ð 1°D·K±K×4DÐ4DÀ1ÈÑ3L÷ 1ð 1Ø÷1ð 1Ü)¨%Ó0ð 	Ôô ˜UÓ#×iÐiÀTÇ[Á[ÐT^ÔE^Ñ(AÐdhˆß*1�E�7˜"˜W˜IÑ&´s¸5³zˆÜ‰ÑÐ0°°°R¸°xÐ@ÖAr"   )r|   rH   rl   )r$   r%   r&   r'   r(   r}   r)   r*   r+   s   @r    rj   rj   €   s   ø† ÙI÷Bö Br"   rj   c                  óH   € ] tR t^”t$ R]R&   R]R&   RtR]R&   R	tR]R&   R	tR
# )ÚSourcer[   rl   r   ÚdestrB   Úsha256ztuple[str, ...]Ú	fallbacksr#   N)r$   r%   r&   r'   r]   r„   r…   r)   r#   r"   r    r‚   r‚   ”   s    ‡ à	ƒHØ
ƒJØ€FˆCÓØ!#€Iˆ×#r"   r‚   c               ó    € V ^8„  d   QhRRRR/# )r-   ÚrangesÚ_Rangesr.   r#   )r/   s   "r    r0   r0       s   € ÷ ñ �gð  'ñ r"   c                óî   € \        R V  4       4      pV'       g   . # . pV^ ,          w  r4VR,           F,  w  rVWT8:  d   \        WF4      pK  VP                  W434       YVrCK.  	  VP                  W434       V# )z?Merge half-open [start, end) ranges into sorted, disjoint runs.c              3  ó<   "  € T F  w  rW!8”  g   K  W3x € K  	  R # 5ir2   r#   )Ú.0ÚaÚbs   &  r    Ú	<genexpr>Ú_coalesce.<locals>.<genexpr>¢   s   é € Ð5¡V™T˜Q¨q©u”&�1•&£Vùs   ‚
‘:é   NN)ÚsortedÚmaxÚappend)r‡   ÚrunsÚoutrŒ   r�   ÚxÚys   &      r    Ú	_coalescer˜       sr   € äÑ5¡VÓ5Ó5€DßØˆ	Ø€CØ��7�D€AØ�R—�‰ˆØŒ6Ü�A“	ŠAà�J‰J˜�vÔØŠqñ ð ‡J�J�ˆvÔØ€Jr"   c               ó$   € V ^8„  d   QhRRRRRR/# )r-   r@   r>   Úcoveredrˆ   r.   r#   )r/   s   "r    r0   r0   ±   s!   € ÷ 
ñ 
�Cð 
 'ð 
¨gñ 
r"   c                ó¬   € . p^ p\        V4       F(  w  rEWC8”  d   VP                  W434       \        W54      pK*  	  W08  d   VP                  W034       V# )z;The gaps in [0, total) not covered by the coalesced bitmap.)r˜   r“   r’   )r@   rš   ÚmissingÚcursorrŒ   r�   s   &&    r    Ú_missingrž   ±   sS   € à€GØ€FÜ˜'Ö"‰ˆØŒ:Ø�N‰N˜F˜;Ô'Ü�V“Šñ #ð „~Ø�‰˜�Ô'Ø€Nr"   c               ó    € V ^8„  d   QhRRRR/# )r-   Úpathr   r.   r[   r#   )r/   s   "r    r0   r0   ¾   s   € ÷ ñ �tð  ñ r"   c                ó  a€ \         P                  ! 4       p\        V R 4      ;_uu_ 4       o\        V3R lR4       F  pVP	                  V4       K  	  RRR4       VP                  4       #   + '       g   i     TP                  4       # ; i)Úrbc                 ó.   <€ S P                  \        4      # r2   )ÚreadÚ_CHUNK)Úfs   €r    Ú<lambda>Ú_sha256_file.<locals>.<lambda>Á   s   ø€  !§&¡&¬¤.r"   r"   N)Úhashlibr„   ÚopenÚiterÚupdateÚ	hexdigest)r    ÚdigestÚblockr¦   s   &  @r    Ú_sha256_filer°   ¾   sl   ø€ Ü�^Š^Ó€FÜ	ˆd�D×	Ô	˜QÜÔ0°#Ö6ˆEØ�M‰M˜%Ö ñ 7÷ 
ð ×ÑÓÐ÷ 
Ö	ð ×ÑÓÐús   «)A,Á,B	g      N@Útimeoutc               ó(   € V ^8„  d   QhRRRRRRRR/# )r-   Útmpr   rƒ   r±   Úfloatr.   ÚNoner#   )r/   s   "r    r0   r0   Ë   s)   € ÷ (ñ (˜tð (¨4ð (¸Uð (Ð_cñ (r"   c               ó^  € \         P                  ! 4       V,           pRp  \        P                  ! W4       R#   \         di   p\         P                  ! 4       T8¼  d   \        RT P                   R24      Th\         P                  ! T4       \        T^,          R4      p Rp?Kˆ  Rp?ii ; i)uS  Rename a finished download into place, waiting out a transient hold on the file.

On Windows a multi-gigabyte file whose last write handle just closed is often still open
to an antivirus or indexing scan, and renaming it fails with a permission error until the
scan lets go â€” which for a 22 GB model can take many seconds. ``os.replace`` is retried
through that window; it never falls back to copying (``shutil.move`` does, which duplicates
the whole file and then reports the leftover's failed delete as the download's failure).
A hold that outlasts the window raises a plain-language error.
gš™™™™™¹?NzLThe download finished, but another program (usually an antivirus scan) kept z? open and it could not be renamed into place. Please try again.g       @)	ÚtimeÚ	monotonicÚosÚreplaceÚPermissionErrorÚRuntimeErrorÚnameÚsleepÚmin)r³   rƒ   r±   ÚdeadlineÚdelayÚexcs   &&$   r    Úreplace_when_releasedrÃ   Ë   s•   € ô �~Š~Ó 'Õ)€HØ€EØ
ð		(Ü�JŠJ�sÔ!ÙøÜô 	(Ü�~Š~Ó 8Ô+Ü"ØbØ—x‘x�jÐ _ðaóbàgjðkô �JŠJ�uÔÜ˜ �	 3Ó'ŽEûð	(ús   ¡9 ¹B,ÁAB'Â'B,c               ó    € V ^8„  d   QhRRRR/# )r-   Úsourcer‚   r.   rY   r#   )r/   s   "r    r0   r0   ä   s   € ÷ ñ ˜fð ¨ñ r"   c                óH  € V P                   P                  4       '       g   R# V P                   P                  4       '       g   \        RV P                    24      hV P                  '       g   R#  \        V P                   4      V P                  8H  #   \         d     R# i ; i)zØPinned destinations are rehashed; unpinned model files are accepted as-is.

Catalog policy does not supply their expected hash or stable length.
Only this downloader's publication path guarantees complete new files.
Fz$download destination is not a file: T)rƒ   ÚexistsÚis_fileÚIsADirectoryErrorr„   r°   ÚOSError)rÅ   s   &r    Ú_existing_dest_okrË   ä   s   € ð �;‰;×Ñ×ÒÙØ�;‰;×Ñ× Ò ÜÐ"FÀvÇ{Á{ÀmÐ TÓUÐUØ�=�=ˆ=ÙðÜ˜FŸK™KÓ(¨F¯M©MÑ9Ð9øÜô Úðús   Á0!B ÂB!Â B!c                  ó   € ] tR t^ötRt^tRRR]RRRR/R R	 lltR
 R ltR)R R lltR R lt	R R lt
R R ltR R ltR R ltR R ltR R ltR R lt]R R l4       tR  R! ltR" R# ltR$ R% ltR& R' ltR(tR# )*ÚDownloadaV  One resumable download job: a plan of sources, run in parallel.

Per source: probe Range support, preallocate a flat .part in the
managed partials area, split into at most ``connections`` byte
ranges, and stream each with a ``Range:`` header from a worker
thread. A lock-protected bitmap records which ranges are actually
durable; on resume only the missing ranges are re-fetched.

``Source.dest`` is atomically replaced only after successful transfer.
``pause()`` stops between chunks or while waiting for a partial's owner;
``run()`` raises :class:`DownloadPaused` and preserves resumable bytes.
ÚresumeTÚconnectionsÚpartials_dirNÚpause_eventc          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   ÚsourceszSequence[Source]rÎ   rY   rÏ   r>   rÐ   zOptional[Path]rÑ   zOptional[threading.Event]r#   )r/   s   "r    r0   ÚDownload.__annotate__  sC   € ÷ Uñ Uà!ðUð ð	Uð
 ðUð %ðUð /ñUr"   c               	óÐ  € V Uu. uFK  p\        VP                  \        VP                  4      VP                  \        VP                  4      4      NKM  	  upV n        W n        \        ^\        V4      4      V n        V'       d   \        V4      V n        M^ RIHp VP                  4       V n        VRJ V n        Ve	   WPn        R# \"        P$                  ! 4       V n        R# u upi )r�   )ÚpathsN)r‚   rl   r   rƒ   r„   Útupler…   rÓ   rÎ   r’   r>   rÏ   rÐ   ÚpmrÖ   Úpartials_rootÚ_owns_pause_eventÚ	threadingÚEventÚ_paused)r   rÓ   rÎ   rÏ   rÐ   rÑ   ÚsrÖ   s   &&$$$$  r    r}   ÚDownload.__init__  sª   € ñ \cÓcÑ[bÐVWœ˜qŸu™u¤d¨1¯6©6£l°A·H±H¼eÀAÇKÁKÓ>PÖQÑ[bÑcˆŒØŒÜ˜q¤# kÓ"2Ó3ˆÔßÜ $ \Ó 2ˆDÕå à %× 3Ñ 3Ó 5ˆDÔØ!,°Ð!4ˆÔØ&1Ò&=�{ŽÄ9Ç?Â?ÓCTˆŽùò ds   …AC#c               ó   € V ^8„  d   QhRR/# ©r-   r.   rµ   r#   )r/   s   "r    r0   rÔ     s   € ÷ ñ �tñ r"   c                ó:   € V P                   P                  4        R# )z;Request a stop between chunks; run() raises DownloadPaused.N)rÝ   Úset©r   s   &r    ÚpauseÚDownload.pause  s   € à�‰×ÑÖr"   c               ó    € V ^8„  d   QhRRRR/# )r-   ÚprogresszOptional[ProgressFn]r.   z
list[Path]r#   )r/   s   "r    r0   rÔ     s   € ÷ >8ñ >8Ð0ð >8¸Jñ >8r"   c                ót  a aaaaaaa€ S P                   '       d   S P                  P                  4        S P                  4        S P                  P                  RRR7       S P                   F©  pVP                  '       d3   \        P                  ! RVP                  4      '       g   \        R4      hVP                  .VP                  O FE  pVP                  R4      '       d   K  VP                  \        4      '       d   K9  \        RV 24      h	  K«  	  ^ RIHp / o\#        4       o/ o. p/ pS P                   EFQ  pS P                  4        \%        VP&                  4      o. VS&   \)        V4      '       d?   \+        VP&                  P-                  4       P.                  R4      p^ VP0                  3.pM¯S P3                  VV 3R	 lVS,          4      w  r'. pV! S P                  S P5                  VP                  4      RR
7      ;_uu_ 4       p	V	'       d$   VP6                  '       d   S P9                  W'4      pRRR4       VP0                  '       g   SP;                  S4       VP=                  V4       VP0                  SS&   VSS&   EKT  	  RR/R VVVV3R llloV FR  p\%        VP&                  4      oR VV3R lloS P3                  VV V3R lVS,          4      w  r«S! S^ V3.VRR7       KT  	  S P                   Uu. uF  q"P&                  NK  	  up#   + '       g   i     Lê; iu upi )z7Fetch every source; return the moved destination paths.T©ÚparentsÚexist_okz[a-f0-9]{64}z0mirror fallback requires a full lowercase SHA256r   zrefusing non-https url: ©Úpartial_lockFc                ó:   <€ SP                  V P                  4      # r2   )Ú_proberl   )Ú	candidater   s   &€r    r§   ÚDownload.run.<locals>.<lambda>=  s   ø€ ÈTÏ[É[ÐYb×YfÑYfÔMgr"   ©ÚwaitNÚcompletec          
     ó,   € V ^8„  d   QhRRRRRRRRR	R
/# )r-   Úkeyr[   Úwrittenrˆ   r@   r>   rõ   rY   r.   rµ   r#   )r/   s   "r    r0   Ú"Download.run.<locals>.__annotate__H  s7   € ÷ 	Wñ 	W˜ð 	W gð 	W°cð 	WÈð 	WÐY]ñ 	Wr"   c               ól  <€ VSV &   V'       g	   V'       d   SP                  V 4       MSP                  V 4       SP                  V R 4       \        V4      SV &   SeW   \	        R SP                  4        4       4      pS! TS'       d   ^ M\	        SP                  4       4      \        S4      4       R # R # )Nc              3  óF   "  € T F  q F  w  r#W2,
          x € K  	  K  	  R # 5ir2   r#   )r‹   ÚrowsrŒ   r�   s   &   r    rŽ   Ú/Download.run.<locals>.report.<locals>.<genexpr>R  s    é € ÐPÑ-> TÊ4Á4À1˜1Ÿ5š5É4™5Ó->ùs   ‚!)ÚdiscardÚaddÚpopÚlistÚsumÚvaluesÚdict)	r÷   rø   r@   rõ   ÚdoneÚcoveragerè   ÚtotalsÚunknowns	   &&&$ €€€€r    ÚreportÚDownload.run.<locals>.reportH  s…   ø€ ØˆF�3‰KßŸØ—‘ Õ$à—‘˜CÔ à�L‰L˜˜dÔ#Ü  ›MˆH�S‰MØÒ#ÜÑP¨X¯_©_Ô->ÓPÓP�Ù˜§G™q´°V·]±]³_Ó1EÄtÈHÃ~ÖVñ $r"   c               ó$   € V ^8„  d   QhRRRRRR/# )r-   rø   rˆ   r@   r>   r.   rµ   r#   )r/   s   "r    r0   rù   X  s!   € ÷ ,ñ ,˜gð ,¨cð ,°dñ ,r"   c                ó   <€ S! SW4       R # r2   r#   )rø   r@   r÷   r	  s   &&€€r    ÚtickÚDownload.run.<locals>.tickX  s   ø€ Ù�s˜GÖ+r"   c                ó(   <€ SP                  V S4      # r2   )Ú	_transfer)rñ   r   r  s   &€€r    r§   rò   [  s   ø€ À$Ç.Á.ÐQZÐ\`ÔBar"   )rõ   )rÚ   rÝ   ÚclearÚ_check_pauserÐ   ÚmkdirrÓ   r…   rE   rF   r„   Ú
ValueErrorrl   r   r   Úpm.download_staterî   rã   r[   rƒ   rË   rX   ÚstatÚst_sizer@   Ú_try_sourcesÚ_keyrZ   Ú_partial_rangesrÿ   r“   )r   rè   rÅ   rl   rî   ÚselectedÚfailuresÚremoterš   ÚacquiredÚ_rR   r  r÷   r	  r  r  r  s   ff          @@@@@@r    ÚrunÚDownload.run  s�  ÿ€ à×!×!Ð!Ø�L‰L×ÑÔ Ø×ÑÔØ×Ñ×Ñ¨°tÐÔ<Ø—l”lˆFØ××Ð¬¯ª°_ÀfÇmÁm×(TÒ(TÜ Ð!SÓTÐTØŸ
™
Ð6 V×%5Ñ%5Ó6�ØŸ™ z×2Ô2°c·n±nÄY×6OÔ6OÜ$Ð'?À¸uÐ%EÓFÐFó 7ñ #õ 	3à!#ˆÜ›EˆØ')ˆØ!#ˆØ<>ˆØ—l•lˆFØ×ÑÔÜ�f—k‘kÓ"ˆCØˆH�S‰MÜ  ×(Ò(Ü  §¡×!1Ñ!1Ó!3×!;Ñ!;¸UÓC�Ø˜vŸ|™|Ð,Ð-‘à!%×!2Ñ!2°6Ô;gÐiqÐruÕivÓ!w‘�Ø�Ù! $×"3Ñ"3°T·Y±Y¸v¿z¹zÓ5JÐQV×WÕWÐ[cß F§M§M MØ"&×"6Ñ"6°vÓ"F˜÷ Xð —|—|�|Ø—K‘K Ô$Ø�O‰O˜FÔ#Ø Ÿ,™,ˆF�3‰KØ#ˆH�SŒMñ# #ð&	WÈu÷ 	Wõ 	Wó ˆFÜ�f—k‘kÓ"ˆC÷,ñ ,ð ×'Ñ'¨Õ0aÐckÐloÕcpÓq‰GˆAÙ�3˜!˜T˜˜ T°D×9ñ ð +/¯,ª,Ó7©, —”©,Ñ7Ð7÷= X×Wüò< 8s   ÈL"È/L"ÌL5Ì"L2c               ó    € V ^8„  d   QhRRRR/# )r-   rÅ   r‚   r  zlist[DownloadTransportError]r#   )r/   s   "r    r0   rÔ   _  s   € ÷ gñ g 6ð gÐ@\ñ gr"   c           	     	ó   € \        \        P                  VP                  .VP                  O54      4      p\        V4       FI  w  rVV P                  4        \        WaP                  VP                  WE^,           R 4      p Wr! V4      3u # 	  R#   \         d²   pTP                  T4       TP                  '       d   T\        T4      ^,
          8X  d4   \        T4      ^8X  d   h \        RP                  R T 4       4      4      Th\         P"                  ! \$        4      P'                  RY„T^,           ,          4        Rp?EK  Rp?ii ; i)r�   NÚ
c              3  ó8   "  € T F  p\        V4      x € K  	  R # 5ir2   )r[   ©r‹   rw   s   & r    rŽ   Ú(Download._try_sources.<locals>.<genexpr>k  s   é € Ð1SÉ(À´#°e·*°*Ë(ùs   ‚z%s; trying pinned mirror %s)r×   r  Úfromkeysrl   r…   Ú	enumerater  r‚   rƒ   r„   rj   r“   r|   Úlenr   ÚjoinÚloggingÚ	getLoggerr$   Údebug)	r   rÅ   Ú	operationr  ÚurlsÚindexrl   rñ   rÂ   s	   &&&&     r    r  ÚDownload._try_sources_  s  € Ü”T—]‘] F§J¡JÐ#B°×1AÑ1AÑ#BÓCÓDˆÜ# Dž/‰JˆEØ×ÑÔÜ˜s§K¡K°·±ÀÈQÅYÀZÐ@PÓQˆIðgØ  )¨IÓ"6Ð6Ò6ó	 *øô
 *ô gØ—‘ Ô$Ø×+×+Ð+¨u¼¸D»	ÀA½Ô/EÜ˜8“}¨Ô)ØÜ'¨¯	©	Ñ1SÉ(Ó1SÓ(SÓTÐZ]Ð]Ü×!Ò!¤(Ó+×1Ñ1Ð2OÐQTÐ[`ÐcdÕ[dÕVe×fÓfûðgús   ÂBÂEÂB%EÅEc               ó    € V ^8„  d   QhRRRR/# )r-   rÅ   r‚   r.   r>   r#   )r/   s   "r    r0   rÔ   n  s   € ÷ "ñ " ð "°ñ "r"   c           	     	ó²  a aaa
a€ ^ RI Hp V! S P                  S P                  SP                  4      S P
                  P                  R7      ;_uu_ 4       pV'       g   \        SP                  4      hS P                  4        \        S4      '       d/   SP                  P                  4       P                  uuRRR4       # S P                  SP                  4      o
S! S
P                  '       d   S P                  SS
4      M. S
P                   4       R V
V3R lloR V
VV V3R llpS P"                  p \%        VS P&                  R7      p TS n        S P                  SP                  4      p	S P=                  SS P                  T	 R	2,          S P                  T	 R
2,          4       TuuRRR4       #   \(        \*        P,                  P.                  3 dY   p\1        T\2        P4                  P6                  4      '       g   \9        T4      '       d   \;        SP                  T4      Thh Rp?ii ; i  TS n        i ; i  + '       g   i     R# ; i)é    rí   )Ú	cancelledNc               ó    € V ^8„  d   QhRRRR/# )r-   rø   rˆ   r.   rµ   r#   )r/   s   "r    r0   Ú(Download._transfer.<locals>.__annotate__{  s   € ÷ ,ñ , ð ,¨Dñ ,r"   c                ó.   <€ S! V SP                   4       R # r2   )r@   )rø   r  r  s   &€€r    r	  Ú"Download._transfer.<locals>.report{  s   ø€ Ù�W˜fŸl™lÖ+r"   c               ó   € V ^8„  d   QhRR/# )r-   r.   r>   r#   )r/   s   "r    r0   r8  ~  s   € ÷ Bñ B˜3ñ Br"   c                 ó   <€ SP                  4        S P                  '       dJ   S P                  '       d8   SP                  '       g   S P                  '       d   SP                  SS S4      # SP                  SS S4      # r2   )r  r@   rZ   r„   r\   Ú_fetch_rangedÚ_fetch_single)r  r	  r   rÅ   s   €€€€r    ÚfetchÚ!Download._transfer.<locals>.fetch~  sZ   ø€ Ø×!Ñ!Ô#Ø—<—<�< F§M§M M°v·}·}°}ÈÏÏÈØ×-Ñ-¨f°f¸fÓEÐEØ×)Ñ)¨&°&¸&ÓAÐAr"   ró   ú.partú.ranges)r  rî   rÐ   r  rl   rÝ   Úis_setrh   r  rË   rƒ   r  r  rð   rZ   r  r@   rÏ   r   Ú_wait_retryrÊ   ÚhttpÚclientÚHTTPExceptionru   rv   rw   ÚURLErrorr
   rj   Ú	_finalize)r   rÅ   r  rî   r  r?  Úconfigured_connectionsrR   rÂ   Úpartial_keyr  r	  s   fff       @@r    r  ÚDownload._transfern  sÄ  ü€ Ý2á˜$×+Ñ+¨T¯Y©Y°v·z±zÓ-BÈdÏlÉl×NaÑNa×bÕbÐfnßÜ$ V§Z¡ZÓ0Ð0Ø×ÑÔÜ  ×(Ò(Ø—{‘{×'Ñ'Ó)×1Ñ1÷ cÒbð —[‘[ §¡Ó,ˆFÙ¸¿¿¸�×%Ñ% f¨fÔ5ÈBÐPV×P\ÑP\Ô]÷,ñ ,÷Bó Bð &*×%5Ñ%5Ð"ð:Ü$ U°×1AÑ1AÔB‘ð $:�Ô ØŸ)™) F§J¡JÓ/ˆKØ�N‰N˜6 4×#4Ñ#4¸+¸ÀeÐ7LÕ#LØ×,Ñ,°+°¸gÐ/FÕFôHà÷? cÒbøô, œTŸ[™[×6Ñ6Ð7ô Ü˜c¤6§<¡<×#8Ñ#8×9Ò9¼\È#×=NÒ=NÜ0°·±¸SÓAÀsÐJØûðûð
 $:�Õ ú÷7 c×bÐbúsL   ÁA"IÃ.IÃ2AIÄ8F9ÅAIÆ9%H6ÇAH1È1H6È6H9È9	IÉIÉI	c               ó   € V ^8„  d   QhRR/# rá   r#   )r/   s   "r    r0   rÔ   ”  s   € ÷ 4ñ 4˜dñ 4r"   c                	ó\   € V P                   P                  4       '       d   \        R 4      hR# )zdownload pausedN)rÝ   rC  rh   rä   s   &r    r  ÚDownload._check_pause”  s&   € Ø�<‰<×Ñ× Ò Ü Ð!2Ó3Ð3ñ !r"   c               ó    € V ^8„  d   QhRRRR/# )r-   rÁ   r´   r.   rµ   r#   )r/   s   "r    r0   rÔ   ˜  s   € ÷ Iñ I ð I¨4ñ Ir"   c                	ó^   € V P                   P                  V4      '       d   \        R 4      hR# )z$download paused during retry backoffN)rÝ   rô   rh   )r   rÁ   s   &&r    rD  ÚDownload._wait_retry˜  s(   € Ø�<‰<×Ñ˜U×#Ò#Ü Ð!GÓHÐHñ $r"   c               ó    € V ^8„  d   QhRRRR/# )r-   rl   r[   r.   rX   r#   )r/   s   "r    r0   rÔ   œ  s   € ÷ %ñ %˜#ð % 'ñ %r"   c                	óþ   a a€ V V3R  lp \        VS P                  R7      #   \        \        P                  P
                  3 d   p\        ST4      ThRp?i\         d    h \         d    \        ^ R4      u # i ; i)c            	     óâ  <€ SP                  4        \        P                  P                  S/ \        CR R/CR7      p \
        P                  V ^<R7      ;_uu_ 4       p\        V4      pVP                  ^Î8X  dy   \        V^ ^4      pVP                  ^4      pV'       g!   \        P                  P                  R^4      h\        V4      ^8w  d   \        R4      h\!        VRV4      uuRRR4       # VP                  ^È8w  d   \#        RVP                   24      h\!        \%        VP&                  P)                  R	4      ;'       g    ^ 4      R
V4      uuRRR4       #   + '       g   i     R# ; i)ÚRangez	bytes=0-0©r   ©r±   r"   z)range probe returned the wrong byte countTNz"unexpected download probe status: rC   F)r  rv   ÚrequestÚRequestÚ_UAÚ_OPENERrª   rd   rH   rT   r¤   rE  rF  ÚIncompleteReadr*  rI   rX   r   r>   r   rG   )r   rN   r\   r@   Úbodyr   rl   s        €€r    rY  Ú Download._probe.<locals>.request�  s#  ø€ Ø×ÑÔÜ—.‘.×(Ñ(¨Ð6S¼Ð6S¸gÀ{Ñ6SÐ(ÓTˆCÜ—‘˜c¨2�×.Ô.°(Ü# HÓ-�Ø—?‘? cÔ)Ü+¨H°a¸Ó;�EØ#Ÿ=™=¨Ó+�DßÜ"Ÿk™k×8Ñ8¸¸aÓ@Ð@Ü˜4“y A”~Ü)Ð*UÓVÐVÜ" 5¨$°Ó5÷ /Ò.ð —?‘? cÔ)Ü'Ð*LÈXÏ_É_ÐL]Ð(^Ó_Ð_Üœs 8×#3Ñ#3×#7Ñ#7Ð8HÓ#I×#NÐ#NÈQÓOÐQVÐX\Ó]÷ /×.×.Ó.ús   ÁB
EÃ1AEÅEÅE.	ró   NF)
r   rD  rÊ   rE  rF  rG  rj   r   r  rX   )r   rl   rY  rÂ   s   ff  r    rð   ÚDownload._probeœ  so   ù€ ö	^ð 	%Ü  ¨t×/?Ñ/?Ô@Ð@øÜœŸ™×2Ñ2Ð3ô 	<Ü(¨¨cÓ2¸Ð;ûÜô 	ØÜô 	%Ü˜1˜eÓ$Ò$ð	%ús'   ‹" ¢%A<ÁAÁA<Á!
A<Á,A<Á;A<c               ó    € V ^8„  d   QhRRRR/# )r-   rl   r[   r.   r#   )r/   s   "r    r0   rÔ   ¶  s   € ÷ ?ñ ?˜ð ? ñ ?r"   c                	óh   € \         P                  ! VP                  R 4      4      P                  4       # )úutf-8)r©   r„   Úencoder­   )r   rl   s   &&r    r  ÚDownload._key¶  s#   € Ü�~Š~˜cŸj™j¨Ó1Ó2×<Ñ<Ó>Ð>r"   c          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r-   Úsider   Úpartr  rX   r„   r[   r.   rˆ   r#   )r/   s   "r    r0   rÔ   ¹  s0   € ÷ ñ  $ð ¨dð ¸Gð ÈSð ÐU\ñ r"   c                	ó²  aa€ V P                   '       d   V'       g   SP                  '       g   . #  \        P                  ! VP	                  R R7      4      pVR,          VR,          VR,          3SP
                  SP                  V38w  d   . # VP                  4       P                  oVR,          p\        V\        4      '       dC   \        ;QJ d     VV3R lV 4       F  '       g   K   RM	  RM! VV3R lV 4       4      '       d   . # \        V Uu. uF  p\        V4      NK  	  up4      # u upi   \        \        \        \         3 d    . u # i ; i)	rc  )Úencodingr@   r\   r„   r‡   c              3  ó˜  <"  € T F¿  p\        V\        4      '       * ;'       gž    \        V4      ^8g  ;'       gˆ    \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      ;'       gL    ^ V^ ,          u;8*  ;'       d/    V^,          u;8  ;'       d    \	        SSP
                  4      8*  Mu '       * x € KÁ  	  R# 5i)r-   c              3  óD   "  € T F  p\        V4      \        Jx € K  	  R # 5ir2   )Útyper>   )r‹   rc   s   & r    rŽ   Ú3Download._load_sidecar.<locals>.<genexpr>.<genexpr>Ä  s   é € Ð?¹3°%”t˜E“{¬#Õ-»3ùs   ‚ TFN)ru   r  r*  Úanyr¿   r@   )r‹   Úrowr  rR   s   & €€r    rŽ   Ú)Download._load_sidecar.<locals>.<genexpr>Â  s¦   øé € ð 3ñ "�Cô ˜s¤DÓ)Ô)÷ Gð G¬S°«X¸©]÷ Gð Gß“3Ñ?¹3Ó?—3—3’3Ñ?¹3Ó?Ó?÷Gð Gà˜C �F×FÔF S¨¥V×FÔF¬s°4¸¿¹Ó/FÔFÔFôGó "ùs-   ƒ C
¤C
ºC
ÁC
ÁC
Á6C
ÂC
Â!)C
TF)rÎ   r\   ÚjsonÚloadsÚ	read_textr@   r  r  ru   r  ro  r˜   r×   rÊ   r  ÚKeyErrorÚ	TypeError)	r   rg  rh  r  r„   Údatar‡   rp  rR   s	   &&&f&   @r    Ú_load_sidecarÚDownload._load_sidecar¹  s  ù€ Ø�{�{ˆ{§6¨V¯[¯[¨[ØˆIð	Ü—:’:˜dŸn™n°g˜nÓ>Ó?ˆDØ�W•˜t F�|¨T°(­^Ð<ÀÇÁÈvÏ{É{Ð\bÐ@cÔcØ�	Ø—9‘9“;×&Ñ&ˆDØ˜(•^ˆFÜ˜f¤d×+Ò+¯s«sõ 3ñ "ó	3¯s¯sªsõ 3ñ "ó	3÷ 0ò 0ð �	Ü±FÓ;±F¨Sœe Cžj±FÑ;Ó<Ð<ùÒ;øÜœ¤X¬yÐ9ô 	ØŠIð	úsC   ²AD6 ÂAD6 ÃD6 Ã,D6 ÄD6 Ä	D6 ÄD1Ä*D6 Ä1D6 Ä6EÅEc               ó$   € V ^8„  d   QhRRRRRR/# )r-   rÅ   r‚   r  rX   r.   rˆ   r#   )r/   s   "r    r0   rÔ   Í  s&   € ÷ \ñ \ fð \°gð \À'ñ \r"   c                	óÂ   € V P                  VP                  4      pV P                  V P                  V R 2,          V P                  V R2,          W!P                  4      # )rB  rA  )r  rl   rx  rÐ   r„   )r   rÅ   r  r÷   s   &&& r    r  ÚDownload._partial_rangesÍ  sV   € Ø�i‰i˜Ÿ
™
Ó#ˆØ×!Ñ! $×"3Ñ"3¸¸¸W°oÕ"EØ"&×"3Ñ"3¸¸¸U°mÕ"CÀVÏ]É]ó\ð 	\r"   c               ó0   € V ^8„  d   QhRRRRRRRRRR	R
R/# )r-   rg  r   rh  rš   rˆ   r  rX   r„   r[   r.   rµ   r#   )r/   s   "r    r0   rÔ   Ó  s@   € ÷ Fñ F˜Tð F¨ð F¸ð FÈð FÐZ]ð FÐbfñ Fr"   c                	óX  € ^ RI Hp VP                  R4      ;_uu_ 4       p\        P                  ! VP                  4       4       RRR4       RVP                  RVP                  RVRV/pV! V \        P                  ! V4      P                  R4      4       R#   + '       g   i     L\; i)	r5  )Údurable_write_bytesúr+bNr@   r\   r„   r‡   rc  )Úpm.filesystemr  rª   r¹   ÚfsyncÚfilenor@   r\   rr  Údumpsrd  )rg  rh  rš   r  r„   r  ÚstreamÚrecords   &&&&&   r    Ú_write_sidecarÚDownload._write_sidecarÒ  sv   € å5ð �Y‰Y�u×Ô Ü�HŠH�V—]‘]“_Ô%÷ à˜6Ÿ<™<¨°·±¸hÈÐPXÐZaÐbˆÙ˜D¤$§*¢*¨VÓ"4×";Ñ";¸GÓ"DÖE÷ ×ús    %BÂB)	c               ó$   € V ^8„  d   QhRRRRRR/# ©r-   rÅ   r‚   r  rX   r.   r>   r#   )r/   s   "r    r0   rÔ   Ý  s!   € ÷ !ñ ! Fð !°Gð !Àcñ !r"   c                	ó¨  € V P                  VP                  4      pV P                  V R 2,          pV P                  V R2,          pV P                  WeW!P                  4      pTP                  V'       d   RMR4      ;_uu_ 4       pVP                  VP                  4       RRR4        V'       d    \        \        VP                  V4      4      M(VP                  \        ,           ^,
          \        ,          p	\        ^\        V P                  V	4      4      p
V P                  WWWW£4      w  r{\        R V 4       R4      pVe'   VP!                  RR7       VP!                  RR7       VhV P#                  WeWrVP                  4       V P$                  P'                  4       '       d   \)        VP                  4      hV'       d¤   V P                  ^8”  dy   \*        ;QJ d    R V 4       F  '       d   K   R	M	  RM! R V 4       4      '       d?   \,        P.                  ! \0        4      P3                  R
VP                  4       ^V n        EK¦  \        R V 4       V^ ,          4      h\5        R V 4       4      pWÒP                  8w  d2   \6        P8                  P;                  RVP                  V,
          4      hV#   + '       g   i     EL&; i)rA  rB  r€  zw+bNTc              3  óV   "  € T F  p\        V\        4      '       g   K  Vx € K!  	  R # 5ir2   )ru   rI   r&  s   & r    rŽ   Ú)Download._fetch_ranged.<locals>.<genexpr>è  s   é € Ð"_±f¨UÄ
È5ÔR]×@^§5¢5³fùs   ‚)Ÿ
)©Ú
missing_okc              3  ó˜   "  € T F@  p\        V\        P                  P                  4      ;'       d    VP                  R9   x € KB  	  R# 5i)rs   N)rs   rt   )ru   rv   rw   rx   r   r&  s   & r    rŽ   r�  ñ  s=   é € ð 0á!'˜ô ˜u¤f§l¡l×&<Ñ&<Ó=×ZÐZÀ%Ç*Á*ÐPZÑBZÔZÛ!'ùs
   ‚/A
²A
FzAparallel range fetch refused for %s; retrying with one connectionc              3  óL   "  € T F  p\        V4      '       d   K  Vx € K  	  R # 5ir2   )r
   r&  s   & r    rŽ   r�  ú  s   é € ÐQ©v e¼\È%×=PŸEšE«vùs   ‚$š
$c              3  ó6   "  € T F  w  rW!,
          x € K  	  R # 5ir2   r#   )r‹   r=   r?   s   &  r    rŽ   r�  û  s   é € Ð@¹©*¨%˜#Ÿ+š+»ùs   ‚r"   )r  rl   rÐ   rx  r„   rª   Útruncater@   r*  rž   r¥   r’   r¿   rÏ   Ú_ranged_attemptÚnextÚunlinkr‡  rÝ   rC  rh   Úallr,  r-  r$   Úwarningr  rE  rF  r]  )r   rÅ   r  r  r÷   rh  rg  rš   r…  Ú	gap_countrÏ   ÚerrorsÚprotocol_errorrø   s   &&&&          r    r=  ÚDownload._fetch_rangedÝ  s-  € Ø�i‰i˜Ÿ
™
Ó#ˆØ× Ñ  c U¨% =Õ0ˆØ× Ñ  c U¨' ?Õ2ˆØ×$Ñ$ T°¿¹ÓGˆØ�Y‰Y§‘u¨U×3Ô3°vØ�O‰O˜FŸL™LÔ)÷ 4àß@GœœH V§\¡\°7Ó;Ô<ÈfÏlÉlÔ]cÕNcÐfgÕNgÔlrÕMrˆIÜ˜a¤ T×%5Ñ%5°yÓ!AÓBˆKØ"×2Ñ2°6À4ÐR]Ód‰OˆGÜ!Ñ"_±fÓ"_ÐaeÓfˆNØÒ)Ø—‘ t�Ô,Ø—‘ t�Ô,Ø$Ð$Ø×Ñ ¨G¸V¿]¹]ÔKØ�|‰|×"Ñ"×$Ò$Ü$ V§Z¡ZÓ0Ð0ßØ×#Ñ# aÔ'¯C«Cñ 0á!'ó0¯C¯CªCñ 0á!'ó0÷ -ò -ô ×%Ò%¤hÓ/×7Ñ7Ø[Ð]c×]gÑ]gôð ()�DÔ$ÚÜÑQ©vÓQÐSYÐZ[ÕS\Ó]Ð]ÜÑ@¹Ó@Ó@ˆGØŸ,™,Ô&Ü—k‘k×0Ñ0°°f·l±lÀWÕ6LÓMÐMØˆN÷9 4×3Ð3ús   ÂK Ë K	c               ó0   € V ^8„  d   QhRRRRRRRRR	R
RR/# )r-   rÅ   r‚   r  rX   rh  r   rš   rˆ   rÏ   r>   r.   ztuple[_Ranges, list[Exception]]r#   )r/   s   "r    r0   rÔ      sA   € ÷ Sñ S fð S°gð SÀTð SØ!(ðSØ7:ðSØEdñSr"   c                	ój  a aaaaaaaaa€ ^ RI Hp \        SP                  S4      pS'       g‘   \	        ^\        VSP                  \        ,           ^,
          \        ,          4      4      p	\        V	4       U
u. uF>  p
V
SP                  ,          V	,          V
^,           SP                  ,          V	,          3NK@  	  pp
\        P                  ! 4       o. o\        P                  ! 4       o\        P                  ! 4       o\        V4      o\        S4      o\        S4      pR VVVVVVV VVV3
R llpV! VRR7      ;_uu_ 4       pV UUu. uF  w  rïVP                  WÎV4      NK  	  pppRpV'       * pV'       gd   SP                  4        S;_uu_ 4        \        S4      pS^ 8H  pSP                  4        RRR4       V'       d   KU  XV8w  g   K^   V! V4       TpKk  V F  pVP)                  4        K  	  RRR4       SS3# u up
i u uppi   + '       g   i     L`; i  \          dU   pS;_uu_ 4        SP#                  T4       RRR4       M  + '       g   i     M; iRpSP%                  4         Rp?L¡Rp?i\&         d    SP%                  4        h i ; i  + '       g   i     SS3# ; i)	r5  )ÚThreadPoolExecutorc               ó$   € V ^8„  d   QhRRRRRR/# )r-   r=   r>   r?   r.   rµ   r#   )r/   s   "r    r0   Ú.Download._ranged_attempt.<locals>.__annotate__  s!   € ÷ %	"ñ %	"˜#ð %	" Cð %	"¨Dñ %	"r"   c                óœ  <
€  SP                   P                  4       '       g   SP                  4       '       d0    S;_uu_ 4        S^,          oSP                  4        RRR4       R# / \        CRRV  RV^,
           2/CpSP                  '       d   SP                  VR&   \
        P                  P                  SP                  VR7      p\        P                  V^xR7      ;_uu_ 4       pSP                  R4      ;_uu_ 4       p\        W@VSP                  4       SP                  '       d&   \        V4      SP                  8w  d   \        R	4      hVP                  V 4       T pWa8  Ed)   SP                   P                  4       '       g   SP                  4       '       d@    RRR4       RRR4       S;_uu_ 4        S^,          oSP                  4        RRR4       R# VP!                  \#        \$        W,
          4      4      pV'       g'   \&        P(                  P+                  R
W,
          4      hVP-                  V4       V\/        V4      ,          pS;_uu_ 4        \1        S	W3.,           4      S	R&   SP                  4        RRR4       EK/  VP!                  ^4      '       d   \        R4      h RRR4       RRR4       S;_uu_ 4        S^,          oSP                  4        RRR4       R#   + '       g   i     R# ; i  + '       g   i     R# ; i  + '       g   i     EKÊ  ; i  + '       g   i     Lƒ; i  + '       g   i     LŽ; i  \2         dŽ   p\5        T\
        P6                  P8                  4      '       d   TP;                  4        S;_uu_ 4        S
P=                  T4       RRR4       M  + '       g   i     M; iSP                  4         Rp?EL$Rp?ii ; i  + '       g   i     R# ; i  S;_uu_ 4        S^,          oSP                  4        RRR4       i   + '       g   i     i ; i; i)r�   NrV  zbytes=Ú-zIf-RangerW  rX  r€  ú-remote representation changed during downloadr"   :NNNz&range body exceeds its declared bounds)rÝ   rC  rã   r[  r\   rv   rY  rZ  rl   r\  rª   rT   r@   rd   rI   Úseekr¤   r¿   r¥   rE  rF  r]  Úwriter*  r˜   rn   ru   rw   rx   Úcloser“   )r=   r?   r   rY  rN   r…  ÚpositionÚchunkrÂ   rš   rš  Úlockrh  Úpendingr  r   rÅ   ÚstopÚupdateds   &&       €€€€€€€€€€r    ÚworkerÚ(Download._ranged_attempt.<locals>.worker  sÒ  ø€ ð#"Ø—<‘<×&Ñ&×(Ò(¨D¯K©K¯MªMØ÷> ’TØ˜q•L�GØ—K‘K”M÷ ‘Tð= GœSÐF '¨V°E°7¸!¸CÀ!½G¸9Ð+EÑF�Ø—;—;�;Ø*0¯+©+�G˜JÑ'Ü Ÿ.™.×0Ñ0°·±ÀWÐ0ÓM�Ü—\‘\ '°3�\×7Ô7¸8ÀTÇYÁYÈu×EUÔEUÐY_Ü# H°S¸&¿,¹,ÔGØ—{—{�{¤|°HÓ'=ÀÇÁÔ'LÜ)Ð*YÓZÐZØ—K‘K Ô&Ø$�HØ"�.ØŸ<™<×.Ñ.×0Ò0°D·K±K·M²MØ"÷ FV×7÷4 ’TØ˜q•L�GØ—K‘K”M÷ ‘Tð# !)§¡¬c´&¸#½.Ó.IÓ J˜ß$Ü"&§+¡+×"<Ñ"<¸SÀ#Å.Ó"QÐQØŸ™ UÔ+Ø ¤C¨£JÕ.˜ß!šTÜ)2°7¸uÐ>OÐ=PÕ3PÓ)Q˜G A™JØ#ŸK™KœM÷ "šTð  —}‘} Q×'Ò'Ü)Ð*RÓSÐSð (÷# FV×7÷4 ’TØ˜q•L�GØ—K‘K”M÷ —T—T’Tú—T—T�Tú÷ "ŸT™Tú÷ FV×EUú×7×7ûô& ô Ü˜c¤6§<¡<×#9Ñ#9×:Ò:Ø—I‘I”Kß’TØ—M‘M #Ô&÷ —T—T�Túà—‘—
’
ûðú÷ —T�Tû—T’TØ˜q•L�GØ—K‘K”M÷ —T—T�Týs  ƒ5M ÁK8Á(*M ÂAM Ã,MÄBL5	ÆL5	Æ%L5	Æ&MÆ.M Ç LÇ$B L5	É$(L Ê!L5	Ê.L5	Ê:MËM ËO6Ë8L		ÌL	Ì L2Ì+
L5	Ì5MÍ MÍM	ÍM ÍP
 ÍM ÍO3Í&AO.Î*OÎ<	O.ÏOÏO.Ï(P
 Ï.O3Ï3P
 Ï6P	Ð
QÐP8	Ð/	QÐ8QÑQzhermes-download)Úmax_workersÚthread_name_prefixFNT)Úconcurrent.futuresrŸ  rž   r@   r’   r¿   r¥   ÚrangerÛ   ÚLockrÜ   r*  r  Úsubmitrô   r  rn   r“   rã   ÚBaseExceptionÚresult)r   rÅ   r  rh  rš   rÏ   r  rŸ  r‡   Úcountr1  Úreportedr®  Úpoolr=   r?   ÚfuturesÚobserver_failedÚfinishedÚsnapshotrÂ   Úfuturerš  rª  r«  r¬  r­  s   fffff&&               @@@@@r    r”  ÚDownload._ranged_attempt   s  ÿù€ å9ä˜&Ÿ,™,¨Ó0ˆßÜ˜œ3˜{¨V¯\©\¼FÕ-BÀQÕ-FÌ6Õ,QÓRÓSˆEä#(¨¤<ó1Ù#/˜%ð ˜vŸ|™|Õ+¨uÕ4°u¸qµyÀFÇLÁLÕ6PÐTYÕ6YÓZÙ#/ð ð 1ä�~Š~ÓˆØ"$ˆÜ�ŠÓ ˆÜ—/’/Ó#ˆÜ�f“+ˆÜ�w“-ˆÜ˜“=ˆ÷%	"÷ %	"ñ %	"ñN  ¨KÐL]×^Õ^ÐbfÙIOÔPÉ¹:¸5�t—{‘{ 6°#Ö6ÉˆGÑPØ#ˆOØ!”zˆHßØ—‘”ß’TÜ# G›}�HØ&¨!™|�HØ—M‘M”O÷ ÷ '‘¨8°xÖ+?ð	Ù˜Xœð  (’Hã!�Ø—‘–ñ "÷3 _ð6 ˜ˆÐùòY1ùód Q÷
 —Tûô %ô #ß!šTØ"ŸM™M¨#Ô.÷ "ŸTŸT˜Túà*.˜ØŸ™Ÿ
™
ûÜ(ô ØŸ™œ
Øðú÷) _Ö^ð6 ˜ˆÐús‘   Á9AHÅJÅH	
Å(JÅ<JÆ!H	Æ7JÇ	JÇH"ÇJÈ	JÈHÈJÈ"JÈ-
I<È7IÉ		I<ÉI"ÉI<É7JÉ<JÊ	JÊJÊJ2	c               ó$   € V ^8„  d   QhRRRRRR/# rŠ  r#   )r/   s   "r    r0   rÔ   U  s!   € ÷ &ñ & Fð &°Gð &Àcñ &r"   c                	ó  € V P                  VP                  4      pV P                  V R 2,          pV P                  V R2,          p. p\        P                  P                  VP                  \        R7      p \        P                  V^xR7      ;_uu_ 4       q•P                  R4      ;_uu_ 4       p
V	P                  ^È8w  d   \        RV	P                   24      hVP                  '       d&   \        V	4      VP                  8w  d   \        R4      hV	P                  P                  RR4      P!                  4       R8w  d   \        R	4      h\#        V	P                  P                  R
4      ;'       g    ^ 4      p^ p V P$                  P'                  4       '       d   \)        VP                  4      hV	P+                  \,        4      pV'       g   M;V
P/                  V4       V\1        V4      ,          p^ V3.pV! \3        V4      4       K�  V P$                  P'                  4       '       d   \)        VP                  4      hYË;'       g    VP4                  8  d<   \6        P8                  P;                  RT;'       g    VP4                  V,
          4      hV'       d   WË8w  g#   VP4                  '       d7   WÂP4                  8w  d'   \        RT RT;'       g    VP4                   R24      hRRR4       RRR4       T PA                  YeYrTPB                  4       X#   + '       g   i     L7; i  + '       g   i     LB; i  \<         d6    TP?                  4       '       d   T PA                  YeYrTPB                  4       h i ; i)rA  rB  rW  rX  Úwbzunexpected download status: r¤  rD   r   z7encoded response cannot be used as an identity downloadrC   r"   zdownload incomplete (z bytes, expected Ú)N)"r  rl   rÐ   rv   rY  rZ  r[  r\  rª   rH   r   r\   rd   rI   r   rG   rM   r>   rÝ   rC  rh   r¤   r¥   r¦  r*  r  r@   rE  rF  r]  r¶  rÇ   r‡  r„   )r   rÅ   r  r  r÷   rh  rg  rš   rY  rN   r…  Údeclaredr¨  r©  s   &&&&          r    r>  ÚDownload._fetch_singleU  s©  € à�i‰i˜Ÿ
™
Ó#ˆØ× Ñ  c U¨% =Õ0ˆØ× Ñ  c U¨' ?Õ2ˆØˆÜ—.‘.×(Ñ(¨¯©¼SÐ(ÓAˆð	Ü—‘˜g¨s�×3Ô3°xÇÁÈ4ÇÄÐTZØ—?‘? cÔ)Ü'Ð*FÀxÇÁÐFWÐ(XÓYÐYØ—;—;�;¤<°Ó#9¸V¿[¹[Ô#HÜ%Ð&UÓVÐVØ×#Ñ#×'Ñ'Ð(:¸JÓG×MÑMÓOÐS]Ô]Ü'Ð(aÓbÐbÜ˜x×/Ñ/×3Ñ3Ð4DÓE×JÐJÈÓK�Ø�ØØ—|‘|×*Ñ*×,Ò,Ü,¨V¯Z©ZÓ8Ð8Ø$ŸM™M¬&Ó1�Eß ØØ—L‘L Ô'Ø¤ E£
Õ*�HØ ! 8˜}˜o�GÙœ˜g›Ö'Ø—<‘<×&Ñ&×(Ò(Ü(¨¯©Ó4Ð4Ø×7Ð7¨6¯<©<Ô8ÜŸ+™+×4Ñ4°S¸8×;SÐ;SÀvÇ|Á|ÐW_Õ:_Ó`Ð`ß Ô!5¸6¿<¿<¸<ÈH×XdÑXdÔLdÜ'Ð*?À¸zÐIZÐ[c×[sÐ[sÐgm×gsÑgsÐZtÐtuÐ(vÓwÐw÷1 BQ×3ð: 	×Ñ˜D¨¸¿¹ÔGØˆ÷= BQÇú×3×3ûô2 ô 	Ø�{‰{�}Š}Ø×#Ñ# D°ÀÇÁÔOØð	ús†   Á:M ÂL.Â2;L	Ã.BL	Å4)L	Æ1L	ÇAL	È,L	É
3L	É>L	ÊL	Ê6!L	ËL	Ë,L.Ë4M ÌL+Ì&L.Ì.L>	Ì9M Ì>M Í NÍ"Nc               ó(   € V ^8„  d   QhRRRRRRRR/# )r-   rÅ   r‚   rh  r   rg  r.   rµ   r#   )r/   s   "r    r0   rÔ   }  s(   € ÷ #)ñ #) ð #)¨dð #)¸$ð #)À4ñ #)r"   c           	     	ó®  € V P                  4        VP                  '       dˆ   \        V4      pWAP                  8w  dm   \        \        4      ;_uu_ 4        VP                  R R7       VP                  R R7       RRR4       \        RVP                   RVP                   RV 24      h^ RIpV P                  4        VP                  P                  P                  R R R7       VP                  RVP                  P                   R2R	VP                  P                  R
7      w  rg\        V4      p \        P                   ! VR4      ;_uu_ 4       q’P#                  R4      ;_uu_ 4       p
\$        P&                  ! W©\(        4       V	P+                  4        \        P,                  ! V	P/                  4       4       RRR4       RRR4       VP1                  4       P2                  VP1                  4       P2                  8w  d   \5        R4      hV P                  4        \7        W�P                  4       \        \        4      ;_uu_ 4        VP                  R R7       RRR4       \        \        4      ;_uu_ 4        TP                  R R7       TP                  R R7       RRR4       R#   + '       g   i     EL9; i  + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     L’; i  \        \        4      ;_uu_ 4        TP                  R R7       RRR4       i   + '       g   i     i ; i; i  + '       g   i     R# ; i)TrŽ  Nzsha256 mismatch for z	: pinned z, got rê   Ú.r£  z	.download)ÚprefixÚsuffixÚdirrÃ  r¢   z7destination copy did not preserve the complete download)r  r„   r°   r   rÊ   r–  rf   rl   Útempfilerƒ   Úparentr  Úmkstempr½   r   r¹   Úfdopenrª   ÚshutilÚcopyfileobjr¥   Úflushr‚  rƒ  r  r  r   rÃ   )r   rÅ   rh  rg  ÚactualrÍ  Úfdr½   ÚstagedÚtargetÚincomings   &&&&       r    rI  ÚDownload._finalize}  sD  € Ø×ÑÔØ�=�=ˆ=Ü! $Ó'ˆFØŸ™Ô&äœg×&Õ&Ø—K‘K¨4�KÔ0Ø—K‘K¨4�KÔ0÷ 'ô  Ø*¨6¯:©:¨,°iØ—}‘}�o V¨F¨8ð5ó6ð 6ó 	à×ÑÔØ�‰×Ñ× Ñ ¨¸Ð Ô=Ø×#Ñ#¨Q¨v¯{©{×/?Ñ/?Ð.@ÀÐ+BÈ;Ð\b×\gÑ\g×\nÑ\nÐ#Óo‰ˆÜ�d“ˆð	/Ü—’˜2˜t×$Ô$¨·	±	¸$·´À8Ü×"Ò" 8´VÔ<Ø—‘”Ü—’˜Ÿ™›Ô)÷ 1@×$ð �{‰{‹}×$Ñ$¨¯	©	«×(;Ñ(;Ô;Ü#Ð$]Ó^Ð^Ø×ÑÔÜ! &¯+©+Ô6ô œ'×"Õ"Ø—‘¨�Ô.÷ #ô ”g×ÕØ�K‰K 4ˆKÔ(Ø�K‰K 4ˆKÔ(÷ Ñ÷7 '×&Ð&ú÷ 1@·°ú×$×$Ð$ú÷ #×"û”œ'×"Õ"Ø—‘¨�Ô.÷ #×"×"Ð"ý÷ ×Ðúsz   Á%J*Ä3K9 ÅKÅ+AJ>	Æ;KÇA/K9 É	K&É;%MÊ*J;	Ê>KË		KËK#	Ë	K9 Ë&K6	Ë9M ÌL-	Ì$	M Ì-L=Ì8M ÍM	)rÚ   rÝ   rÏ   rÐ   rÎ   rÓ   r2   )r$   r%   r&   r'   r(   ÚCONNECTIONSr}   rå   r   r  r  r  rD  rð   r  rx  r  Ústaticmethodr‡  r=  r”  r>  rI  r)   r#   r"   r    rÍ   rÍ   ö   sª   † ñð €KðUð ð	Uð
 'ðUð (,ðUð 26÷Uõ*÷>8õ@gõ"õL4õIõ%õ4?õõ(\ð
 ôFó ðFõ!õFSõj&÷P#)ñ #)r"   rÍ   )zhttp://127.0.0.1:zhttp://localhost:zhttp://[::1]:i   r2   )Br(   Ú
__future__r   r©   Úhttp.clientrE  rr  r¹   rE   rÑ  r,  rz   r3   rÛ   r·   Úurllib.errorrv   Úurllib.requestÚ
contextlibr   Údataclassesr   Úpathlibr   Útypingr   r   r   Ú
pm.networkr	   r
   r   r[  r   r¥   rY  ÚHTTPRedirectHandlerr   r9   Úbuild_openerÚHTTPSHandlerr\  r¼   r   rT   rI   rX   rd   rf   rh   rj   r‚   r  r×   r>   rˆ   r  r[   Ú
ProgressFnr˜   rž   r°   Ú_RELEASE_WAIT_SECONDSrÃ   rË   rÍ   r#   r"   r    Ú<module>rê     s«  ðñõ* #ã Û Û Û 	Û 	Û Û Û Û 
Û Û Û Û Ý Ý !Ý ß /Ñ /ç >Ñ >ð ÐDÐFWÐYcÐd€ØG€	Ø	€ôM˜FŸN™N×>Ñ>ô Mõ"ð �.‰.×
%Ñ
%ÙÓ˜VŸ^™^×8Ñ8ÁÓAQÐ8ÓRó€ô
.�Lô .÷ô T�-ô Tñ �$Ô÷ð ó ðõJô
@�ô @ôF�]ô FôB˜]ô Bñ( �$Ô÷$ð $ó ð$ð ˆu�S˜#�X�Õ
€Ø�s˜C  c¨7 lÕ!3Ð4°dÐ:Õ;€
õõ"
õð Ð ð(ÐEZ÷ (õ2÷$j)ó j)r"   