Êþº¾E×  java/lang/Object()V   4net/minecraft/util/HttpUtil$DownloadProgressListener requestStart  net/minecraft/util/HttpUtilcachedFilePathK(Ljava/nio/file/Path;Lcom/google/common/hash/HashCode;)Ljava/nio/file/Path;  checkExistingFile](Ljava/nio/file/Path;Lcom/google/common/hash/HashFunction;Lcom/google/common/hash/HashCode;)Z  LOGGERLorg/slf4j/Logger;9Returning cached file since actual hash matches requested  !org/slf4j/Loggerinfo(Ljava/lang/String;)V # $%requestFinished(Z)V ' ()updateModificationTime(Ljava/nio/file/Path;)V+java/io/IOException-Failed to check cached file {} / 01warn9(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V31Existing file {} not found or had mismatched hash 5 06'(Ljava/lang/String;Ljava/lang/Object;)V 89: ;<java/nio/file/FilesdeleteIfExists(Ljava/nio/file/Path;)Z>java/io/UncheckedIOException @AB CDjava/lang/StringvalueOf&(Ljava/lang/Object;)Ljava/lang/String;F GHmakeConcatWithConstants&(Ljava/lang/String;)Ljava/lang/String; =J K*(Ljava/lang/String;Ljava/io/IOException;)V MNO PQ java/net/URLopenConnection*(Ljava/net/Proxy;)Ljava/net/URLConnection;Sjava/net/HttpURLConnection RU V%setInstanceFollowRedirects XYZ [\java/util/ObjectsrequireNonNull&(Ljava/lang/Object;)Ljava/lang/Object;^ _`accept=(Ljava/net/HttpURLConnection;)Ljava/util/function/BiConsumer; bcd ef java/util/MapforEach"(Ljava/util/function/BiConsumer;)V Rh ijgetInputStream()Ljava/io/InputStream; Rl mngetContentLengthLong()Jÿÿÿÿÿÿÿÿ rst uvjava/util/OptionalLongof(J)Ljava/util/OptionalLong; rx yzempty()Ljava/util/OptionalLong; |}~ )net/minecraft/util/FileUtilcreateDirectoriesSafe � ‚ƒ downloadStart(Ljava/util/OptionalLong;)V r… †‡ isPresent()Z r‰ Šn getAsLongŒ G�'(Ljava/lang/String;I)Ljava/lang/String; *� ! ‘ ’“downloadAndHash¨(Lcom/google/common/hash/HashFunction;ILnet/minecraft/util/HttpUtil$DownloadProgressListener;Ljava/io/InputStream;Ljava/nio/file/Path;)Lcom/google/common/hash/HashCode; •–— ˜™com/google/common/hash/HashCodeequals(Ljava/lang/Object;)Z› Gœ8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; žŸ  ¡¢org/apache/commons/io/IOUtils closeQuietly(Ljava/io/InputStream;)V¤download¦.tmp¨%java/nio/file/attribute/FileAttribute 8ª «¬createTempFilev(Ljava/nio/file/Path;Ljava/lang/String;Ljava/lang/String;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/file/Path;®java/nio/file/CopyOption °±² ³´ java/nio/file/StandardCopyOptionREPLACE_EXISTING"Ljava/nio/file/StandardCopyOption; 8¶ ·¸moveY(Ljava/nio/file/Path;Ljava/nio/file/Path;[Ljava/nio/file/CopyOption;)Ljava/nio/file/Path;ºjava/lang/Throwable R¼ ½jgetErrorStream¿HTTP response error: {} ÁÂà ÄÅ!java/nio/charset/StandardCharsetsUTF_8Ljava/nio/charset/Charset; žÇ ÈÉtoStringC(Ljava/io/InputStream;Ljava/nio/charset/Charset;)Ljava/lang/String; Ë Ì6errorÎjava/lang/ExceptionÐ#Failed to read response from server Ò Ì!Ôjava/lang/IllegalStateExceptionF Ó× Ø*(Ljava/lang/String;Ljava/lang/Throwable;)V ÚÛÜ ÝÞjava/time/Instantnow()Ljava/time/Instant; àáâ ãä java/nio/file/attribute/FileTimefrom7(Ljava/time/Instant;)Ljava/nio/file/attribute/FileTime; 8æ çèsetLastModifiedTimeL(Ljava/nio/file/Path;Ljava/nio/file/attribute/FileTime;)Ljava/nio/file/Path;ê(Failed to update modification time of {} ìíî ïð#com/google/common/hash/HashFunction newHasher!()Lcom/google/common/hash/Hasher; òóô õöcom/google/common/hash/FunnelsasOutputStream>(Lcom/google/common/hash/PrimitiveSink;)Ljava/io/OutputStream;øjava/nio/file/OpenOption 8ú ûünewInputStreamF(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream; þÿ java/io/InputStream transferTo(Ljava/io/OutputStream;)J þ close ¹   addSuppressed(Ljava/lang/Throwable;)V   java/io/OutputStream  com/google/common/hash/Hasherhash#()Lcom/google/common/hash/HashCode;java/nio/file/LinkOption 8 exists2(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z  hashFile\(Ljava/nio/file/Path;Lcom/google/common/hash/HashFunction;)Lcom/google/common/hash/HashCode;4Mismatched hash of file {}, expected {} but found {}  0!((Ljava/lang/String;[Ljava/lang/Object;)V •# È$()Ljava/lang/String; &'( )*java/nio/file/Pathresolve((Ljava/lang/String;)Ljava/nio/file/Path; ,-. /0 java/nio/file/StandardOpenOptionCREATE"Ljava/nio/file/StandardOpenOption; 82 34newOutputStreamG(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/OutputStream; þ6 78read([B)I : ;<downloadedBytes(J)V> G?(JI)Ljava/lang/String; ABC D‡java/lang/Thread interruptedF INTERRUPTEDHDownload interrupted  J KLwrite([BII)V N OPputBytes%([BII)Lcom/google/common/hash/Hasher;Rjava/net/ServerSocket QT U(I)V QW XY getLocalPort()I Q\net/minecraft/SharedConstantsÿÿ _`a bccom/mojang/logging/LogUtils getLogger()Lorg/slf4j/Logger;CodeLineNumberTableLocalVariableTablethisLnet/minecraft/util/HttpUtil; downloadFileÔ(Ljava/nio/file/Path;Ljava/net/URL;Ljava/util/Map;Lcom/google/common/hash/HashFunction;Lcom/google/common/hash/HashCode;ILjava/net/Proxy;Lnet/minecraft/util/HttpUtil$DownloadProgressListener;)Ljava/nio/file/Path;eLjava/io/IOException; targetFileLjava/nio/file/Path; actualHash!Lcom/google/common/hash/HashCode; actualPathtmpPath contentLengthJsizeLjava/util/OptionalLong;Ljava/lang/Exception;Ljava/io/InputStream;tLjava/lang/Throwable; targetDirurlLjava/net/URL;headersLjava/util/Map; hashFunction%Lcom/google/common/hash/HashFunction; requestedHashmaxSizeIproxyLjava/net/Proxy;listener6Lnet/minecraft/util/HttpUtil$DownloadProgressListener; connectionLjava/net/HttpURLConnection;inputLocalVariableTypeTable5Ljava/util/Map; StackMapTable�java/net/ProxyMethodParameters Signatureú(Ljava/nio/file/Path;Ljava/net/URL;Ljava/util/Map;Lcom/google/common/hash/HashFunction;Lcom/google/common/hash/HashCode;ILjava/net/Proxy;Lnet/minecraft/util/HttpUtil$DownloadProgressListener;)Ljava/nio/file/Path;RuntimeVisibleTypeAnnotations#Lorg/jspecify/annotations/Nullable; fileInput outputStreamLjava/io/OutputStream;filehasherLcom/google/common/hash/Hasher; Exceptions expectedHashbuffer[B readSoFaroutputŸgetAvailablePortserverLjava/net/ServerSocket;ignoredisPortAvailable(I)Zport SourceFile HttpUtil.java NestMembersBootstrapMethods° Failed to remove existing file ²'(Ljava/lang/Object;Ljava/lang/Object;)V´ µ¶· ¸¹java/net/URLConnectionsetRequestProperty'(Ljava/lang/String;Ljava/lang/String;)V¹¼?Filesize is bigger than maximum allowed (file is , limit is )¾7Hash of downloaded file () did not match requested ()ÀFailed to download file Â@Filesize was bigger than maximum allowed (got >= , limit was )Ä ÅÆÇ GÈ$java/lang/invoke/StringConcatFactory˜(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/invoke/CallSite;Ê ËÌÍ ÎÏ"java/lang/invoke/LambdaMetafactory metafactoryÌ(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite; InnerClassesDownloadProgressListenerÓ%java/lang/invoke/MethodHandles$LookupÕjava/lang/invoke/MethodHandlesLookup!  d3*·±e "#f gh ijd}:: ¹Æv*¸ :  -¸™²¹¹" ¸& °§: ²,  ¹.²2 ¹4 ¸7W§$: ¹"»=Y ¸?ºE ·I¿: +¶LÀR:¶T,Y¸WWº]¹a¶g: ¶k7  o”™  ¸q§¸w: *¸{ ¹€ ¶„™# ¶ˆ…”ž»*Y ¸?º‹·Ž¿ ÆF-  ¸�:¶”š»*Y¸?¸?ºš·Ž¿¹" : ¸�°*£¥½§¸©:- ¸�:*¸ :-¸š½­Y²¯S¸µW§¸&¹":¸7W ¸�°:¸7W¿: Æ0¶»:  Æ$²¾ ²À¸Æ¹Ê§: ²Ϲѹ"»ÓY+¸?ºÕ ·Ö¿: ¸�¿ >B*Rdg*Z¡¯¯±¯ˆDº¹L§º¹¯ºº¹Íßâ͈D L§ ¯  e@013 679%:/;7=<>?BB@DARD^EdIgFiGqH…KˆO“P™R«T²U¹VÏXÓZÜ\ä]ð^b cd!e8g@hDŠIhLjZlhmpp{q�t•v�w¡y§Š¬w¯y·zº|¼}Á~ÈÍ�ß„â‚äƒî‡öˆ Š‹fèDkl ikl kmn 5ophGopp?qnZ`rn¹st Ïëuv ä kw È&Ìx ¼Myz {n|}~€�‚pƒ„…†‡ˆ‰Š ‹x ˆ‹mn Œ ~�Žøþ?Rþ&B*T*úü&üABrü6rü3•úþC&•&ÿ&Mbì•�Rþ&r&¹ÿ &Mbì•�Rþ&¹ÿ' &Mbì•�Rþ&¹þÍú ÿ &Mbì•�Rþ&¹‘!{|~€‚ƒ…‡’“” • ()du*¸Ù¸ß¸åW§L²é*+¹.± *e� “‘’”f klmnŽN* ‘m ddp+¹ëM,¸ñN*½÷¸ù:-¶ýXÆ&¶§:ƶ§ :¶¿-Æ#-¶ §:-Æ-¶ § :¶¿,¹ °*¹169¹ EP¹VZ]¹e& —˜ ™›œ*˜EœP˜i�f4/–x ]—˜p™np€�iš›Ž\ÿ*&ì þ¹ÿ&ì þ¹¹ùJ¹ÿ &ì ¹¹ùœ*‘ ™€ d¥8*½¸™.*+¸N-,¶”™¬²½Y*SY,SY-S¹¬e¡ ¢£¤¦6©f*%op8™n8€�8�pŽ ü•úœ*‘ ™€� d? *+¶"¹%°e­f {n ‚p‘ {‚ ’“d ¾½÷Y²+S¸1:*¹ë: ¼: 7 -¶5Y6›a …a7 , ¹9 …”ž»*Y º=·Ž¿¸@™²E¹Ñ»*YG·Ž¿¶I¹MW§ÿ™¹ : ƶ  °:ƶ § :¶¿–£¹ª¯²¹eJ±²´ ¶#·/¸7¹?»G¼W¿]ÀhÁsÄ}Å�ǖȠǣ±ff Šš› ƒžŸ,w7„#€ t ­¡˜¾€�¾ƒ„¾‡ˆ¾‹x¾inŽ€ÿ# ìþ& ¢ÿ3 ìþ& ¢ü•ÿìþ& ¹ÿìþ& ¹¹œ*‘€ƒ‡‹i £YdÅ)»QY·SK*¶V<*¶Z¬L*¶Z§ M+,¶+¿Kcܬ ¹¹$*$$*eÌ ÍÎÍÌ$Î%Ïf ¤¥%¦lŽ*ÿQ¹ÿQ¹¹ÿ* §¨dî=› ]¤¬»QY·SL+¶V §=+¶Z¬M+¶Z§ N,-¶,¿L¬$*¹+/2¹ (:**::*e& Ô Õ ×Ø$Ù(Ø*×:Ù;Úf $¤¥;¦l=©„Ž- üQ@F¹ÿQ¹¹ÿ*‘©ªd¸^³±e «¬­®*ïɱ³ºÃ»Ã½Ã¿ÃÁÐ Ñ ÒÔÖ