7  java/lang/Object()Vjava/util/ArrayList   org/freertr/user/userTesterOneshowsLjava/util/List;org/freertr/tab/tabGen   procsLorg/freertr/tab/tabGen;unnamed  testNameLjava/lang/String;   testResI"c $ %window'org/freertr/util/cmds) &+ ,'(Ljava/lang/String;Ljava/lang/String;)V . /0cmdLorg/freertr/util/cmds;2init 4 5stage 7 8 lineN :.;org/freertr/user/userTester &= >?pipeLorg/freertr/pipe/pipeSide; :A B parallel DEF GHorg/freertr/pipe/pipeDiscardneedAny8(Lorg/freertr/pipe/pipeSide;)Lorg/freertr/pipe/pipeSide;Jorg/freertr/pipe/pipeProgress IL M(Lorg/freertr/pipe/pipeSide;)V O PQrdrLorg/freertr/pipe/pipeProgress; = :T Utemp W Xpath Z [prefix :] ^ slot ] :a bcconfigZ a :f gcunexit f :j kcwait j :n o reapply n :r s restart r :v wcfgarch v :z {runner z :~ chattyLorg/freertr/tab/tabIntMatcher; ~ : predelay :  postdelay : jvn : jvp makeConcatWithConstants8(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; jvm : oobase : others : remoteD : remoteALorg/freertr/addr/addrIP; : remoteL : remoteP : remoteS : persistP : persistD : persistC Lorg/freertr/user/userTesterPrc; : capture : %c &(Ljava/lang/String;)Ljava/lang/String;failed:  qc pass: &  getOriginal()Ljava/lang/String; 9(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; fileName getRes n(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; lineD  java/util/Listsize()I get(I)Ljava/lang/Object;java/lang/String   (I)Ljava/lang/Comparable;org/freertr/user/userTesterPrc stopNow  getLogName(I)Ljava/lang/String;  org/freertr/util/bitstxt2buf$(Ljava/lang/String;)Ljava/util/List;  buf2txt&(ZLjava/util/List;Ljava/lang/String;)Z    org/freertr/user/userFlashdelete(Ljava/lang/String;)Z    checkLogs(Ljava/util/List;)Z   tracesgenerating mdfile I debugRes(Ljava/lang/String;)V  add(Ljava/lang/Object;)Z## **Topology diagram**!## **Configuration** # $name'```) *9(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; , -.addAll(Ljava/util/Collection;)Z0## **Verification**2java/util/Collection 5 6 readConns 8 9conns;org/freertr/user/userTesterCon : :> ? remP :A B locP D EFfind.(Ljava/lang/Comparable;)Ljava/lang/Comparable; H IFdel :K LperP :N OPperC Lorg/freertr/user/userTesterCon;Rorg/freertr/spf/spfCalcTsfdp -Tpng > net.png << EOFV graph net {Xinode [fontname=ubuntu,shape=none,labelloc=b,image="../misc/router.svg"] edge [fontname=ubuntu,shape=none] :[ \ifc ^ _\(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;a}cEOF f gequalsisuccessknot applicablemrun o pgetLin r sdoLine u i x yzdoChattyB(Lorg/freertr/user/userTesterPrc;Lorg/freertr/tab/tabIntMatcher;)Z|$ ~ indexOf(Ljava/lang/String;)I  length   substring(II)Ljava/lang/String;rem    startsWith  str2num  :(Ljava/lang/String;IILjava/lang/String;)Ljava/lang/String;  valueOf&(Ljava/lang/Object;)Ljava/lang/String; ^(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)Ljava/lang/String;perbp))   toLowerCaseexecuteswcommandjava.net.serversocket.bindjava.net.bindexception exception tracebackterminal table raw  putLine  doSync;   getSummary'(Ljava/lang/String;Ljava/lang/String;)I  org/freertr/tab/tabIntMatchermatches(I)Z & word!commentcomments description &  getRemainingexitoutputshow: config: addpersist '(ILjava/lang/String;)Ljava/lang/String; I  debugStat   repairHwCfg)  F  str2lst  applyCfg(Ljava/util/List;)V addremote '(Ljava/lang/String;I)Ljava/lang/String;  Y(Lorg/freertr/pipe/pipeProgress;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V  syncraddother controllerfeatureorg/freertr/user/userTesterImg ftr   otherP  nothave  random(II)Ihworg/freertr/addr/addrMac     fromString  ! "java/lang/Integer(I)Ljava/lang/Integer; % &otherC1 ( )* convert2udpi(Ljava/lang/String;Ljava/lang/String;ILjava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/lang/String; ,-. /0org/freertr/pipe/pipeShellexec9(Ljava/lang/String;Ljava/lang/String;ZZZ)Ljava/util/List; 2 3otherC2 5 6otherC3 = :;< =>org/freertr/pipe/pipeSidesetTime(I)V @ AotherS C DotherW IF GHsetMax(J)V J KgetLine IM NHsetCurr P Qtrim S  U V>putChar X YotherD[ addrouter ] ^>sleep`lnbextradnoextrafwritehnowritejswcfglnoswcfgnfancypnofancyrtstamptnotstampvtelnetxnotelnetzsource|nosource~extcfgnoextcfgreplaceorg/freertr/user/userTesterRep + noreplace  clear nodelete )   J(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;  :(Ljava/lang/String;ILjava/lang/String;I)Ljava/lang/String;!logging milliseconds"vrf definition tester exitserver telnet tester security protocol telnet vrf tester exec colorize header exec monitor  src  trg   replaceAll  set'(ILjava/lang/Object;)Ljava/lang/Object;  org/freertr/user/userFilter text2section"(Ljava/util/List;)Ljava/util/List;   getSection7(Ljava/util/List;Ljava/lang/String;ZZZ)Ljava/util/List;   section2text#(Ljava/util/List;Z)Ljava/util/List;%fn%%rn%s# o(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;$  (ILjava/lang/Object;)V java/io/File    exists()Z reload force  waitForterminal no monitorterminal length 0org/freertr/user/userTesterCap  rtr [% ](Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;terminal table fancyterminal timestamps reload in 10yconfigure reapply5^  getPrc4(Ljava/lang/String;)Lorg/freertr/user/userTesterPrc;&syncsendpcap'char read  ping(  pingTest$(Lorg/freertr/user/userTesterPrc;Z)Zmpingtpingdping size 1111 repeat 1111org/freertr/addr/addrIP   ! " isMulticast)*&90-100 ( )* morePings5(Ljava/lang/String;Lorg/freertr/tab/tabIntMatcher;I)Z +- .((ILjava/lang/String;I)Ljava/lang/String;, 1 2 getOutput Signature2Ljava/util/List;$Ljava/util/List;2Ljava/util/List;6Ljava/util/List;>;:Lorg/freertr/tab/tabGen;!(Lorg/freertr/user/userTester;I)VCodeLineNumberTable StackMapTablegetSuccgetFetgetCsvgetHtmstopAllsaveMddoTest'(Ljava/util/List;)Z SourceFileuserTester.javaBootstrapMethodsIKwM#--O;;;Q8S # Example: U![topology](/img/.png)W**:**Y -sw.txt[.md]//_0  --  [weight=10] [taillabel=] [headlabel=]a.dotc127.0.0.1  127.0.0.1 e    gi 127.0.0.1 ktest: m/: configuring processo -hw.txtq telnet  s!u w - y  {found  images for features }test hwcfg tcp2vrf  hwid tester-slotrwpath save -statetcp2vrf  tester 23port    -  - : hostname logging file debug  router - hw.txt packet capture  -.pcapcmd:packet capture 100 1   delay 11cmd:$/: test failed: too much traffic /: output .  $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; InnerClasses%java/lang/invoke/MethodHandles$Lookupjava/lang/invoke/MethodHandlesLookup &>?PQ^ X[bcgckco s w{   34 3535 363738 % /05358 9:+S**Y *Y***!#*&Y((*-*13*6+9ER<Z ::=:0 *;< @>:N* LL+*; <  :J!**3**3*-κ;  < ?:/+****;@:/+****;p:l6**Y6`6*6*߹**6;'( *+#,%.< A:a<*V*M,,N-,W,W*- -,W*Y`;2 5 678&91::;B<E>P?Z5`A<BB:  *NY L+*W+(W+W+(W+*պW+(W+ W=*]*N+(W+-"%W+&W+*Y*_-"(+W+&W* +(W+/W=* :+(W+&W+* 1+W+&W+*V*պ3WY L=**4=**N6-7-7:::Y<::Y<:=@@@6*g*: - J 7C::   7C::   7 GW J M J*+SW+UW+WW=*x*N+-"YW6-7G-7::J(+-"J"ZMZ]W+`W+bW+*V*պdW;"HG HI"J+K5L>MNNWOaPnQzRSTUVPXYZ\]^ _`'\-b@cHdUecdigvhijklmnopqrtuvxy{!|(}/~2o8i>gDNXbo{ <cdCB  :::"": )$:$:s3=*"*N+-"e-*; $&,1< #i:@**h3*&Y((*-; :@**j3*&Y((*-; C,:**,*+,*l3**nM,*&Y(,*-*q**t*v3>* ***w*t;V '(-14BIPTU\i<  !:[+{}=M+`+N+L-{}=-`-:-N-\--=*%*_dh`h`=+``L*`=+**Lb-R--=*%*_dh`h`=+``L"h*`=+`L --dh=*_dh``=--d-N-e-e+L +L+;$ "*7>HU\l{~ (25?LVY< n"?:  :f+=+U+N-}-}(-}-}-};B   *,69CFPR\^d!<# 3Dyz:g++++>** ;,- ./!0#2)3<#s:Z*-L++ɶ+˶e+Ͷe*nL++ɶe+϶e**-ѵ*N*+նe*h*t+׶eMNY :*nL+}+ɶep+,++,+L* +1+W+-,+-+L*Y*_+(+W+W}*-ѸW+ݶe**t*-MY N*N*_,*nL+!+ɶe*+L-+W-*Y*_,W*,"**W(*WY N*nL++ɶe-+W-*Y*_,(W***-+e**t*-MY N*nL+!+ɶe*+L-+W**L-+W-*Y*_,WY*N*Y*_,*|+:**W(WY N*nL++ɶe-+W-*Y*_,(W*-+eH**tMNu1*_dh`*`6*-:(:*-L+v+eVY*N*Y*_*-M,*,CM*-N-*-ƺN-*-ƺN+e*-:Y :6*o*: *&Y*-6 *-L+!   + }6    W*N*:Y : *nL+"+ɶe*+L +WػY : Y : Y : 6     :*&Y*-*-:*-:*-:Y:*-ƶW W*-W *-ƸW*-W *-ƸW ^,,-#,*|$*Y*_   '+W*|1*Y*_   '+W4*Y*_   'L +W *Y*_WY*N*Y*_*|+:  789 ?* W( WY : *nL++ɶe +W *Y*_(WBB6*NE67 I:*NLO:BR   T W  +Ze* *\*-M>66666: : Y : Y : *-L+6*nL++ɶe*&Y_+*-+ae 6+ce 6+ee>+ge>+ie 6r+ke 6b+me 6R+oe 6B+qe 62+se 6"+ue 6+we 6+ye*-: +{e : +}e*-: +e : +e)*-LY+*-Ʒ:   W+e  r+eD*-L*&Y_(*- *-LY+(:   W'+e Y : *nL+"+ɶe*+L +W *_W *YW *Y*_,W **_dh`*`W*_dh`626*h`6 ```W *Y*_,WY :  (W (W (W *,*W *Y*_,WY :  ,W W *Y*_,W[ W W W W W W W W*nL++ɶe +W )*x : *  +W6 S :6 0 L+L +Wʄ D :6 & ::: 66 ' L*+L +W*L+*նL+,L(: :+*#*Y*_,L + L +  *Y*_,(WY ׶ٚ   WY*N*Y*_,*|+:(WJ6*t>eݶ߻Y*N*Y*_,*|+:*W6*ĹE*:,e *Y*_,   e*l6*p*d ݶ* *\+e**-ѵ3+e*-Ƹ==\*+M,*-κ,W*-L+e,+e,*-Ѷ+e,*-Ѻ+e,*-ƸT+ e,IL++*-Ѷ}+veY N-*-ƶ W*,-wW+ e$*&Y(*-Ѻ*-*,W+e *,W+e *,W+e *-N*-:**-ƶ:*-::Y:*-ƶW #:$W,,,-6 6  vY :  % W ',,-6   *  d6  6  +*N*_," , * +׶e=*-L*N*_,"+/,+0N- ** -W*;:;<>?A&B'D1F6G:H=JGKJNKPUQ`RpSqU{VWYZ\]^_abcefhijkmnopr)t7u8wBxIyMzN|V}^~otx{&'18<=EMRVYcflw  ,5;<FSWXZ\qz~ .>AIQTrwz   $ 2 B KT]fs} 5We {!"#$%&()*,-/1235$6%8*94:>;E<O=T>U@\AiBl:rEyFGHJKLNOPQRSTUVWXZ[\]_`acdfgi!j$k'm1n4o7qArCsFuPvRwUy_zb{e}o~ru      ! + 3 D N Q [ b e o t |                   0 Q ^ b q            - 2 = H S ^ i t                    "  - 3 9  C  J  Y g v  |                  !  " 3 $ B % K ( k ) { *  + , - . / + 2 3 4 5 6 7 8 :- 53 <8 =@ ?E @M BQ CY E` Fh Gp I| J I L M O P R T U V X Y Z [ ] ^ ` a b d e f g h j$ k/ l0 n: oJ pK rU sc td vn xs yw zx | }                    ' , - 6 ; D Q Y b y                       " 7 = A G H S T Y <9 % /0   A ' | #% \ 0V   $     0   /)   8./'#*6C,    / %*-4-,   7 :PY N-*-ƶ W*-Ƹ6+*--'W+*--'*;*   $ 3 5 F H N < 5EFG-HJLNPRTVXZ\^`bdfhjlnprtvxz|~