7a  java/lang/Object()V   org/freertr/user/userUpgradeforcesI  cmdLorg/freertr/util/cmds;org/freertr/pipe/pipeProgress  org/freertr/util/cmdspipeLorg/freertr/pipe/pipeSide;  (Lorg/freertr/pipe/pipeSide;)V  consLorg/freertr/pipe/pipeProgress;! java/io/File # $(Ljava/lang/String;)V&org/freertr/cry/cryHashSha2512 % )*+ ,org/freertr/cry/cryHashGenericinit ./0 12org/freertr/cry/cryUtilshashFile1(Lorg/freertr/cry/cryHashGeneric;Ljava/io/File;)Z .4 56hash2hex4(Lorg/freertr/cry/cryHashGeneric;)Ljava/lang/String;8org/freertr/cry/cryHashSha3512 7; <=makeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; ?@A BC org/freertr/pipe/pipeSide$modTypmodeLF"Lorg/freertr/pipe/pipeSide$modTyp; .E FGhashTextU(Lorg/freertr/cry/cryHashGeneric;Ljava/util/List;Lorg/freertr/pipe/pipeSide$modTyp;)Z IJK LMorg/freertr/cfg/cfgInit myPathName()Ljava/lang/String; O PQverExtLjava/lang/String;; IT UM getFileName W XMgetName Z [Mword]current _ `a readUpKeyA(Ljava/lang/String;Ljava/lang/String;)Lorg/freertr/cry/cryKeyRSA;cfailed to get current key! e f$errorh org/freertr/user/userUpgradeBlob g gk lputSelf nop qrjava/lang/Stringlength()I tuv wxorg/freertr/util/bitsstr2num(Ljava/lang/String;)I z {| calcFileHash&(Ljava/lang/String;)Ljava/lang/String;~ <| g filesLjava/util/List; org/freertr/user/userUpgradeNtry ((Ljava/lang/String;ILjava/lang/String;)V  java/util/Listadd(Ljava/lang/Object;)Z g doSign(Lorg/freertr/cry/cryKeyRSA;)V g getText(I)Ljava/util/List;  M myVerFile t buf2txt&(ZLjava/util/List;Ljava/lang/String;)Z~ <(I)Ljava/lang/String;org/freertr/cry/cryKeyRSA   keyMakeSize(I)Z rkeySize  keyVerify()Z <(IZ)Ljava/lang/String;  pemWriteStr(Z)Ljava/lang/String;~  $org/freertr/pipe/pipeSidelinePut~oldfailed to get old key! t getTime()J  Qorg/freertr/cfg/cfgAll timeZoneName t time2num(Ljava/lang/String;JI)I ~org/freertr/util/version.java t txt2buf$(Ljava/lang/String;)Ljava/util/List;(org/freertr/util/version.java not found! rsize get(I)Ljava/lang/Object;# public final static int year = n  startsWith(Ljava/lang/String;)Z ~ set'(ILjava/lang/Object;)Ljava/lang/Object;$ public final static int month =  ~" public final static int day =  ~) public final static String pubKeyC =  ~) public final static String pubKeyO = ~ Q upgradeServer~~~error reading version info! g fromText%(Ljava/util/List;Z)Ljava/lang/String;~ g Qhead~ g   getFilelist~ g M~ g Qkeyed~ g getSum~ g Qjars   verifyFile'(Ljava/lang/String;Ljava/lang/String;)I I  M getRWpath " #Qname % &Qchk(some tests failed!*system verification failed! ,e-org/freertr/util/logger/all tests passed! 1 2exists~ 5 6$strPut8 is missing! n: ;x compareTo= is corrupted!? is ok! B C doUpgrade E FQbakExt HIJ KLorg/freertr/user/userFlashrename)(Ljava/lang/String;Ljava/lang/String;ZZ)ZNunable to revert to backup HP QRcopy((Ljava/lang/String;Ljava/lang/String;Z)Z T UdoneFail W X$ debugStatZjava/lang/Thread\"org/freertr/user/userUpgradeRevert [ Y_ `(Ljava/lang/Runnable;)V Yb cstart ne fMtrimhjava/util/ArrayList g~ l mn doCleanUpDir%(Ljava/util/List;Ljava/lang/String;)Ip./r/ nt ux lastIndexOf nw xy substring(II)Ljava/lang/String;~ H| }~dirList#(Ljava/lang/String;)[Ljava/io/File;% unable to read filelist   isDirectory. .bak.tmp.old. n xindexOf H delete~~ <y  needColdZcoldwarm   inProgressLorg/freertr/util/syncInt;  rorg/freertr/util/syncIntno upgrade in progessupgrade in progessauto-revert cancelled  (I)I I  stopRouter(ZILjava/lang/String;)V , $info t rrandomD  QtmpExt  <9(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;  M myFileName  org/freertr/enc/encUrlparseOne,(Ljava/lang/String;)Lorg/freertr/enc/encUrl;  QfilExt  org/freertr/pipe/pipeDiscardneedAny8(Lorg/freertr/pipe/pipeSide;)Lorg/freertr/pipe/pipeSide; H  doReceiveD(Lorg/freertr/pipe/pipeSide;Lorg/freertr/enc/encUrl;Ljava/io/File;)Z&auto-revert was unable to reach server  doRevertauto-revert finishedoverlapping upgrades eliminated  $ upgraderDoerjava/lang/Exception ,  traceback(Ljava/lang/Throwable;)Vdownloading version info! failed to download version info!  $debugRes  needStop"~#~$~%~ g timeJ t timeDump(J)Ljava/lang/String;&~'~(~ g  copyBytes$()Lorg/freertr/user/userUpgradeBlob; g delFiles(Ljava/util/List;)V)~*~ no downgrade allowed!   doMissing%(Lorg/freertr/user/userUpgradeBlob;)Ino upgrade needed!   upgradeConfigsaving configurationorg/freertr/user/userRead  9(Lorg/freertr/pipe/pipeSide;Lorg/freertr/user/userLine;)Vorg/freertr/pipe/pipeSetting  ! "#java/lang/IntegervalueOf(I)Ljava/lang/Integer; % &' settingsPut(ILjava/lang/Object;)V)org/freertr/user/userExec (+ ,9(Lorg/freertr/pipe/pipeSide;Lorg/freertr/user/userRead;)V (. / privileged1write (3 4| repairCommand (6 78executeCommand6(Ljava/lang/String;)Lorg/freertr/user/userExec$cmdRes;+~ ; <= upgradeFilesJ(Lorg/freertr/user/userUpgradeBlob;Ljava/lang/String;Ljava/lang/String;I)Z ? @A upgradeFileK(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I C DE upgradeScriptLorg/freertr/cfg/cfgScrpt;Grunning upgrade script IJK Lorg/freertr/cfg/cfgScrptdoRoundN!successfully finished, rebooting!Pupgrade finished,~-~ T U upgradeBackup W XdoVerifyZfailed to write version info!\successfully finished!^upgrade finished! ` a flagcnothing done in this round e fgaddAll(Ljava/util/Collection;)Zino script for this roundkorg/freertr/pipe/pipeLine jn o(IZ)V jq rsgetSide()Lorg/freertr/pipe/pipeSide; v wxsetTime(I)V ?z {CmodeCRLF } ~ClineTx ? C modeCRorLF  ClineRxorg/freertr/user/userScript  0(Lorg/freertr/pipe/pipeSide;Ljava/lang/String;)V   allowExec   allowConfig.~  $addLine  addLines  McmdAll j setClose I httpGet/~0~   pemReadStr(Ljava/lang/String;Z)Z1~2~3~doit n equals4~5~6~7~8~checksum mismatch, aborting!failed to rename!checksum mismatch after rename!.ver.bak.tmp  xjustSimu ConstantValue(Lorg/freertr/util/cmds;)VCodeLineNumberTable StackMapTable calcTextHash$(Ljava/util/List;)Ljava/lang/String; Signature8(Ljava/util/List;)Ljava/lang/String; doRelease doMakeKey doVerCore doSimulatedoBackup startReverter cleanBackups8(Ljava/lang/String;)Ljava/util/List;[Ljava/io/File;9(Ljava/util/List;Ljava/lang/String;)ItoggleBootMode stopReverter doAutoRevert SourceFileuserUpgrade.javaBootstrapMethods-  not found  written!generating  bits keyresulted in  bits, error= sequence 10 puts "" sequence 20 puts "";"";$ public final static int year = % public final static int month = # public final static int day = * public final static String pubKeyC = * public final static String pubKeyO = .org/freertr/util/version.java patched  times! server:  archive:  version: version info parser:  release:  files:  time:  sign:  keyhash:   is missing!got  as directory % cleanup  % remained  removed %  removed,  remainedunknown upgrade status  rev"upg$old release: &new release: ( old time: * new time: ,diff: . old files:0 new files:2 extra files:4excess files:6upgrading to 8should remove : removing < set path "">got empty  key!@got too small  key!Berror reading public  key!Derror reading private  key!F(error verifying private to public  key!Hskipping  since up to date!J!skipping  since just simulating!L backing up N downloading P upgrading R STU <V$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; InnerClassesmodTypZ org/freertr/user/userExec$cmdRescmdRes]%java/lang/invoke/MethodHandles$Lookup_java/lang/invoke/MethodHandlesLookup! PQ FQ Q  @ I!***+ *Y* D= EF G {|E Y*"L%Y'M,(,+-,3N7Y9M,(,+--,3:. P QRSTV$W,X0Y8Z:\ )n B%Y'L+(+*>D+3M7Y9L+(+*>D,+3:* fg hikl&m*n5o7q)n M$ HNRz M& YS"V** Y\^L+ * bdgYiM,j* YN-m@* Ys6-y:* -}d,Y-W,+,W* dN$(08;GMR_ux} gn#nc* Ys<* dYM,W* ,,d* ,* ,"  &:Nb** Y\^L+ * bd** Y^M, * dB!dp:!ʺ:!ʺ:+:,: и:  * ֶd6 6     n:  ߶  W    W f   W E   W $    W  > и*  d.*.78<N]lx'8;>HY\_epqF a nnnnn:n  X-=* d* Sd* d+=N- * dgYiL+-:* d* +d* + d* + d* +d* +d*S+`=>+1+:*!R$`=* 'd)+ * .dr /3:>GOW\jm}      !+G%a: Y=>+I+: Y!R"0* !3d& "#$ %:&=(N)Q#W+8I* +4+yN-* 7-,9* <* >* / 012!3#5+687:9G: #n, *@*ABC D V SK*DR*G M+LMNOQn=SL*++DROSVXYZ .YY[Y]^a `a C*dKgYiL+*jW*m +*kW++okW+SkW+kW+* jk lm!n'o)q1r9sAt)mn  +qs= +`vL*+zW+{N-*WgYi:=-\-2:FV:s6-mv:6 W666=T :+VR:  6  * W* W*W'yz {}"~'+57@HMUX_inq N !  nn n? n ML @ M_<=@!(K+K$KW*< K<***J $(+/26>EGJQSWY]$n kKRL+N*W+ Y*"=*WN--Ҹԙ ׸B%*;@DHLSTZ`aj Tn C^L+*+VW*<* YM** Ys@*,ۧN-*WCHKB  "'/CHKLPU]0n2*~ @$ +mL*VM+RN-N,W* - Y,"W,:,W*鱻gYi:gYi:W:***** * *em**:*:* * * * **W*Y* : * $(Y*  *:  - 02:   5W9*+,: *@*S+R,>6  DB*FBH :  *M6 6  O **+,:*:6   :  !R:*@*QV@*RVWS#DR:*RVW v*V **@ *Y*[]w~e  %29>RX]blmv !$%&'()&*8+?,I-[.b/l0~1234789:;?@ABCDEF&H3I?JHKINaOgPmQwS~VTUXYZ[]^`abefgjklmnop(q+s9t?uEvHxTybzhln|w}~` `nDggng*Y"7 nnggng I <= 66+u+:_~Q*$!R,!R->6_~6**bgYi:6+Y+:_~5_~'!R:    dW*h*@*FjYlm:pWp:tuy|Y:      W0$/2V\mpu~(*4AGNV^ftz7+7@ +   `a +N-* ,d-* ,dY:-n* ,d-n* ,d* ,dJ "/1:MZ\o|~*!@A,y::+*,V*@*,VS*,V,,DROW*,V-:W*  Y"W*,V+y**  W,G*+,y**z &(2?AGTcpv|    n!b J"NDY$) .35X9QQQQQQQQQQQQQQQQQQQQQQ Q Q QQQQQQQQQQ!Q#Q%Q'Q)Q+Q-Q/Q1Q3Q5Q7Q9Q;Q=Q?QAQCQEQGQIQKQMQOW?X@Y([@\^`